HandlerSocket是日本人akira higuchi 写的一个MySql的插件。通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。按照作者给出的数据可以在数据全部在内存的情况下可以达到75W的QPS查询。总之,它对mysql数据库的操作比mysql本身的操作语句快很多。

  适用场景:

  Innodb引擎、按主键、unique key或索引搜索(也就是说它的SQL的where条件必须是这些);支持limit 语句、IN、INSERT/UPDATE/DELETE。

  1.没有主键、unique key或索引搜索不行!

  2.表必须是Innodb引擎


安装HandlerSocket

mysql需要5.1或者以后版本。

1.下载

http://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL

获取 ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-71-g159ea6d.tar.gz

上传到LINUX目录/usr/local/src/ 下

mysql 5.15.1之后的版本只能用hangdlersocket1.1.1之后的版本 否则make时会报错。

1.1.1版本下载地址:

https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL/releases

2.安装

cd /usr/local/src/
tar zvfx ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-71-g159ea6d.tar.gz
cd ahiguti-HandlerSocket-Plugin-for-MySQL-159ea6d/./autogen.sh
./configure --with-mysql-source=/usr/local/src/mysql-5.1.47 --with-mysql-bindir=/usr/local/app/mysql/bin/ --with-mysql-plugindir=/usr/local/app/mysql/lib/mysql/plugin/ --prefix=/usr/local/app/mysql

注:plugindir的对应目录一定要提前创建好  plugin目录 或者找到mysql自带的plugin目录 总之就是要路径对应起来  否则会报错误

libtool: link: only absolute run-paths are allowed

其中

--with-mysql-source    MYSQL源码目录

--with-mysql-binddir    MYSQL安装后的BIN目录

--with-mysql-plugindir MYSQL安装后PLUGIN的目录

(***************小插曲************************

笔者在configure的时候遇到的问题:

checking mysql source... yes: Using /usr/local/src/mysql-5.1.47, version 5.1.47
checking for mysql_config... /usr/bin/mysql_config
checking mysql binary... yes: Using /usr/bin/mysql_config, version 5.0.77
configure: error: MySQL source version does not match MySQL binary version

是默认的/usr/bin/mysql_config与mysql-5.1.47源码版本不一样,所以做一下补充:

cp /usr/local/app/mysql/bin/mysql_config /usr/bin/mysql_config

************************************************************)

编译安装:

make
make install

添加配置

vi /etc/my.cnf

增加如下选项:

[mysqld]

plugin-load=handlersocket.so

loose_handlersocket_port = 9998

# the port number to bind to (forread 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 concurrent    
# connections, make open_files_limit as large as    
# possible.

然后使用root登录MYSQL

mysql -u root -h localhost -p 

在MYSQL控制台中执行命令

mysql> install plugin handlersocket soname 'handlersocket.so';

如果执行成功,可以看到9998 9999 端口已经启动

# netstat -ln

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:997                 0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:9998                0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:9999                0.0.0.0:*                   LISTEN       
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
udp        0      0 0.0.0.0:50187               0.0.0.0:*                               
udp        0      0 0.0.0.0:991                 0.0.0.0:*                               
udp        0      0 0.0.0.0:994                 0.0.0.0:*                               
udp        0      0 0.0.0.0:5353                0.0.0.0:*                               
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               
udp        0      0 :::43696                    :::*                                    
udp        0      0 :::5353                     :::*

安装完毕。不需要修改mysql的源代码。

除了在mysql端安装handlersocket插件之外 还要在执行端安装模块

其中Net::HandlerSocket模块存放于HandlerSocket的分发tar包的perl-Net-HandlerSocket目录中,编译安装方式如下:

Shell代码 
  1. cd perl-Net-HandlerSocket/
  2. perl Makefile.PL
  3. make
  4. make install

卸载

UNINSTALL PLUGIN

在mysql界面

mysql> uninstall plugin handlersocket

即可


常见错误:

libtool: link: only absolute run-paths are allowed

1.1.1之前的版本跟mysql5.15.1以后的mysql版本make时 路径是不对应的 这里首先要保证使用的是1.1.1版本的handlersocket

1.1.1 下载地址:https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL/releases

如果已经用的1.1.1还是报这个错误  那么要检查配置./configure 时的pulgin路径--with-mysql-plugindir=/usr/local/mysql/lib/plugin/  看看该目录下是否真的有plugin目录 没有的话要创建一个 或者找到对应的自带的plugin目录

HandlerSocket简介及安装及卸载相关推荐

  1. jdk的安装、卸载与简介

    jdk的安装.卸载与简介 1. 简介 JDK(java development kit)是Sun官方的开发和运行环境,其中运行环境又被称为JRE(java runtime enviroment).开发 ...

  2. RabbitMQ简介及其安装

    一.简介 RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件). RabbitMQ服务器是用Erlang语言编写的. 二.工作过程 发布者(Publisher ...

  3. Python之pip:Python语言中的pip的简介、安装、使用方法之详细攻略

    Python之pip:Python语言中的pip的简介.入门.使用方法之详细攻略 目录 pip的简介 pip的安装 1.Linux之Ubuntu系统安装pip3 pip的使用方法 1.pip命令集合 ...

  4. NPM:nodejs官方包管理工具的简介、安装、使用方法之详细攻略

    NPM:nodejs官方包管理工具的简介.安装.使用方法之详细攻略 目录 NPM之nodejs官方包管理工具的简介 NPM之nodejs官方包管理工具的安装 NPM之nodejs官方包管理工具的使用方 ...

  5. Linux之apt-get:apt-get的简介、安装、使用方法之详细攻略

    Linux之apt-get:apt-get的简介.安装.使用方法之详细攻略 目录 apt-get的简介 apt-get的安装 apt-get的使用方法 apt-get的简介 apt-get,是一条li ...

  6. TensorFlow:深度学习框架TensorFlow TensorFlow_GPU的简介、安装、测试之详细攻略

    TensorFlow:深度学习框架TensorFlow & TensorFlow_GPU的简介.安装.测试之详细攻略 目录 TensorFlow的简介 TensorFlow的安装 1.tens ...

  7. CentOS 初体验三: Yum 安装、卸载软件

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78894974 本文出自[赵彦军的博客] 一:Yum 简介 Yum(全称为 Yell ...

  8. ubuntu下命令安装与卸载软件方法

    2019独角兽企业重金招聘Python工程师标准>>> 刚 刚接触ubuntu就开始一直在安装语言包.升级.常用软件和其它相关依赖等等东西,总的来说,是一个劲儿的装,缺全然不知怎么卸 ...

  9. Docker Compose 简介、安装、初步体验

    [Docker那些事]系列文章 docker 安装 与 卸载 centos Dockerfile 文件结构.docker镜像构建过程详细介绍 Dockerfile文件中CMD指令与ENTRYPOINT ...

  10. [运维笔记] PowerShell (模块).模块的查找、安装、卸载、更新、保存、发布

    [运维笔记] PowerShell (库/模块).库的查找.安装.卸载.更新.保存.发布 作者主页:jcLee95:https://blog.csdn.net/qq_28550263?spm=3001 ...

最新文章

  1. n皇后问题JS实现(N-Queens)
  2. spring-注入对象list
  3. Android中minSdkVersion、targetSdkVersion、maxSdkVersion的作用
  4. Hibernate出现org.hibernate.MappingException: Unknown entity: com.gxuwz.hiberbate.entity.User的解决办法
  5. VS2010中如何实现自定义MFC控件
  6. linux查询cpu核心数
  7. pidgin-lwqq
  8. 编写代码模拟三次密码输入的场景。
  9. dex2jar 和 jd-gui 的安装与使用
  10. win7设置计算机共享的打印机共享的打印机共享,win7,xp打印机共享设置软件 一键共享...
  11. HTML5 Metadata content(文档元数据)
  12. 身份证实名认证API接口,选择的时候应该注意什么?
  13. SAP资产负债表实现方案探索 - 基于 Excel-DNA 自定义函数方法
  14. poscms-说明文档
  15. SpringBoot项目启动异常:Field settlementMissService in...Service required a single bean, but 2 were found:
  16. 蓝桥杯真题(路径)C语言
  17. 大家都在用的视频音频提取器,免费用!
  18. 联通服务器维护破解限速,网速1mbps(联通限速1mbps解除方法)
  19. k8s对node添加Label
  20. 如何做好成本管理???

热门文章

  1. C语言顺序表的12个基本操作(增删改查等)
  2. OpenCV 单目摄像头(python版)
  3. Web后端开发入门(1)
  4. 高斯整数matlab,Matlab---自适应高斯核
  5. hashmap java 排序_Java 对HashMap进行排序的三种常见方法
  6. 北斗文档下载工具-百度文库文档每天免费2次机会下载
  7. php获取qq音乐的api类,QQ音乐api接口梳理
  8. vim 自动格式化代码快捷键
  9. GD32与STM32区别
  10. 【uart篇】synopsys uart vip配置使用