1. 硬件资源优化
innodb_buffer_pool_size设置为物理内存的50%-70%)。2. MySQL配置文件调优
innodb_buffer_pool_size是InnoDB引擎的核心参数,建议设置为服务器总内存的50%-70%(如16GB内存可设为8GB-12GB),用于缓存数据和索引,减少磁盘I/O。innodb_log_file_size(如256MB-512MB)控制重做日志大小,较大的值可提高写入性能,但会增加崩溃恢复时间;innodb_log_files_in_group通常设为2(双日志文件,提升并行写入能力)。max_connections根据服务器资源和应用需求设置(如500-1000),避免过多连接导致内存耗尽;同时调整thread_cache_size(如100-200),减少线程创建/销毁的开销。tmp_table_size和max_heap_table_size(如32MB-64MB)控制内存临时表大小,避免大临时表溢出到磁盘(影响性能)。3. SQL查询与索引优化
INDEX(a,b,c)可优化a=1 AND b=2,但不能优化b=2)。EXPLAIN命令分析查询执行计划,识别全表扫描、未使用索引等问题(如type: ALL表示全表扫描,需优化索引)。SELECT *(仅选择所需列,减少数据传输);用JOIN替代子查询(子查询可能导致临时表创建);合理使用LIMIT分页(如LIMIT 1000,10比LIMIT 0,10更高效,避免大偏移量)。4. 存储引擎选择
5. 数据库维护
OPTIMIZE TABLE命令整理表碎片(如频繁更新、删除数据的表),回收磁盘空间,提高查询效率。ALTER TABLE table_name DROP INDEX index_name, ADD INDEX index_name(column_name)),保持索引高效性。binlog,通过expire_logs_days参数设置保留天数)和慢查询日志(slow_query_log,避免磁盘空间不足)。6. 监控与性能分析
SHOW STATUS查看MySQL运行状态(如Threads_connected当前连接数、Queries总查询数);SHOW PROCESSLIST查看当前执行的查询(识别慢查询或锁等待)。slow_query_log=1,设置long_query_time=2(超过2秒的查询记录到日志),通过pt-query-digest或mysqldumpslow分析慢查询,定位性能瓶颈。Performance Schema提供详细的性能指标(如锁等待、I/O统计),帮助深入分析性能问题。7. 其他优化策略
user_2025、order_shanghai)。