• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

MYSQLHandlerSocket插件(四)安装与使用_MySQL

mysql 搞代码 4年前 (2022-01-09) 25次浏览 已收录 0个评论

一、安装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/pluginvi /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 = <p style="color:transparent">本文来源gao!%daima.com搞$代*!码网1</p>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#mysqlmysql>show plugins;| handlersocket | ACTIVE | DAEMON | handlersocket.so | BSD |# netstat -an | grep 9998tcp 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.iniextension=handlersocket.so#php -mhandlersocket

三、测试

-- 用户表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性能有提高,优势不明显


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:MYSQLHandlerSocket插件(四)安装与使用_MySQL
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址