首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL/MariaDB中线程池的优点是什么?

MySQL/MariaDB中线程池的优点是什么?
EN

Database Administration用户
提问于 2014-12-25 03:37:19
回答 1查看 10.6K关注 0票数 8

MariaDB线程池

MySQL线程池

我已经阅读了MySQL/MariaDB线程池的正式文档,但我仍然对此感到困惑;据我所知,线程池有两个优点:

代码语言:javascript
复制
 1. limit too many connections, too many connection could lead to too many context switches, but it seems option "--max-connections" also could limit connections~

代码语言:javascript
复制
 2.reuse connected old thread:when a new connection is coming, unused old thread could be reused,but it seems option "--thread\_cache\_size"  also could reuse old thread  

那么,线程池的优点是什么?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2015-02-18 18:16:52

线程池的主要优点是,它通常将运行操作的数量限制为thread_pool_size的值,通常设置为服务器上的CPU数量或将使用多少MySQL。它防止了与其他内部结构的上下文切换和争用问题。当要运行的查询比可用的CPU多得多时,它尤其有用。

限制与max-connections的连接将通过限制连接的数量来限制运行的查询的数量,但是任何超过该限制的连接都会被拒绝,从而导致错误。当使用线程池时,允许更多连接,但查询由线程池排队。另一件需要考虑的事情是,连接并不总是在运行查询,因此限制连接并不能有效地限制运行查询。

就线程缓存而言,在每个连接使用线程时,它确实会有所帮助,但是线程池在重用线程时会做自己的事情。

max-connections仍然可以用于限制连接,但更多的是作为一种保护措施,其值大约为10000,而不是服务器工作量的限制器。

例如,如果您有100个客户端希望同时运行所需的10个查询,则将连接限制设置为10将只允许10个客户端与其他被拒绝的客户端连接时出现错误。最多同时运行10个查询,但平均每次运行的查询可能不到10个。在不限制连接的情况下,如果所有100个客户端都希望同时运行一个查询,那么将有100个线程同时执行,这可能导致争用问题导致的吞吐量低于10个连接。

如果您使用的线程池大小为10,则所有100个客户端都能够连接并运行其查询。如果所有客户端都尝试同时运行一个查询,线程池将对查询进行排队,通常并行执行10,这比前面示例中的100个并发查询的吞吐量要高。

票数 7
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/86989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档