超线程和MySQL InnoDB线程并发性能
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了超线程和MySQL InnoDB线程并发性能,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1933字,纯文字阅读大概需要3分钟。
内容图文
![超线程和MySQL InnoDB线程并发性能](/upload/InfoBanner/zyjiaocheng/896/ff6cb48b5f3b4123a702713e297abdc5.jpg)
我有一个具有以下规格的专用数据库服务器“
> Ubuntu 12.04 LTS服务器
>英特尔(R)Xeon(R)CPU X5670
> @ 2.93GHz
> 12个核心
> MySQL 5.5.29
> 64 GB RAM
> RAID10
我们目前正在进行超线程,因此我们有24个逻辑核心.目前运行速度为2k-4k /秒.
我设置了以下内容:
> innodb_thread_concurrency = 48
> innodb_read_io_threads = 24
> innodb_write_io_threads = 24
这是严格的OLTP加载(70%读取).查询相对较快(毫秒).查询缓存已开启但未过多使用.临时磁盘表不是经常创建的. InnoDB缓冲池设置为48GB,几乎涵盖了整个数据集(60 GB数据索引).
>交易负荷将翻倍至4k-8k交易/秒.目前CPU负载约为1000%,因此我预计这将成为瓶颈.
如何更好地调整我的CPU线程以及MySQL如何使用这些线程?如果有人对innodb_thread_concurrency做了任何基准测试,请告诉我.
我将不胜感激任何建议.
UPDATE
从innodb_thread_concurrency = 48更新到:
> innodb_thread_concurrency = 0
在高峰时间(4-5k事务/秒)的生产系统中,看到行为,这是我观察到的:
>负载平均增加
> mysqld进程CPU使用率从400% – 1000%变为400% – 1400%
>大约4-10个CPU闲置,而其他14-20个CPU大约70%-90%
>%wa为0% – 每个CPU为0.1%,因此I / O不是问题所在. (来自linux顶级输出)
似乎将innodb_thread_concurrency设置为非零值可以限制CPU,使它们不会过火.我将它设置回innodb_thread_concurrency = 48并且CPU使用率下降.
我很感激对这些结果的任何想法.
解决方法:
默认情况下,innodb_thread_concurrency为0.这实际上是最佳设置.它意味着无限的并发性.它允许InnoDB存储引擎决定启动和解决the best number of concurrency tickets.如果设置不正确,将其设置为非零值实际上可以限制InnoDB或限制操作系统.
我在DBA StackExchange中写了很多关于this setting的帖子:
> 2011年5月26日:About single threaded versus multithreaded databases performance
> 2011年8月16日:Why do MySQL threads often show “freeing items” status when the query cache is disabled?
> 2011年9月12日:Possible to make MySQL use more than one core?
> 2011年9月20日:Multi cores and MySQL Performance
> 2012年4月26日:Is the CPU performance relevant for a database server?
> 2012年8月3日:Slow insert performance in mysql innodb table for solr indexing
内容总结
以上是互联网集市为您收集整理的超线程和MySQL InnoDB线程并发性能全部内容,希望文章能够帮你解决超线程和MySQL InnoDB线程并发性能所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。