美文网首页
mysql常用的优化参数

mysql常用的优化参数

作者: flyjar | 来源:发表于2025-07-13 08:19 被阅读0次
参数名称 作用 优化建议 注意事项
innodb_buffer_pool_size InnoDB 存储引擎缓存数据和索引的内存大小 专用数据库服务器设置为物理内存的 60% - 80%,如:innodb_buffer_pool_size = 8G 调整后需重启 MySQL,监控内存使用防止溢出
innodb_buffer_pool_instance 将缓冲池划分为多个实例,减少多线程锁竞争 - 缓冲池 <1G 时设为 1
- 缓冲池 ≥4G 时设为 4-16(建议每个实例 1G-2G)
- 实例数 ≈ CPU 核心数/2(不超过 64)
MySQL 5.7.5+ 支持动态调整,早期版本需重启
key_buffer_size 缓存 MyISAM 存储引擎的索引块 InnoDB 为主时设为 16M;有 MyISAM 表时适当增大 对 InnoDB 表无影响,无需过大
innodb_log_file_size InnoDB 重做日志文件大小,影响写入性能和崩溃恢复时间 设置为 256M - 1G,如:innodb_log_file_size = 512M 调整前需删除旧日志文件,过大可能延长崩溃恢复时间
slow_query_log
long_query_time
记录执行时间超过阈值的查询(慢查询) 开启:slow_query_log = 1
阈值设为 2 秒:long_query_time = 2
定期分析日志优化慢查询,避免日志文件过大
max_connections 限制 MySQL 允许的最大并发连接数 根据实际连接需求调整,避免过大导致资源耗尽,如:max_connections = 500 配合 wait_timeout 回收空闲连接,避免连接数占满
innodb_thread_concurrency 限制 InnoDB 存储引擎的最大线程数 通常设为 CPU 核心数的 2 倍,如:innodb_thread_concurrency = 16 过高可能导致上下文切换开销增加,过低可能无法充分利用 CPU
tmp_table_size
max_heap_table_size
控制内存临时表的最大大小 避免过大导致内存溢出,如:tmp_table_size = 64M
max_heap_table_size = 64M
两参数需保持一致,超过阈值会转为磁盘临时表(性能下降)
sort_buffer_size 每个排序线程分配的内存缓冲区大小 - OLTP 系统:2M-8M
- 分析系统:16M-64M
- 示例:sort_buffer_size = 4M
总内存使用量 = 该值 × 并发线程数,避免因并发过高导致内存溢出

相关文章

网友评论

      本文标题:mysql常用的优化参数

      本文链接:https://www.haomeiwen.com/subject/ezzknjtx.html