工作原理
mysql的一個Plugin,集成在mysqld進程中.直接跳過了SQL的解析層,直接訪問MySQL存儲層.另外,HandlerSocket采用epoll和worker-thread/thread-pooling網(wǎng)絡架構,性能更高.
HandlerSocket 安裝和配置
- mariadb部分
- 之后已經(jīng)加入了這個插件,如果需要安裝只需要運行
install plugin handlersocket sonamee 'ahndlersocket.so'
- 配置my.cnf
[mysqld]
handlersocket_address="127.0.0.1"
handlersocket_port="9998"
handlersocket_port_wr="9999"
innodb_buffer_pool_size = 1G
然后重新運行就可以了.
- php部分:
使用composer的話
php composer.phar require tz-lom/hsphp --no-update
也就可以使用了
基本使用方法
https://github.com/tz-lom/HSPHP
//select
$c = new \HSPHP\ReadSocket();
$c->connect();$id = $c->getIndexId('data_base_name', 'table_name', '', 'id,name,some,thing,more');
$c->select($id, '=', array(42)); // SELECT WITH PRIMARY KEY
$response = $c->readResponse();
//update
$id = $c->getIndexId('data_base_name','table_name','','k,v');
$c->update($id,'=',array(100500),array(100500,42)); // Update row(k,v) with id 100500 to k = 100500, v = 42
$response = $c->readResponse(); // Has 1 if OK
性能測試
這個我沒做,大概是4-5倍左右吧