Mysql线程池系列三(Oracle Mysql Thread pool调优)

简介:
+关注继续查看

首先明确调优的目的是提高TPS。

thread_pool_size:
是一个非常重要的参数,控制thread pool的性能,具体表现为thread group的数量。只能在server启动之前设置,我们测试thread pool的结果如下:
*如果主存储引擎是innodb,thread_pool_size设置在16至36之间,大多数情况设置在24到36,我们还没有发现什么情况需要设置超过36,也只有一些特殊的环境需要设置小于16.
使用DBT2或者sysbench做测试的时候,innodb引擎下通常设置为36个,如果在一些写入特别多的环境,这个值可以设置的更小一些。
*如果主存储引擎是myisam,thread_pool_size需要设置的更低,我们推荐的值是4到8,更高的值可能会对性能有负面影响。

thread_pool_stall_limit:
这个参数对于处理阻塞和长时间执行的语句很重要。这个时间是从一个statement从开始执行到执行完成总花费的时间,如果超过设置值就被认定为stalled,此时线程池也开始允许执行另外
一个statement。这个值的单位是10毫秒,默认值是6,也就是默认间隔是60ms,一个statement执行超过60ms,就被认为是stalled。最大值是600,也就是6秒。一般这个值设置为你99%的statement可以执行完的时间。比如我慢查询设置的
是0.1,那么这里就设置为10。另外可以通过
SELECT SUM(STALLED_QUERIES_EXECUTED) / SUM(QUERIES_EXECUTED) FROM information_schema.TP_THREAD_GROUP_STATS;来获取stalled的比例,这个值尽量的小,为了避免stall,可以调高thread_pool_stall_limit的值。

thread_pool_prio_kickup_timer:
这个值影响低优先级的statements的queue。参数值的单位是毫秒,低优先级的statement需要等到多少毫秒才能被移动到高优先级的queue.默认是1000,也就是1秒,值的范围是(0-4294967294)。

thread_pool_high_priority_connection:
这个参数主要决定新来的statements的执行优先级。默认值是0,表示同时使用low-prority queue和high-priority queue。如果设置为1,所有的statement都会分配到high-priority queue。

thread_pool_max_unused_threads:
这个参数限制thread pool中sleeping thread的最大数量。从而限制sleeping thread对内存的使用。
如果参数的值为0,也就是默认值,意味着对sleeping thread没有限制.假设值为N,当N大于0的时候,意味着1个consumer thread和N-1个 reserve thread。意思也就是说,当一个线程执行完一个statement,将要转为sleeping状态的时候,这时sleeping状态的
线程数量已经达到了允许的sleeping thread的最大数量,那么这个线程将会退出。
关于consumer thread:sleeping thread由consumer thread和reserve thread组成,thread pool允许sleeping thread中有一个consumer thread,一个thread要转变为sleepling thread的时候,如果没有consumer thread 存在,那么
这个thread将转变为consumer thread.当一个sleeping thread要被唤醒的时候,如果存在consumer thread,那么优先唤醒consumer thread,如果consumer thread不存在,那么唤醒reserve thread。

thread_pool_algorithm:
此参数决定thread pool使用那种算法.默认值是0,表示使用较低的并发算法,在大多数测试和生产环境下效果很好。
另外一个值是1,更加积极的增加并发数量的算法,有时候会比最佳线程数量性能更好,但是随着连接的增加,性能会逐渐下降。所以这个参数主要用在实验环境。




      本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1597211,如需转载请自行联系原作者


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2天前
|
SQL Oracle 关系型数据库
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
java实现oracle和mysql的group by分组功能|同时具备max()/min()/sum()/case when 函数等功能
|
20天前
|
Oracle 关系型数据库 MySQL
Mysql 中函数ifnull()实现oracle nvl()函数
Mysql 中函数ifnull()实现oracle nvl()函数
|
25天前
|
Oracle 关系型数据库 MySQL
Oracle与MySQL的主键自增方式
Oracle与MySQL的主键自增方式
|
1月前
|
SQL Oracle 关系型数据库
Oracle与MySQL的分页查询sql语句格式
Oracle与MySQL的分页查询sql语句格式
|
1月前
|
SQL Oracle 关系型数据库
MySQL与Oracle 数据库中---> LPAD() 与 RPAD() 的使用
MySQL与Oracle 数据库中---> LPAD() 与 RPAD() 的使用
43 0
|
1月前
|
存储 Oracle 关系型数据库
连续天数的数据:Oracle 与 MySQL 查询技巧
连续天数的数据:Oracle 与 MySQL 查询技巧
45 0
|
1月前
|
SQL 存储 Oracle
MySQL和Oracle的区别
MySQL和Oracle的区别
42 0
|
1月前
|
监控 Oracle druid
Springboot2.1.9+druid+mybatits(不重启项目动态添加mysql和oracle数据源)和数据监控
Springboot2.1.9+druid+mybatits(不重启项目动态添加mysql和oracle数据源)和数据监控
54 0
|
3月前
|
Oracle 关系型数据库 MySQL
oracle与mysql区别
oracle与mysql区别
47 0
|
3月前
|
SQL Oracle 安全
MySQL和Oracle的区别
MySQL和Oracle的区别
57 1
推荐文章
更多
推荐镜像
更多