一、硬件优化:提升基础性能上限
二、配置文件优化:调整核心参数
thread_cache_size(如设置为100-200)减少线程创建/销毁的开销。三、索引优化:加速查询的关键
WHERE、JOIN、ORDER BY的列创建索引(如主键、唯一索引、普通索引)。避免过度索引(过多索引会增加写入开销)。WHERE a=1 AND b=2),创建复合索引(如(a, b)),遵循最左前缀原则(查询条件需包含索引左侧列)。EXPLAIN分析查询计划,避免全表扫描;用JOIN代替子查询(如SELECT * FROM t1 JOIN t2 ON t1.id=t2.t1_id比子查询更高效);添加LIMIT约束分页查询(如LIMIT 10 OFFSET 20)。四、系统配置优化:适配Linux环境
ulimit -n 65535临时设置,或修改/etc/security/limits.conf永久生效(如* soft nofile 65535; * hard nofile 65535)。/etc/sysctl.conf,添加以下参数提升I/O和内存性能:
vm.swappiness=10:减少内存交换(值越低,越倾向于使用物理内存);vm.vfs_cache_pressure=50:控制内核回收用于目录和inode缓存的内存频率(值越高,回收越积极)。echo never > /sys/kernel/mm/transparent_hugepage/enabled禁用。五、定期维护:保持数据库健康
OPTIMIZE TABLE命令整理表碎片(尤其针对频繁更新的InnoDB表),减少空间占用和提高查询效率。PURGE BINARY LOGS BEFORE '2025-10-01';)。ANALYZE TABLE更新表的统计信息,帮助查询优化器生成更优的执行计划。六、监控与调优:持续优化性能
SHOW STATUS(如SHOW STATUS LIKE 'Threads_connected';)、SHOW PROCESSLIST(查看当前查询)监控数据库状态;使用Prometheus+Grafana、Percona Monitoring and Management(PMM)等工具可视化性能指标(如CPU、内存、磁盘I/O、查询延迟)。slow_query_log(slow_query_log=1),设置long_query_time=2(记录执行时间超过2秒的查询),通过mysqldumpslow或pt-query-digest工具分析慢查询,针对性优化。