一、innodb_buffer_pool_size
即我们 innodb 的缓冲池,默认值才128 兆。
假设你有一台 32G 的服务器,如果使用默认值,就相当于你买了一个大别墅,结果只让你用一个小厕所。
数据库读数据老得往硬盘跑,慢如蜗牛。
建议该参数设置为总内存的 70%,数据缓存够了,速度直接起飞。
二、innodb_io_capacity
它控制着 lnnodb 刷脏页的能力,默认值才 200。
现在都是 SSD 的世界了,它还以为自己在机械硬盘呢?
建议通过 fio 等工具测试自己的磁盘 IOPS,然后设置为该参数的值。
三、innodb_lock_wait_timeout 和 interactive-timeout
这两个参数设置长时间未操作自动断开连接,默认为 8 个小时,这实在是太长了。
interactive-timeout:指 MySQL 服务器关闭交互式连接前等待的秒数。交互式连接通常指通过 MySQL 客户端(如命令行工具)连接数据库的会话,这类连接在 mysql_real_connect() 函数中使用了 CLIENT_INTERACTIVE 选项。
innodb_lock_wait_timeout:指 MySQL 服务器关闭非交互式连接前等待的秒数。非交互式连接通常指通过程序(如 JDBC、Python 等)连接数据库的会话。
这相当于是睡着的连接,占着茅坑不拉屎,配置文件统一修改为 600,即超过 10 分钟自动释放闲置连接 ,避免连接不够用的尴尬。
mysql 第34章 默认配置的N个坑