- 浏览: 88551 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xiaoyi829:
应该可以grzrt 写道分区表partition,能用hand ...
初识mysql插件之HandlerSocket -
grzrt:
分区表partition,能用handlersocket查询指 ...
初识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
通过这个插件,你可以直接跟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查询指定的某一个分区吗?
发表评论
-
给开发者看的关系型数据库设计
2013-08-06 11:17 736目录 一 Codd的RDBMS12法则——RDBMS的起源 ... -
MySQL数据库服务器端核心参数详解和推荐配置3
2013-03-19 14:31 704l innodb_flush_log_at_trx_com ... -
MySQL数据库服务器端核心参数详解和推荐配置2
2013-03-19 14:29 820l innodb_commit_concurrency ... -
MySQL数据库服务器端核心参数详解和推荐配置1
2013-03-19 14:24 772l lower_case_table_names Li ... -
MySQL5.5数据库my.cnf配置文件模板
2013-03-19 13:46 966引用 #*******以下开始为配置文件模板 [mysqld ... -
MySQL5.5数据库my.cnf配置文件模板
2013-03-19 13:40 0#*******以下开始为配置文件模板 [mysqld] ... -
mysql5.6 Nosql, innodb 安装和配置以及主从镜像模式下可能产生的问题
2013-03-15 16:16 1263一些可以参考的文章: http://blogs.innodb ... -
mysql5.6memcache安装
2013-03-15 16:14 907下载地址: http://labs.mysql.com 选 ... -
MySQL常用存储引擎优化
2013-01-07 15:49 953MySQL 提供的非常丰富的存储引擎种类供大家选择,有多种 ... -
SQL执行过程原理
2012-11-13 15:23 747如下图: http://dl.iteye.com/upload ... -
innotop
2012-10-10 20:13 735INNOTOP是一个通过文本模 ... -
mysql中用percona-toolkit监视死锁
2012-10-10 15:27 799percona,是mysql的一个分支了,相信不少朋友都很熟悉 ... -
MYSQL 5.6新特性介绍
2012-10-10 15:09 1104官方参考: http://dev.mysql.com/doc/ ... -
MySQL NDB 安装的安装,配置与测试
2012-02-17 16:50 1357MySQL NDB 安装的安装,配置与测试 MySQL NDB ... -
快速关闭MySQL/InnoDB
2011-11-13 20:35 821如果用的引擎是InnoDB,每次敲下mysqladmin -u ...
相关推荐
HandlerSocket 是MySQL的一个插件,用于跳过MySQL的SQL层面,直接访问内部的InnoDB存储引擎。
主要介绍了MySQL HandlerSocket插件安装配置,包括PHP HandlerSocket插件的安装配置,需要的朋友可以参考下
mysql-handlersocket-1.0.6-1.DC.1.x86_64
MySQL插件作者的有一些幻灯片。 日本最大的社交游戏平台的数据库基础设施架构师的博客。 另一篇有关在基于RedHat的系统上安装HandlerSocket并使其运行的博客。 使用此PHP扩展在另一篇博客详细介绍。 事实 ...
HandlerSocket插件1
PHP调用MySQL插件HandlerSocket,基于kjdev/php-ext-handlersocketi
用于 MySQL 改进扩展的 HandlerSocket 插件 handlersocketi 扩展允许您访问 HandlerSocket 插件为 MySQL 提供的功能。 有关 MySQL 的 HandlerSocket 插件的更多信息,请访问
MySQL通过HandlerSocket插件提供了API访问接口,在我们的基准测试中,普通的R510服务器单实例Percona/XtraDB达到了72W+QPS(纯读),如果采用更强劲的CPU增加更多的网卡,理论上可以获得更高的性能。而同等条件下Mem
HandlerSocket详细介绍 mysql和memcached的集合
转到用于连接到HandlerSocket Mysql插件的库。 参见github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/ 安装 $ go get github.com/bketelsen/handlersocket-go 阅读示例-最佳示例在TEST文件中。 hs := New() // ...
HandlerSocket的横空出世让人们眼前一亮,当时我还写了一篇文章介绍了其用法梗概,时至今日,由于种种原因,HandlerSocket并没有真正流行起来,不过庆幸的是MySQL官方受其启发,研发了基于InnoDB的Memcached插件,...
共涉及4台测试服务器:机器配置为:安装Webbench1.5,通过Webbench来压Web服务器。Nginx0.8.54+PHP5.3.3(php-fpm),安装有Mongodb和HandlerSocket的php驱动。...MongoDB版本:1.6.5MySQL版本:5.1.53Ha
TDH_Socket 是一个MySQL daemon 插件, 类似于HandlerSocket。现在TDH_Socket能接受客户端的TCP请求,并且直接通过MySQL的Handler层访问数据,绕开了SQL解析等一系列逻辑。TDH_Socket的Java客户端可以通过在客户端...
HandlerSocket是日本人akirahiguchi写的一个MySql的插件。通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。按照作者给出的数据...
掌握:适用于PHP的HandlerSocker库该库提供了一个用于与HandlerSocket插件进行通信的API,用于与MySQL兼容的数据库(MySQL,MariaDB,Percona)。 有关HandlerSocket的更多信息,请查看HandlerSocket上的。安装,请...
Memcache数据一致性的问题:当MySQL数据变化后,如果不能及时有效的清理掉过期的数据,就会造成...面对这些问题,HandlerSocket项目是个不错的解决方案,它通过插件的方式赋予MySQL完整的NoSQL功能,从原理上讲,它跳
Redis、Hash算法数据库、LSM算法数据库、HandlerSocket、分布式数据库