`

初识mysql插件之HandlerSocket

 
阅读更多
HandlerSocket是日本人写的一个mysql插件,具体是谁上网搜吧
通过这个插件,你可以直接跟MySql后端的存储引擎做key-value式的交互,
省去了MySql上层的SQL解释、打开关闭表、创建查询计划等CPU消耗型的开销,
按照作者给出的数据可以在数据全部在内存的情况下可以达到75W的QPS查询。
具体信息可以看这篇Blog,中文介绍可以看这篇文章《HandlerSocket in action》。
这个东西为什么让我很激动呢?首先性能是程序员的G点,
一听高性能你不由地激动,其次,这也解决了缓存跟数据库的一致性问题,
因为缓存就在数据库里面,第三,这个东西不仅仅是NoSQL,
简单的CRUD你可以通过HandlerSocket,但是复杂的查询你仍然可以走MySql,
完全符合我们应用的场景,
并且从实际测试来看,性能确实非常优秀。但是呢,这个东西的代价也少不了,
例如没有权限检查(未来可能添加);不能启用MySql的查询缓存,否则会导致数据的不一致;
协议设计也不合理,使用\t做分隔符,使用\n做换行符,
那么你插入或者更新的字段数据就不能含有这些字符,
否则行为将不如预期。

原文:http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html
相关的日文PPT:http://www.slideshare.net/akirahiguchi/handlersocket-plugin-for-mysql-4664154

相关新能测试请参考:http://www.cnblogs.com/inrie/archive/2011/02/22/1961415.html

下载地址:https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL

安装方式:
下载 ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-73-g0e63366.tar.gz https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/tarball/master
[root@niutian365 tmp]# tar -zxvf ahiguti-HandlerSocket-Plugin-for-MySQL-1.0.6-73-g0e63366.tar.gz
[root@niutian365 tmp]# cd ahiguti-HandlerSocket-Plugin-for-MySQL-0e63366
[root@niutian365 tmp]# ./autogen.sh
[root@niutian365 tmp]# ./configure --with-mysql-source=/niutian365/softs/mysql-5.1.54 --with-mysql-bindir=/usr/local/mysql/bin  --with-mysql-plugindir=/usr/local/mysql/lib/mysql/plugin
##注意这里我的mysql版本是mysql-5.1.54 已经安装过 不详述mysql安装 源码目录是/niutian365/softs/mysql-5.1.54
[root@niutian365 tmp]# make
[root@niutian365 tmp]# make install

[root@niutian365 tmp]# vi /etc/my.cnf

[mysqld]
......
#下面添加
loose_handlersocket_port = 9998
loose_handlersocket_port_wr = 9999
loose_handlersocket_threads = 16
loose_handlersocket_threads_wr = 1
open_files_limit = 65535
保存退出
重启mysql
[root@niutian365 tmp]# mysql restart
登录mysql
[root@niutian365 tmp]# mysql -uroot -pniutian
mysql> install plugin handlersocket soname 'handlersocket.so';
mysql> show processlist;
     +----+-------------+-----------------+---------------+---------+------+-------------------------------------------+------------------+
| Id | User        | Host            | db            | Command | Time | State                                     | Info             |
+----+-------------+-----------------+---------------+---------+------+-------------------------------------------+------------------+
|  4 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
|  5 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
|  6 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
|  7 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
|  8 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
|  9 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 10 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 11 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 12 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 13 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 14 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 15 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 16 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 17 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 18 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 19 | system user | connecting host | NULL          | Connect | NULL | handlersocket: mode=rd, 0 conns, 0 active | NULL             |
| 20 | system user | connecting host | handlersocket | Connect | NULL | handlersocket: mode=wr, 0 conns, 0 active | NULL             |
| 21 | root        | localhost       | NULL          | Query   |    0 | NULL                                      | show processlist |
+----+-------------+-----------------+---------------+---------+------+-------------------------------------------+------------------+
18 rows in set (0.00 sec)
mysql> show plugins;
       +---------------+--------+----------------+------------------+---------+
| Name          | Status | Type           | Library          | License |
+---------------+--------+----------------+------------------+---------+
| binlog        | ACTIVE | STORAGE ENGINE | NULL             | GPL     |
| CSV           | ACTIVE | STORAGE ENGINE | NULL             | GPL     |
| FEDERATED     | ACTIVE | STORAGE ENGINE | NULL             | GPL     |
| MEMORY        | ACTIVE | STORAGE ENGINE | NULL             | GPL     |
| InnoDB        | ACTIVE | STORAGE ENGINE | NULL             | GPL     |
| MyISAM        | ACTIVE | STORAGE ENGINE | NULL             | GPL     |
| MRG_MYISAM    | ACTIVE | STORAGE ENGINE | NULL             | GPL     |
| handlersocket | ACTIVE | DAEMON         | handlersocket.so | BSD     |
+---------------+--------+----------------+------------------+---------+
8 rows in set (0.00 sec)
[root@niutian365 tmp]# mysql restart
分享到:
评论
2 楼 xiaoyi829 2013-01-07  
应该可以
grzrt 写道
分区表partition,能用handlersocket查询指定的某一个分区吗?

我没试过,理伦上应该可以
1 楼 grzrt 2012-04-25  
分区表partition,能用handlersocket查询指定的某一个分区吗?

相关推荐

    MySQL插件HandlerSocket.zip

    MySQL插件HandlerSocket是一个创新性的开源项目,设计目的是为了提高数据库的读写性能,特别是对于大规模数据处理场景。它允许应用程序直接与InnoDB存储引擎交互,绕过了SQL查询解析、优化和执行等传统步骤,从而...

    MySQL HandlerSocket插件安装配置教程

    MySQL HandlerSocket插件是一款由akira higuchi开发的MySQL扩展,它以Daemon Plugin的形式运行,为MySQL提供了类似NoSQL的访问方式。该插件允许用户直接与存储引擎进行键值对交互,绕过了SQL解析、打开关闭表、创建...

    mysql-handlersocket-1.0.6-1.DC.1.x86_64

    mysql-handlersocket-1.0.6-1.DC.1.x86_64

    HandlerSocket插件1

    HandlerSocket 是一个由日本开发者 akira higuchi 开发的 MySQL 插件,它的核心功能在于提供了一种直接与 MySQL 存储引擎进行键值对交互的方式,绕过了传统的 SQL 解析和执行过程,极大地提高了数据库的查询速度。...

    php-handlersocket:一个使用HandlerSocket NoSQL MySQL插件的PECL扩展

    MySQL插件作者的有一些幻灯片。 日本最大的社交游戏平台的数据库基础设施架构师的博客。 另一篇有关在基于RedHat的系统上安装HandlerSocket并使其运行的博客。 使用此PHP扩展在另一篇博客详细介绍。 事实 ...

    php-ext-handlersocketi:用于 MySQL 改进扩展的 PHP HandlerSocket 插件

    用于 MySQL 改进扩展的 HandlerSocket 插件 handlersocketi 扩展允许您访问 HandlerSocket 插件为 MySQL 提供的功能。 有关 MySQL 的 HandlerSocket 插件的更多信息,请访问

    HandlerSocket

    MySQL通过HandlerSocket插件提供了API访问接口,在我们的基准测试中,普通的R510服务器单实例Percona/XtraDB达到了72W+QPS(纯读),如果采用更强劲的CPU增加更多的网卡,理论上可以获得更高的性能。而同等条件下Mem

    HandlerSocket详细介绍

    HandlerSocket是一种开源的高性能数据库缓存系统,它结合了MySQL和memcached的优点,旨在提供一种快速、高效的数据存储和检索方式。HandlerSocket最初由Yoshinori Matsunobu在DeNA公司工作期间开发。DeNA是一家日本...

    php HandlerSocket的使用

    接下来,在HandlerSocket源代码目录下执行`./autogen.sh`和`./configure`进行配置,配置时需要指定MySQL源代码目录、MySQL二进制文件目录和MySQL插件目录。在某些情况下,配置过程可能会遇到版本匹配错误,需要根据...

    php-handlersocket

    HandlerSocket是MySQL提供的一种高性能、低延迟的接口,旨在为InnoDB存储引擎提供NoSQL风格的访问方式。通过绕过SQL解析和优化步骤,HandlerSocket能显著提高数据读取和写入的速度,尤其适用于大数据量的实时应用。 ...

    MySQL新技术在淘宝的使用

    HandlerSocket是一种基于MySQL实现的NoSQL插件,它提供了类似于NoSQL数据库的非结构化数据存储能力。通过直接与MySQL服务器通信,HandlerSocket可以绕过SQL解析器,直接读取和写入数据,从而实现更高的读写性能。 #...

    handlersocket-go:一个用于连接HandlerSocket的Go库(github.comahigutiHandlerSocket-Plugin-for-MySQL)

    转到用于连接到HandlerSocket Mysql插件的库。 参见github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/ 安装 $ go get github.com/bketelsen/handlersocket-go 阅读示例-最佳示例在TEST文件中。 hs := New() // ...

    详解MySQL下InnoDB引擎中的Memcached插件

    HandlerSocket的横空出世让人们眼前一亮,当时我还写了一篇文章介绍了其用法梗概,时至今日,由于种种原因,HandlerSocket并没有真正流行起来,不过庆幸的是MySQL官方受其启发,研发了基于InnoDB的Memcached插件,...

    TDH_Socket_Plugin_for_MySQL.zip

    TDH_Socket 是一个MySQL daemon 插件, 类似于HandlerSocket。现在TDH_Socket能接受客户端的TCP请求,并且直接通过MySQL的Handler层访问数据,绕开了SQL解析等一系列逻辑。TDH_Socket的Java客户端可以通过在客户端...

    mysql自学文档--教你怎么自学mysql

    MySQL是世界上最受欢迎的关系型数据库管理系统之一,尤其在互联网行业中,其地位不可动摇。本文将针对“mysql自学文档--教你怎么自学mysql”这一主题,详细解析MySQL的基础知识和高级操作,帮助你快速掌握MySQL的...

Global site tag (gtag.js) - Google Analytics