文章首先分析了MySQL查询时的瓶颈(SQL分析、数据表的打开关闭等),然后介绍了HandlerSocket插件。HandlerSocket插件让MySQL达到了近两倍于memcached的查询性能,灰常的niubi!

                           approx qps     server CPU util
MySQL 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的性能相关推荐

  1. mysql 去重_点赞功能,用 MySQL 还是 Redis ?

    点赞功能是目前app开发基本的功能 今天我们就来聊聊点赞.评论.收藏等这些场景的db数据库设计问题~ 1. 我们先来看看场景的需求: 显示点赞数量 判断用户是否点过赞,用于去重,必须的判断 显示个人点 ...

  2. 关系型数据库MySql与非关系型数据库NoSql

    云计算背后的秘密:NoSQL诞生的原因和优缺点 我本来一直觉得NoSQL其实很容易理解的,我本身也已经对NoSQL有了非常深入的研究,但是在最近准备YunTable的Chart的时候,发现NoSQL不 ...

  3. mysql中先随机提取再排序d_mysql性能优化

    mysql性能的优化: 1.mysql基础操作 2.常用的sql技巧 3.sql语句优化 4.mysql数据库优化 5.mysql服务器优化 1.mysql的基础操作 1.1 mysql表复制 命令: ...

  4. 【MySQL】MySQL开发注意事项与SQL性能优化步骤

    MySQL简介 地表最流行数据库 名副其实 什么是MySQL? 世界上应用最广泛且灵活的开源关系数据库 MySQL 是应用最广泛的开源关系数据库,是许多常见网站,应用程序和商业产品使用的主要关系数据存 ...

  5. oracle里有limit怎么用,[ORACLE]ORACLE 实现mysql中的limit 功能

    [ORACLE]ORACLE 实现mysql中的limit 功能 项目从mysql迁移到ORACLE中遇到移植问题,mysql中支持limit 而ORACLE say no . 解决方法 利用ORAC ...

  6. mysql insert 不需要日志_MySQL数据库性能优化(1)「转」

    1.MySQL概述 从本文开始我们将讨论建立在块存储方案之上的关系型数据库的性能优化方案和集群方案.关系型数据库的选型将以创业公司.互联网行业使用最广泛的MySQL数据为目标,但是MySQL的安装过程 ...

  7. mysql数据库多少张表会影响性能_mysql数据库多少张表会影响性能

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. MySQL有什么新功能?

    今年在Percona实时数据性能会议上,我将谈论MySQL. MySQL是世界上最受欢迎的开源数据库,可经济高效地交付可靠,高性能和可扩展的基于Web的嵌入式数据库应用程序,包括前五个网站中的全部五个 ...

  9. mysql handlersocket mongodb_MongoDB和MySQL HandlerSocket性能测试及其结果分析

    一.测试环境 1.测试服务器状况 共涉及4台测试服务器: 压力测试服务器 Web服务器 MongoDB服务器 MySQL服务器. 机器配置为: CPU:Intel(R) Core(TM)2 Duo C ...

最新文章

  1. [每日短篇] 17 - 正确使用随机数 Random
  2. 四大技巧轻松搞定云容器
  3. jacob 实现Office Word文件格式转换
  4. 使用GY89的BMP180模块获取温度和压强(海拔)
  5. 移动 web 1px 边框解决方案
  6. iOS底层探索之多线程(十一)—GCD源码分析(调度组)
  7. STC学习:温度与光照传感器
  8. 记录小米fastboot刷机遇到的驱动问题
  9. 福昕阅读器不能完全显示整个页面的解决办法
  10. VMware Workstation 英文改中文界面
  11. 云队友丨如何长久、持续且稳定的做一件事?
  12. 详谈如何实现手机浏览器跳转微信指定页面加好友及跳转微信公众号一键关注
  13. 软件工程课程第二次任务——需求分析与原型设计
  14. Oracle 时间差计算
  15. 将本机文件复制到安装的虚拟机系统中的两种方法
  16. 在Excel中通过VBA实现不定区域的标准差计算
  17. 教师资格证报名网站内部服务器错误,教师资格证报名入口进不去怎么办
  18. 图片编辑用什么软件?快把这些软件收好
  19. 用户隐私协议弹窗html,服务协议和隐私政策 ,首次启动弹窗
  20. 微信和钉钉网页分享流程

热门文章

  1. django批量修改table_Django 数据库表多对多的创建和增删改查
  2. 服务器网卡显示100m,千兆网线8根线都通了怎么还是显示100M,网卡都是能用1000M的...
  3. JAVA15.JDK15.6 Record二次预览特性
  4. Struts 2基础入门
  5. 派对屋3000效果器怎样调试_怎样测试自己的信用卡是否进了小黑屋
  6. 11-对象的常用方法
  7. 《剑指offer》非递归法判定二叉树是否是对称的
  8. spark1.3.1使用基础教程
  9. pandas全表查询定位某个值所在行列
  10. TensorFLow 常用错误总结