MariaDB中的thread pool详细介绍和使用方法(mariadb-devel)真没想到

随心笔谈2年前发布 admin
200 0 0

文章摘要

这篇文章介绍了MySQL线程池(Thread Pool)的概念及其作用。线程池是一种通过代理线程模型来执行每个连接语句的机制,能够减少过高的并发对MySQL性能的压力。其主要优势包括: 1. **减少线程切换开销**:通过预先创建线程并由操作系统管理,降低线程切换带来的性能消耗。 2. **优化资源使用**:通过`thread_pool_max_threads`参数控制资源使用,提高资源利用率。 3. **提高并发性能**:在连接数可控的情况下,线程池能够有效缓解高并发场景下的性能问题。 然而,线程池也有其适用范围的限制: - **高并发场景**:当并发过高或存在长耗时语句时,线程池的作用会减弱。 - **突发性高并发**:此时线程池的效果不明显,可能需要调整配置参数以维持性能。 - **简单查询性能**:即使语句简单(如`SELECT 1`),也会因需要排队获取线程而影响性能。 文章还提供了解决方案,建议用户在使用线程池时注意配置,并推荐相关文章以进一步了解MySQL分支(如MariaDB和Percona)以及配置方法。



Thread pool是什么

MySQL是每个连接上来都要创建一个线程来执行语句。这样每一个新的连接进来即会创建一个新的线程,这种动作对MySQL本身压力比较大。Threadpool是提供一种线程代理的模型执行每个连接的语句。而MySQL内部维护一个可能接受的线程总数,减少线程太多在CPU切换等方面的压力。

使用Threadpool的好处

1.使用线程代理的模型在连接数已知可控的情况下,提前创建好过线程并利用操作系统的threadpool技术维护,能减少很多开销。

2.尽可能的使用操作系统的线程方面的管理,把线程管理开销降到最低。 3. 利用

thread_pool_max_threads控制资源使用

什么情况下Thread Pool作用比较小:

1.并发太高及有长的语句操作。 如:内部threadpool的总数为:10个,外面并发来了1000个请求,现在都来争用这10个内部线程,这个开销也比较重。同样道理加大threadpool后,innodb内部的并发也会受到限制。

2.突发的大量连接。这个情况下threadpool还有一定的作用,但是效果不明显了。如果为了防止大量的连接进来。可以考虑增加thread_pool_min_threads及thread_pool_idle_timeout的值,让平时也维护一个大的threadpool

3.高并发的环境,有可能简单的查询也会变慢。虽然select 1;这样的查询很简单应该会很快完成。但在threadpool的下面也需要排队等待从theadpool得到可用的线程才能执行。

使用方法:

目前支持threadpool的有MariaDB, Percona, 官方MySQL的一个收费功能。配置启用。

在my.cnf

复制代码 代码如下:

[mysqld]

#thread pool

thread_handling=pool-of-threads

您可能感兴趣的文章:MariaDB(Mysql分支)my.cnf配置文件中文注释版浅谈MySQL和mariadb区别MySQL分支选择参考:Percona还是MariaDBC#连接mariadb(MYSQL分支)代码示例分享关于MariaDB安装问题小记(CMake Error at)mariadb 在低配 VPS 上崩溃问题处理方案

© 版权声明

相关文章