索引优化
EXPLAIN
分析查询执行计划查询语句优化
SELECT *
,只查询需要的列表结构优化
MySQL配置优化
# my.cnf 关键配置
[mysqld]
innodb_buffer_pool_size = 系统内存的50-70%
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1 (数据安全) 或 2 (性能优先)
innodb_flush_method = O_DIRECT
query_cache_type = 0 (MySQL 8.0已移除查询缓存)
max_connections = 根据应用需求设置
PHP连接优化
Nginx缓存层
查询缓存替代方案
读写分离
监控与分析工具
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';
定期维护
ANALYZE TABLE table_name;
OPTIMIZE TABLE table_name;
慢查询处理流程
连接数过多
wait_timeout
和interactive_timeout
锁竞争严重
通过以上优化措施,可以显著提升LNMP环境中MySQL的查询性能。建议根据实际业务场景和负载情况逐步调整优化参数。