HandlerSocket简介及安装及卸载

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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.gzcd 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

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

 

编译安装:

makemake 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目录 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172627.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Django组件_tuxedo中间件

    Django组件_tuxedo中间件什么是Django中间件中间件(Middleware)是一个用来处理Django的请求(Request)和响应(Response)的框架级别的钩子,它是一个轻量、低级别的插件系统,用于在全局范围内改

    2022年8月7日
    7
  • 【Java基础知识 1】Java入门级概述

    【Java基础知识 1】Java入门级概述1991年成立了一个称为Green的项目小组,帕特里克、詹姆斯·高斯林、麦克·舍林丹和其他几个工程师一起组成的工作小组在加利福尼亚州门洛帕克市沙丘路的一个小工作室里面研究开发新技术,专攻计算机在家电产品上的嵌入式应用。由于C++所具有的优势,该项目组的研究人员首先考虑采用C++来编写程序。但对于硬件资源极其匮乏的单片式系统来说,C++程序过于复杂和庞大。为了解决困难,他们首先着眼于语言的开发,对于新语言的设计,Sun公司研发人员并没有开发一种全新的语言,而是根据嵌入式软件的要求,对C++进行了…

    2025年12月2日
    6
  • python random.randint函数用法(random.randint()是什么意思)

    numpy.random.randint(low,high=None,size=None,dtype=’l’)函数的作用是,返回一个随机整型数,范围从低(包括)到高(不包括),即[low,high)。如果没有写参数high的值,则返回[0,low)的值。参数如下:low:int生成的数值最低要大于等于low。(hign=None时,生成的数值要在[0,low)区间内)high:i…

    2022年4月16日
    837
  • 遗传算法原理及算法实例分析_遗传算法案例分析

    遗传算法原理及算法实例分析_遗传算法案例分析遗传算法原理解析遗传算法(GA)是一种元启发式自然选择的过程,属于进化算法(EA)大类。遗传算法通常是利用生物启发算子,如变异、交叉和选择来生成高质量的优化和搜索问题的解决方案。借鉴生物进化理论,遗传算法将问题模拟成一个生物进化过程,通过复制、交叉、突变等操作产生下一代的解,并逐步淘汰适应度函数值低的解,增加适应度函数高的解。这样进化N代后就很有可能会进化出适应度函数值很高的个体。

    2025年11月9日
    4
  • vs生成sln文件_VS二进制文件

    vs生成sln文件_VS二进制文件VisualStudio.NET采用两种文件类型(.sln和.suo)来存储特定于解决方案的设置,它们总称为解决方案文件。为解决方案资源管理器提供显示管理文件的图形接口所需的信息,从而在每次继续开发任务时,不会因开发环境而分散精力;*.sln:(VisualStudio.Solution)通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案…

    2022年5月3日
    591
  • executescalar mysql_ExecuteScalar

    executescalar mysql_ExecuteScalar这两个答案和一点点思考使我想到了一个接近答案的东西。首先再澄清一下:该应用程序是用C#(2.0+)编写的,并使用ADO.NET与SQLServer2005进行通信。镜像设置是托管主体和镜像的两个W2k3服务器以及托管作为监视器的快速实例的第三个服务器。这样做的好处是,故障转移对于使用数据库的应用程序几乎是透明的,它将对某些连接引发错误,但从根本上讲一切都会很好地进行。是的,我们得到了奇怪的误报…

    2022年6月30日
    18

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号