目录
- 1. InnoDB 相关参数
- 2. 内存管理
- 3. 连接与线程
- 4. 日志和监控
- 5. 其他优化
1. InnoDB 相关参数
-
innodb_buffer_pool_size: 这是InnoDB存储引擎最重要的缓存大小,用于缓存数据和索引。推荐设置为系统可用内存的70%-80%,但要确保留给操作系统和其他服务足够的内存。
-
innodb_log_file_size: 重做日志文件大小,较大的值可以减少日志文件旋转的频率,提高写入性能。推荐至少设置为1GB或更大,但需根据磁盘I/O能力调整。
-
innodb_flush_log_at_trx_commit: 控制事务日志刷新策略,取值为0、1、2,分别代表不同的安全性和性能平衡。生产环境中通常设置为1以保证ACID特性,但对I/O要求较高。
2. 内存管理
-
key_buffer_size: 如果使用MyISAM存储引擎较多,这个参数用于缓存MyISAM表的索引块。如果是InnoDB为主,则不需要太大。
-
query_cache_size: 查询缓存大小,适用于读多写少且查询重复度高的场景。但在高并发写入环境中,建议关闭查询缓存。
-
sort_buffer_size, join_buffer_size, read_buffer_size: 这些参数控制排序、连接和读操作时的缓冲区大小。通常不需要全局设置过大,可通过会话变量按需调整。
3. 连接与线程
-
max_connections: 最大并发连接数,根据应用实际需求设定,避免过多连接导致资源耗尽。
-
thread_cache_size: 线程缓存大小,减少频繁创建销毁线程的开销。根据连接波动情况调整。
4. 日志和监控
-
slow_query_log: 开启慢查询日志,并合理设置
long_query_time
来捕捉执行时间较长的查询。 -
log_error: 错误日志文件位置,确保能记录所有错误信息。
5. 其他优化
-
table_open_cache: 表缓存大小,用于缓存打开的表句柄,根据数据库中表的数量和查询模式调整。
-
tmp_table_size, max_heap_table_size: 控制内存中临时表的大小,防止转换到磁盘上。