我有一个专门的DB服务器,具有以下规范“
我们目前正在进行超线程处理,因此我们有24个逻辑核。当前运行在2k-4k事务/秒之间。
我提出了以下几点:
innodb_thread_concurrency = 48innodb_read_io_threads = 24innodb_write_io_threads = 24这是严格的OLTP负载(读取70%)。查询相对较快(毫秒)。查询缓存已打开,但使用不多。不经常创建临时磁盘表。InnoDB缓冲池设置为48 GB,几乎涵盖了整个数据集(60 GB data+index)。
如何更好地优化CPU线程,以及MySQL如何使用这些线程?如果有人在innodb_thread_concurrency上做过任何基准测试,请告诉我。
如有任何建议,我将不胜感激。
在从innodb_thread_concurrency = 48更新到:
innodb_thread_concurrency = 0在高峰时间(4-5k事务/秒)的生产系统上,为了查看行为,我观察到:
似乎将innodb_thread_concurrency设置为非零值会使CPU节流,这样它们就不会越界。我将其设置为innodb_thread_concurrency=48,从而减少了CPU的使用。
我希望对这些结果有任何想法。
发布于 2014-10-27 18:45:28
默认情况下,诺姆b_线程_并发性为0。这实际上是最好的环境。它意味着无限并发。它允许InnoDB存储引擎决定最佳并发票数的启动和地址。将其设置为非零值实际上可以节流InnoDB或节流操作系统,如果设置不正确的话。
我在DBA StackExchange中写了许多关于此设置的文章:
May 26, 2011:关于单线程和多线程数据库的性能Aug 16, 2011:为什么当查询缓存被禁用时,MySQL线程经常显示“释放项”状态?Sep 12, 2011:是否有可能使MySQL使用多个核心?Sep 20, 2011:多核与MySQL性能Apr 26, 2012:CPU性能与数据库服务器相关吗?Aug 03, 2012:用于solr索引的mysql innodb表中的缓慢插入性能发布于 2014-12-05 22:26:17
尝试关闭查询缓存,这可能会导致额外锁。
https://dba.stackexchange.com/questions/81204
复制相似问题