MySQL 5.5 - 在高端系统上确定正确的 write[read]_io_threads?

Tom*_*eee 7 mysql innodb performance tuning mysql-5.5

特别是双 CPU 32 核 - 128RAM - RAID 10 SSD。Ubuntu 64 服务器。

有时 Innodb 负载很重 - 每秒约 2000 多个查询。重读和写。

目前我们在默认的 write_io_threads 上运行 4。

我们是否“削弱”了我们服务器的能力?在 max write_io_threads=64 和 read_io_threads = 64 上运行它是否安全?

这个数字是如何确定的?

Rol*_*DBA 7

回到 2012 年 3 月 15 日,我回答了这个问题:MySql 推荐硬件

在我的回答中,我提到了一位直到今天仍在我雇主的网络托管公司工作的客户。他们目前在循环复制中运行 3 个数据库服务器。每个数据库服务器都有:

  • MySQL 5.5.9
  • 192 GB 内存
  • 162 GB InnoDB 缓冲池
  • 双六核(没错,12 个 CPU)
  • 1.8TB 磁盘容量
  • 528 个多租户数据库
  • 500 GB InnoDB 数据
  • 启用innodb_file_per_table

我让他们设置

innodb_read_io_threads = 64
innodb_write_io_threads = 64
innodb_thread_concurrency = 0
innodb_buffer_pool_size = 162G
innodb_buffer_pool_instances = 2
innodb_log_file_size = 384M
Run Code Online (Sandbox Code Playgroud)

底线:你有内核和 128G 内存?你在等什么 ?启动它,享受一些乐趣。自 2011 年 3 月以来,我的客户几乎对针对该硬件的这些设置感到震惊。您会被震撼到的!!!

警告

除了开玩笑,在使用 VM(VMWare、AWS、任何其他基于云的 MySQL 实例)或商品硬件时您应该小心。但是,在裸机中拥有如此强大的火力,无论如何,您应该利用这些设置,因为 MySQL 5.5 之前的任何 MySQL 版本都可以使用单线程 InnoDB。如果您有 MySQL 5.1,则必须安装并设置 InnoDB 插件(从 MySQL 5.1.38 开始)。所有 Percona Server 5.1 二进制文件都已经有了这些。由于您有 MySQL 5.5,这些设置是本机安装的,并且已经在许多方面进行了测试。您只需要负责调整新的 InnoDB 设置。

请参阅我关于设置 InnoDB 新设置的其他帖子:

更新 2013-01-18 21:52 EDT

你需要抓住牛角并设置一些基准。让我们回到历史。innodb_read_io_threads 和 innodb_writes_io_threads 没有随 MySQL 5.0 或 5.1 一起提供。有人创建了一个插件并使其在 MySQL 5.1.38 中可用。默认值是 4。我还注意到 Percona Server 在 MySQL 5.1 早期实现了这些东西,默认值是 8。大多数使用 Percona Server 开箱即用的人发誓并经常说它比 MySQL 更好。但是,这种比较通常是通过 tweeking InnoDB 完成的。因此,当然,线程数翻倍的 Percona Server 会更好。

考虑到这种获得更好性能的保守方式(升级到 Percona),除非您进行调优,否则您永远不会真正知道 InnoDB 的好坏或丑陋。请记住我 2011 年 11 月 24 日的帖子。的MySQL的多个版本进行了基准测试,并在某些情况下,InnoDB的MySQL 4.1中下一个单线程环境优于5.x的。那是给予相同水平的竞争环境。

要使天平对您有利,您必须调整 InnoDB。与其给你任何一个明确的 Pick-This-Pick-That 指南,你还需要阅读 InnoDB 为使多个内核活跃起来而提供的设置。并非每个环境都像我客户的双六核服务器或您的双十六核服务器。

如果我必须给你一个好的起点,那就是mysqlperformanceblog.com. 关于 mysql 的所有以性能为中心的内容都可供您阅读、选择和基准测试。


归档时间:

查看次数:

13829 次

最近记录:

12 年,9 月 前