内存:MySQL对内存依赖极高,增加物理内存是提升性能的核心手段。建议优先将内存分配给innodb_buffer_pool_size(InnoDB缓冲池),这是缓存数据和索引的关键区域。
存储设备:使用SSD替代传统HDD,可显著降低I/O延迟,提升数据读写速度。
CPU:选择多核CPU(如Intel至强系列),MySQL能有效利用多核并行处理能力,应对高并发请求。
innodb_buffer_pool_size:设置为服务器总内存的50%-70%(如16GB内存可设为8GB-12GB),用于缓存InnoDB表的数据和索引,减少磁盘I/O。innodb_log_file_size:增大重做日志文件大小(如256MB-512MB),减少日志切换频率,提升写入性能。需配合innodb_log_files_in_group(通常设为2)使用。innodb_log_buffer_size:设置为16MB-64MB,用于缓存重做日志,避免频繁写入磁盘。tmp_table_size & max_heap_table_size:控制内存临时表大小(如32MB-64MB),避免大查询因临时表溢出而转为磁盘表,影响性能。max_connections:根据服务器资源和应用需求设置(如400-800),避免过多连接导致内存耗尽。建议配合连接池(如HikariCP)使用,减少连接创建/销毁开销。thread_cache_size:设置为8-16,缓存空闲线程,减少线程创建的开销,提升高并发下的响应速度。slow_query_log=1),设置阈值(long_query_time=2,单位:秒),记录执行时间超过阈值的查询,便于后续优化。query_cache_size=0),因其在高并发写入场景下易成为瓶颈;若使用5.7及以下版本,可适当设置(如64MB),但需注意并发冲突问题。WHERE、JOIN、ORDER BY、GROUP BY子句中的列创建索引,避免全表扫描。SELECT *:仅选择需要的列,减少数据传输量。JOIN替代子查询:JOIN的效率通常高于子查询,尤其是关联大表时。LIMIT offset, size时,避免大偏移量(如LIMIT 10000, 10),可通过子查询优化(如WHERE id > last_id LIMIT 10)。EXPLAIN命令查看查询执行计划,识别全表扫描、索引未使用等问题,针对性优化。OPTIMIZE TABLE命令回收表空间、整理碎片,提升查询效率(适用于频繁更新的表)。ALTER TABLE ... REBUILD INDEX或OPTIMIZE TABLE重建索引,保持索引高效性。binlog)和慢查询日志,防止磁盘空间不足。top、htop监控CPU和内存使用情况;iostat、vmstat监控磁盘I/O和内存交换。SHOW STATUS查看服务器状态变量(如Threads_running、Innodb_buffer_pool_hit_rate);SHOW PROCESSLIST查看当前执行的查询,识别慢查询。pt-query-digest分析慢查询日志;MySQL Workbench、Percona Monitoring and Management(PMM)进行可视化监控,及时发现性能瓶颈。