Percona Thread Pool性能基准测试_MySQL
MySQL从5.5.16开始,在MySQL的商业化版本中将Thread Pool作为plugin提供官方功能支持。后来MariaDB也实现了这一功能,Percona也跟进实现了。从这几天对Percona 5.6.16版本做了下thread pool对比测试,试图找到较为合适的配置参数。
下面是几个测试模式对比:
模式 | 配置参数 |
Percona 5.6.16-nothp | 未开启 thread pool 模式 |
CASE0-thp(128)-oversub(16)-max(2048) | thread_handling = pool-of-threads thread_pool_size = 128 thread_pool_oversubscribe = 16 thread_pool_max_threads = 2048 |
CASE1-thp(default) | thread_handling = pool-of-threads 其他默认设置 |
CASE2-thp(default)-oversub(10) | thread_handling = pool-of-threads thread_pool_oversubscribe = 10 其他默认设置 |
CASE3-thp(default)-oversub(10)-max(10000) | thread_handling = pool-of-threads thread_pool_oversubscribe = 10 thread_pool_max_threads = 100000 其他默认设置 |
CASE4-thp(default)-oversub(16) | thread_handling = pool-of-threads thread_pool_oversubscribe = 16 其他默认设置 |
CASE5-thp(128)-oversub(16)-max(100000) | thread_handling = pool-of-threads thread_pool_size = 128 thread_pool_oversubscribe = 16 thread_pool_max_threads = 100000 |
仍然采用tpcc-mysql这个测试工具,基准值:
测试Warehouse数: 100 |
warmup time: 60s |
run time: 1200s |
并发线程数: 64 ~ 1920 |
测试环境信息:
测试机 | DELL PE R710 |
CPU | E5620 @ 2.40GHz(4 core, 8 threads, L3 Cache 12 MB) * 2 |
内存 | 32G(4G * 8) |
RAID卡 | PERC H700 Integrated, 512MB, BBU, 12.10.1-0001 |
系统 | Red Hat Enterprise Linux Server release 6.4 (Santiago) |
内核 | 2.6.32-358.el6.x86_64 #1 SMP |
raid级别 | raid 0 |
文件系统 | xfs |
硬盘 | SSD: Intel 520系列SSD, 800G * 1 |
Percona版本号:5.6.16-64.2-rel64.2-log Percona Server with XtraDB (GPL), Release rel64.2, Revision 569,Percona相关的关键配置有:
innodb_buffer_pool_size = 26G |
innodb_flush_log_at_trx_commit = 1 |
测试脚本可参考:MySQL压力测试经验
测试结果见下:
针对这个测试结果,我们可以得到一些结论:
1、通常地,只需要开启 pool-of-threads 模式就可以; |
2、可以根据实际压力情况,适当调整 thread_pool_oversubscribe 选项以提升 TPS,这个选项值设置范围一般在 3~20; |
3、thread-pool-size默认值是逻辑CPU个数,最大值是 128,不建议调整或显式设置,如果显式设定 thread-pool-size 的值,可能会带来反效果; |
4、thread_pool_max_threads 默认值是 100000,强烈不建议修改。 |
综上,对于Thread Pool,我们一般建议设置下面2个选项就足够了:
thread_handling = pool-of-threads |
thread_pool_oversubscribe = 10 #这个值建议在3~20间,不清楚的话,无需设置 |
备注:启用Thread Pool后,想要终止某个查询的话,要这么写KILL QUERY connection_id,而不是写成 KILL connection_id,否则就会导致整个连接被KILL。
如果还有什么问题,欢迎加入我的QQ群( 272675472 )讨论。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

MySQL在Web应用中的主要作用是存储和管理数据。1.MySQL高效处理用户信息、产品目录和交易记录等数据。2.通过SQL查询,开发者能从数据库提取信息生成动态内容。3.MySQL基于客户端-服务器模型工作,确保查询速度可接受。

InnoDB使用redologs和undologs确保数据一致性和可靠性。1.redologs记录数据页修改,确保崩溃恢复和事务持久性。2.undologs记录数据原始值,支持事务回滚和MVCC。

MySQL是一种开源的关系型数据库管理系统,主要用于快速、可靠地存储和检索数据。其工作原理包括客户端请求、查询解析、执行查询和返回结果。使用示例包括创建表、插入和查询数据,以及高级功能如JOIN操作。常见错误涉及SQL语法、数据类型和权限问题,优化建议包括使用索引、优化查询和分表分区。

MySQL在数据库和编程中的地位非常重要,它是一个开源的关系型数据库管理系统,广泛应用于各种应用场景。1)MySQL提供高效的数据存储、组织和检索功能,支持Web、移动和企业级系统。2)它使用客户端-服务器架构,支持多种存储引擎和索引优化。3)基本用法包括创建表和插入数据,高级用法涉及多表JOIN和复杂查询。4)常见问题如SQL语法错误和性能问题可以通过EXPLAIN命令和慢查询日志调试。5)性能优化方法包括合理使用索引、优化查询和使用缓存,最佳实践包括使用事务和PreparedStatemen

选择MySQL的原因是其性能、可靠性、易用性和社区支持。1.MySQL提供高效的数据存储和检索功能,支持多种数据类型和高级查询操作。2.采用客户端-服务器架构和多种存储引擎,支持事务和查询优化。3.易于使用,支持多种操作系统和编程语言。4.拥有强大的社区支持,提供丰富的资源和解决方案。

MySQL与其他编程语言相比,主要用于存储和管理数据,而其他语言如Python、Java、C 则用于逻辑处理和应用开发。 MySQL以其高性能、可扩展性和跨平台支持着称,适合数据管理需求,而其他语言在各自领域如数据分析、企业应用和系统编程中各有优势。

MySQL适合小型和大型企业。1)小型企业可使用MySQL进行基本数据管理,如存储客户信息。2)大型企业可利用MySQL处理海量数据和复杂业务逻辑,优化查询性能和事务处理。

MySQL索引基数对查询性能有显着影响:1.高基数索引能更有效地缩小数据范围,提高查询效率;2.低基数索引可能导致全表扫描,降低查询性能;3.在联合索引中,应将高基数列放在前面以优化查询。
