MySQL+HandlerSocket=MySQL的功能+NoSQL的性能
来源:互联网 发布:匡恩网络内部融资 编辑:程序博客网 时间:2024/06/07 05:35
文章首先分析了MySQL查询时的瓶颈(SQL分析、数据表的打开关闭等),然后介绍了HandlerSocket插件。HandlerSocket插件让MySQL达到了近两倍于memcached的查询性能,灰常的niubi!
approx qps server CPU utilMySQL via SQL 105,000 %us 60% %sy 28%memcached 420,000 %us 8% %sy 88%MySQL via HandlerSocket 750,000 %us 45% %sy 53%
MySQL+HandlerSocket的架构如下图(来自原文):
从图中可以看到,HandlerSocket开了9998和9999端口,分别用于读写操作。对于基于主键的CRUD操作,客户端通过HandlerSocket进行,省略了SQL分析、数据表的打开关闭等操作。而其他查询仍然通过MySQL的3306端口进行。
相比常见的memcached+MySQL的架构,MySQL+HandlerSocket架构有两个最明显的优势:
- 节约内存:由于MySQL InnoDB本身就会缓存数据,所以没必要在memcached多保存一份。
- 避免数据不一致性:引入memcached后,一个很头痛的问题就是保证数据的一致性。而去掉memcached后,由于所有的数据库操作都是直接达到InnoDB引擎,所以完全消除了此问题。
相对于其他NoSQL解决方案,MySQL+HandlerSocket也有优势:
- 降低应用开发难度:由于SQL提供了丰富的查询功能,相当于大多数NoSQL来说,开发应用时更简单。
- 降低风险:NoSQL各有特色,选择不慎会造成深远的影响。而且能够完全掌握NoSQL的技术人员也不够普遍,出了问题不一定能够马上解决。
不过,HandlerSocket虽然省掉了一些步骤,但要是内存不足以缓存大部分常用数据。那么HandlerSocket带来的优势就荡然无存了。因此在使用HandlerSocket时,服务器一定要具备足够的内存空间用于InnoDB的Buffer Pool。此外对PHP开发者来说,HandlerSocket目前还没有可用的PHP扩展。
作者说他们已经将HandlerSocket用于了生产环境,取得了很好的效果。作者目前就职于日本最大的社会化游戏平台提供商DeNA。
最后,附上HandelrSocket的仓库地址,这是一个开源项目:http://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL。
- MySQL+HandlerSocket=MySQL的功能+NoSQL的性能
- [转] HandlerSocket系列(MySQL的NoSQL插件HandlerSocket)
- HandlerSocket系列(MySQL的NoSQL插件HandlerSocket)
- MySQL/HandlerSocket和VoltDB:NoSQL的竞争者
- MySQL下的NoSQL解决方案HandlerSocket
- MySQL/HandlerSocket和VoltDB:NoSQL的竞争者
- mysql-HandlerSocket的性能测试
- HandlerSocket NoSQL Mysql插件
- HandlerSocket (mysql + nosql)
- MySQL数据库HandlerSocket的性能测试报告
- 转 -- MySQL/HandlerSocket和VoltDB:NoSQL的竞争者
- Mysql的HandlerSocket插件
- Mysql的HandlerSocket插件
- mysql-HandlerSocket的原理
- MySQL的一个插件 HandlerSocket
- [转]Mysql的HandlerSocket插件
- Mysql插件HandlerSocket的应用
- [转]Mysql的HandlerSocket插件
- 想成为嵌入式程序员应知道的0x10个基本问题(转)
- 好久没更新了
- svn的一些问题1
- 实现两个DataTable的联合查询
- Installing HandlerSocket (NoSQL plugin) into MiariaDB on CentOS 5.5.
- MySQL+HandlerSocket=MySQL的功能+NoSQL的性能
- android git
- php-handlersocket
- updateConfiguration 的一些使用及修改 系统的 Locale
- 标准博客 API .BLOG APIS
- sh 文件执行异常
- Java 6 JVM参数选项大全(中文版)
- 获取一个序列中的不重复数据
- tlb与dll文件区别