之前一段时间的工作是测试HandlerSocket的性能,测试结果比较奇怪,qps最高只有三四千,不管用C++或者是java或者perl客户端,性能都上不去,与号称的75万qps差距很大,当时困扰了好久,资料太少。
最后发现原因:建表时使用了分区,分区 partition by HASH(ID)影响了查询性能。
partition的主要目的是将数据库表的数据分布到不同的分区,提高数据的并发处理能力,也就是吞吐率。
MySQL中partition主要在三个层次实现:parser, generic handler, query optimizer;parser是指SQL语句这一层的优化,generic handler主要负责查找分区数据,query optimizer中进行分区剪枝来优化查询。
但是对于handlerSocket来说,它本身不提供分区功能,是基于generic handler实现分区数据的操作,并且无法使用query optimizer进行优化,所以在分区表中操作时,性能受限(分区数越多,handlerSocket性能越差)。
更详细解释见 http://stackoverflow.com/questions/8477515/mysql-handlersocket-and-partitioning
鉴于之前找不到原因伤神费力,为防其他it苦逼遇到相同问题,发一篇供苦逼们参考
分享到:
相关推荐
MySQL插件HandlerSocket是一个创新性的开源项目,设计目的是为了提高数据库的读写性能,特别是对于大规模数据处理场景。它允许应用程序直接与InnoDB存储引擎交互,绕过了SQL查询解析、优化和执行等传统步骤,从而...
HandlerSocket是一种开源的高性能数据库缓存系统,它结合了MySQL和memcached的优点,旨在提供一种快速、高效的数据存储和检索方式。HandlerSocket最初由Yoshinori Matsunobu在DeNA公司工作期间开发。DeNA是一家日本...
HandlerSocket 是一个由日本开发者 akira higuchi 开发的 MySQL 插件,它的核心功能在于提供了一种直接与 MySQL 存储引擎进行键值对交互的方式,绕过了传统的 SQL 解析和执行过程,极大地提高了数据库的查询速度。...
MySQL通过HandlerSocket插件提供了API访问接口,在我们的基准测试中,普通的R510服务器单实例Percona/XtraDB达到了72W+QPS(纯读),如果采用更强劲的CPU增加更多的网卡,理论上可以获得更高的性能。而同等条件下Mem
总的来说,`php-handlersocket`提供了PHP与MySQL之间的一种高效通信机制,适用于需要高性能数据库访问的应用场景。开发人员在使用此扩展时,应该首先阅读README.md文件以获取安装和配置指导,然后可以通过测试目录...
HandlerSocket会覆盖与SQL解析相关的所有CPU使用率。 相反,它直接向InnoDB使用文本协议来创建/读取/更新/删除(CRUD)数据。 它可以在服务器端结合多种操作。 支持SQL命令: SELECT, UPDATE, INSERT, DELETE 支持...
【总结】:php HandlerSocket是解决MySQL与Memcache结合使用时面临的数据一致性问题和性能瓶颈的一种有效工具。通过直接访问MySQL的索引,HandlerSocket提高了查询效率,减少了对Memcache的依赖,降低了系统的复杂性...
一、HandlerSocket是什么?HandlerSocket是akira higuchi写的一个MySQL的插件。以MySQL Daemon Plugin的形式提供类似NoSQL的网络服务,通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了...
HandlerSocket是日本人akirahiguchi写的一个MySql的插件。通过这个插件,你可以直接跟MySQL后端的存储引擎做key-value式的交互,省去了MySQL上层的SQL解释、打开关闭表、创建查询计划等CPU开销。按照作者给出的数据...
Redis、Hash算法数据库、LSM算法数据库、HandlerSocket、分布式数据库
mysql-handlersocket-1.0.6-1.DC.1.x86_64
掌握:适用于PHP的HandlerSocker库该库提供了一个用于与HandlerSocket插件进行通信的API,用于与MySQL兼容的数据库(MySQL,MariaDB,Percona)。 有关HandlerSocket的更多信息,请查看HandlerSocket上的。安装,请...
HandlerSocket是一个特殊的MySQL客户端库,它绕过了MySQL的标准查询解析器,直接通过套接字与MySQL服务器进行交互,从而实现了极高的数据读取性能。这种技术常用于大数据量的实时查询场景,如日志分析或在线分析处理...
handlersocket-go 转到用于连接到HandlerSocket Mysql插件的库。 参见github.com/ahiguti/HandlerSocket-Plugin-for-MySQL/ 安装 $ go get github.com/bketelsen/handlersocket-go 阅读示例-最佳示例在TEST文件中。...
4. **性能优化**:理解如何利用HandlerSocket进行性能调优,包括连接池管理、错误处理策略、并发控制等。 5. **限制与注意事项**:了解HandlerSocket的局限性,如不支持SQL语法,可能对数据库一致性的影响,以及在...