Ubuntu LNMP中MySQL性能调优指南
net.core.somaxconn设置为1024),提升网络吞吐量。noatime,nodiratime选项(减少文件访问时间更新);vm.swappiness=0-10(减少内存交换,避免IO瓶颈)、vm.dirty_background_ratio=5-10(控制脏页刷新阈值,平衡写入性能与数据安全);numactl --interleave=all启动MySQL,避免NUMA架构导致的内存访问延迟。max_connections根据业务需求设为500-1000(避免连接耗尽),thread_cache_size=50(缓存线程,减少线程创建开销),wait_timeout=300(空闲连接超时5分钟,释放资源)。query_cache_size=64M),缓存查询结果。WHERE、JOIN、ORDER BY字段)创建索引,避免过度索引(每个额外索引会增加写操作开销);使用复合索引(如(user_id, create_time))优化多列查询;EXPLAIN命令查看查询执行计划,识别全表扫描、索引失效等问题(如type列为ALL表示全表扫描);SELECT *(只查询需要的列),优化复杂JOIN(确保连接字段有索引),使用LIMIT限制结果集大小,避免在WHERE子句中对字段使用函数(如WHERE DATE(create_time)='2025-09-20'会导致索引失效)。INT代替BIGINT、VARCHAR(255)代替TEXT),减少存储空间和IO开销;RANGE分区),提升查询和维护效率;OPTIMIZE TABLE命令整理表碎片(针对频繁更新的表),ANALYZE TABLE更新统计信息(帮助优化器生成更好的执行计划),CHECK TABLE检查表完整性。fastcgi_cache_path配置)缓存PHP页面,避免重复执行PHP脚本和数据库查询;pm.max_children与MySQL的max_connections匹配(如PHP-FPM设为500,MySQL设为600),避免连接溢出;使用opcache缓存PHP脚本,提升执行效率。slow_query_log=1,long_query_time=2,slow_query_log_file=/var/log/mysql/mysql-slow.log),记录执行时间超过阈值的查询,使用mysqldumpslow或pt-query-digest分析慢查询;SHOW STATUS(查看状态变量,如Queries、Threads_running)、SHOW VARIABLES(查看配置参数)、SHOW ENGINE INNODB STATUS(查看InnoDB状态);第三方工具如Percona PMM(提供可视化监控)、Zabbix(实时报警);sysbench)。mysqldump或xtrabackup),避免配置错误导致数据丢失;SHOW GLOBAL STATUS LIKE 'Uptime'),避免一次性调整多个参数导致系统不稳定;query_cache_type在8.0中移除),需根据版本调整配置;