MySQL InnoDB多核并发配置

MySQL InnoDB的事务存储引擎是多线程的,如果需要调整多核并发参数,可以从以下选项入手。

innodb_thread_concurrency

设置InnoDB可以同时打开的并发线程数的上限,此设置的最佳参数是(2 X CPU数)+磁盘数。大部分情况下应该将其设置为0,InnoDB存储引擎会根据为其运行的环境找到最佳线程数。

innodb_concurrency_tickets

设置可以绕过并发检查的线程数,达到指定的值后,会进行并发线程数的检查(免检参数设置)。

innodb_commit_concurrency

设置可以提交的并发事务的数量,默认值为0,如果不进行此设置将允许同时提交任意数量的事务。

innodb_thread_sleep_delay

设置InnoDB线程在重新进入InnoDB队列之前可以处于休眠状态的毫秒数。默认值是10000(10秒)。

innodb_read_io_threads and innodb_write_io_threads (both since MySQL 5.1.38)

为读写分配指定的线程数,默认值为4,最大值为64。

innodb_read_ahead_threshold

允许以线性方式读取的数据块大小(64 pages [page = 16K]),超过这个值以异步方式读取。

InnoDB在多CPU服务器中表现良好,因为它具有多线程操作的默认配置。如果调整它们需要非常小心。innodb_thread_concurrency参数为0,让InnoDB内部决定线程并发数的最佳方案。

更多相关配置参考MySQL官方文档关于InnoDB启动选项和系统参数