mysql thread pool应用_MySQL--线程池(Thread Pool)

=================================================================

线程池技术

在MySQL社区版中,MySQL使用one-thread-per-connection的方式来处理数据库连接,即当MySQL客户端与服务器端建立连接时会创建一个线程来专门处理该连接的所有SQL请求。

one-thread-per-connection优缺点:

优点:

one-thread-per-connection方式实现简单,在连接数较少或使用长连接的场景中有保证较小的响应时间。

缺点:

在大量短连接或高并发场景下,one-thread-per-connection方式需要频繁地创建/销毁线程,并在大量线程间进行切换调度,产生较多的上线文切换(context-switch), 导致系统出现性能问题。

在MySQL企业版中,MySQL提供线程池特性,通过创建多个工作线程来共同处理所有连接的SQL请求,控制MYSQL内部线程数量,避免当连接过多时存储引擎创建大量线程,保证数据库在大并发的情况下保持稳定性和持续的吞吐能力。

MySQL线程池解决如下问题:

1、提升CPU Cache的有效率。

2、减少CPU 上线文切换(context-switch)。

3、减少InnoDB内部mutexes资源争抢。

Too many thread stacks make CPU caches almost useless in highly parallel execution workloads. The thread pool promotes thread stack reuse to minimize the CPU cache footprint.

With too many threads executing in parallel, context switching overhead is high. This also presents a challenging task to the operating system scheduler. The thread pool controls the number of active threads to keep the parallelism within the MySQL server at a level that it can handle and that is appropriate for the server host on which MySQL is executing.

Too many transactions executing in parallel increases resource contention. In InnoDB, this increases the time spent holding central mutexes. The thread pool controls when transactions start to ensure that not too many execute in parallel.

https://dev.mysql.com/doc/refman/5.6/en/thread-pool.html

=================================================================

线程池对性能影响

73c8be9a6768e14687c76b0f1c6ada18.png

37181da3ba590a109df3c59f3582f9bc.png

参考链接:

http://www.gpfeng.com/?p=540&utm_source=tuicool&utm_medium=referral

https://blog.csdn.net/z69183787/article/details/52910079

https://blog.csdn.net/a19860903/article/details/52329636

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysqld_exporter的配置文件中,"collect.global_variables"用于指定需要采集的全局变量,其中包括"thread_pool_size"和"max_connections"等参数。这些全局变量的值将在指定的时间间隔内被采集,并通过Prometheus进行监控和告警。 对于"thread_pool_size"和"max_connections"这两个参数,需要根据具体的MySQL服务器配置和实际情况进行设置。 - thread_pool_size:该参数指定MySQL服务器的线程池大小,即同时可以处理的客户端连接数。如果MySQL服务器经常出现"Too many connections"的错误,可以适当增加该参数的值。但是,过高的线程池大小也会导致系统资源的浪费,因此需要根据实际情况进行调整。一般来说,可以将该参数设置为CPU核心数的2~3倍。 - max_connections:该参数指定MySQL服务器允许的最大连接数。如果MySQL服务器经常出现连接数过高的问题,可以适当降低该参数的值。但是,过低的最大连接数也会导致系统无法处理更多的客户端连接请求,因此需要根据实际情况进行调整。一般来说,可以根据服务器的硬件配置和实际负载情况,将该参数设置为100~1000之间的值。 需要注意的是,调整这些参数的值可能会对MySQL服务器的性能和稳定性产生影响,因此建议在进行调整之前,先进行充分的测试和评估。同时,建议使用监控工具对MySQL服务器的运行状态进行实时监控,及时发现并解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值