MYSQL Handler Socket插件(四)安装与使用
2014-11-24 15:09
316 查看
一、安装HandlerSocket-Plugin-for-MySQL
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
#cd HandlerSocket-Plugin-for-MySQL
#sh ./autogen.sh
#./configure --with-mysql-source=/home/jfy/soft/Percona-Server-5.5.18-rel23.0 --with-mysql-bindir=/usr/local/mysql/bin --with-mysql-plugindir=/usr/local/mysql/lib/plugin
vi /etc/my.cnf
[mysqld]
plugin-load=handlersocket.so(plugin-load可略过不配)
loose_handlersocket_port = 9998 # 指定读请求端口号
# the port number to bind to (for read requests)
loose_handlersocket_port_wr = 9999 # 指定写请求端口号
# the port number to bind to (for write requests)
loose_handlersocket_threads = 16 # 指定读线程数目
# the number of worker threads (for read requests)
loose_handlersocket_threads_wr = 1 # 指定写线程数目
# the number of worker threads (for write requests)
open_files_limit = 65535
# to allow handlersocket accept many concurren connections, make open_files_limit as large as possible.
handlersocket_timeout = 3600
# 保持连接空间时间,默认一个连接空闲5分钟就会被释放
#mysql.server restart
#mysql
mysql>show plugins;
| handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD |
# netstat -an | grep 9998
tcp 0 0 0.0.0.0:9998 0.0.0.0:* LISTEN
二、安装php-ext-handlersocketi
https://github.com/piteer1/php-handlersocket
#cd php-handlersocket-master
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make & make install
#vi /usr/local/php/lib/php.ini
extension=handlersocket.so
#php -m
handlersocket
三、测试
-- 用户表
drop table IF EXISTS user;
create table user (
userid char(8) binary PRIMARY key,
username varchar(32) comment '用户昵称',
feature char(16) comment '功能',
siminfo char(15) comment 'SIM信息IMSI',
msisdn char(13) comment '用户手机号码',
countyrcode char(3) comment '国家码',
zgtflag char(1) comment '中港通标志YN',
usertype char(16) comment '用户类型',
operatorid char(32) comment '操作工号',
createtime TIMESTAMP comment '创建时间',
PRIMARY KEY (msisdn),
unique index useridx(userid)
);
-- 用户帐户表
drop table IF EXISTS useracnt;
create table useracnt (
userid char(8) binary PRIMARY key ,
activetime TIMESTAMP comment '激活时间',
amount INT UNSIGNED comment '帐户金额(分)',
validdate date comment '有效期',
status char(1) comment '帐户状态',
nextkfdate date comment '下次扣费时间'
);
12核CPU,Percona MySQL 5.5.18,InnoDB_buffer_size=16G,read/wrige thread各16
经测试,使用handlersocket比直接用sql大概只能提高0.5倍左右,测试数据均在innodb buffer中
以前MySQL5.1时,HandlerSocket性能会有很大优势,MySQL5.5性能有提高,优势不明显
关于handlersocket协议可以参考这里:
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/blob/master/docs-en/protocol.en.txt
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
#cd HandlerSocket-Plugin-for-MySQL
#sh ./autogen.sh
#./configure --with-mysql-source=/home/jfy/soft/Percona-Server-5.5.18-rel23.0 --with-mysql-bindir=/usr/local/mysql/bin --with-mysql-plugindir=/usr/local/mysql/lib/plugin
vi /etc/my.cnf
[mysqld]
plugin-load=handlersocket.so(plugin-load可略过不配)
loose_handlersocket_port = 9998 # 指定读请求端口号
# the port number to bind to (for read requests)
loose_handlersocket_port_wr = 9999 # 指定写请求端口号
# the port number to bind to (for write requests)
loose_handlersocket_threads = 16 # 指定读线程数目
# the number of worker threads (for read requests)
loose_handlersocket_threads_wr = 1 # 指定写线程数目
# the number of worker threads (for write requests)
open_files_limit = 65535
# to allow handlersocket accept many concurren connections, make open_files_limit as large as possible.
handlersocket_timeout = 3600
# 保持连接空间时间,默认一个连接空闲5分钟就会被释放
#mysql.server restart
#mysql
mysql>show plugins;
| handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD |
# netstat -an | grep 9998
tcp 0 0 0.0.0.0:9998 0.0.0.0:* LISTEN
二、安装php-ext-handlersocketi
https://github.com/piteer1/php-handlersocket
#cd php-handlersocket-master
#/usr/local/php/bin/phpize
#./configure --with-php-config=/usr/local/php/bin/php-config
#make & make install
#vi /usr/local/php/lib/php.ini
extension=handlersocket.so
#php -m
handlersocket
三、测试
-- 用户表
drop table IF EXISTS user;
create table user (
userid char(8) binary PRIMARY key,
username varchar(32) comment '用户昵称',
feature char(16) comment '功能',
siminfo char(15) comment 'SIM信息IMSI',
msisdn char(13) comment '用户手机号码',
countyrcode char(3) comment '国家码',
zgtflag char(1) comment '中港通标志YN',
usertype char(16) comment '用户类型',
operatorid char(32) comment '操作工号',
createtime TIMESTAMP comment '创建时间',
PRIMARY KEY (msisdn),
unique index useridx(userid)
);
-- 用户帐户表
drop table IF EXISTS useracnt;
create table useracnt (
userid char(8) binary PRIMARY key ,
activetime TIMESTAMP comment '激活时间',
amount INT UNSIGNED comment '帐户金额(分)',
validdate date comment '有效期',
status char(1) comment '帐户状态',
nextkfdate date comment '下次扣费时间'
);
<?php $host = 'localhost'; $port = 9998; $port_wr = 9999; $dbname = 'voip'; $table1 = 'user'; $table2 = 'useracnt'; try { $hs_read = new HandlerSocket($host, $port); $idx_user_r = $hs_read->createIndex(1, $dbname, $table1, 'PRIMARY', array('userid','zgtflag')); $hs_write = new HandlerSocket($host, $port_wr); $idx_useracnt_w = $hs_write->createIndex(2, $dbname, $table2, 'PRIMARY', 'amount'); } catch (HandlerSocketException $exception) { var_dump($exception->getMessage()); die(); } //GET $retval = $idx_user_r->find('85265101177'); list($userid,$zgtflag) = $retval[0]; echo $userid . "\n"; echo $zgtflag . "\n"; //UPDATE $amount=round(0.95*100); $ret = $idx_useracnt_w->update($userid, array('-?' => $amount)); var_dump($ret); if ( $ret === false) { echo __LINE__, ':', $index->getError(), ':', PHP_EOL; die(); } if ( !is_array($ret) ) { echo "update not found!\n"; die(); } if ( intval($ret[0][0]) < $amount ) { echo "balance is not enough!\n"; die(); } echo "update ok!\n"; unset($index); unset($hs); exit;
12核CPU,Percona MySQL 5.5.18,InnoDB_buffer_size=16G,read/wrige thread各16
经测试,使用handlersocket比直接用sql大概只能提高0.5倍左右,测试数据均在innodb buffer中
以前MySQL5.1时,HandlerSocket性能会有很大优势,MySQL5.5性能有提高,优势不明显
关于handlersocket协议可以参考这里:
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/blob/master/docs-en/protocol.en.txt
相关文章推荐
- Mysql插件之HandlerSocket的安装、配置、使用
- centos 6.2 为mysql5.6.10安装 HandlerSocket插件
- MySQL HandlerSocket插件安装配置教程
- NoSQL for MySQL [HandlerSocket] 之安装与使用
- NoSQL for MySQL [HandlerSocket] 之安装与使用
- Mysql的HandlerSocket插件
- 安装handlersocket插件
- MySql5.6使用validate password 插件加强密码强度的安装及使用方法
- HandlerSocket系列(MySQL的NoSQL插件HandlerSocket)
- MYSQL Handler Socket插件(一)原理
- MySql5.6使用validate password 插件加强密码强度的安装及使用方法
- MYSQL Handler Socket插件(三)优势和缺陷阐述
- (三) MySQL 全文索引(mysqlcft)支持中文的插件安装使用
- MySQL中文索引插件mysqlcft安装及使用
- MySQL审计插件安装使用说明文档
- [转] HandlerSocket系列(MySQL的NoSQL插件HandlerSocket)
- MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档
- MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档[原创]
- MySQL中文索引插件mysqlcft安装及使用
- nodejs 安装mysql、socket.io 插件