CentOS环境下SQL Server性能优化策略
noatime、nodiratime等参数减少元数据操作消耗。EXEC sp_configure命令调整内存参数:
max server memory (MB)限制缓冲池大小(避免占用过多系统内存);min server memory (MB)为SQL Server预留基础内存(如4GB),防止内存压力下过度收缩;max server memory仅限制缓冲池,不影响SQL Server其他组件(如线程栈、锁管理器)的内存使用。tempdb文件放置在高性能存储(如SSD)上,且建议每个CPU核心创建1个tempdb数据文件(最多8个),减少争用;SELECT *,仅查询必要字段;减少多表连接(尤其避免笛卡尔积),确保连接条件有索引支持;使用基于主键的分页(如WHERE id > last_id ORDER BY id LIMIT page_size)替代OFFSET分页,避免大偏移量导致的性能下降。WHERE YEAR(create_time) = 2025),否则会导致索引失效;定期通过EXPLAIN分析查询执行计划,识别全表扫描、索引跳转等瓶颈。WHERE、JOIN、ORDER BY、GROUP BY子句中的高频列创建索引(如订单表的user_id、order_date);优先使用复合索引(覆盖多个查询列),遵循最左前缀原则(如索引(a,b,c)可用于WHERE a=1 AND b=2,但不适用于WHERE b=2)。ALTER INDEX ... REBUILD或ALTER INDEX ... REORGANIZE定期重建/重组索引(尤其是频繁增删改的表),消除索引碎片;使用sys.dm_db_index_physical_stats监控碎片率(碎片率>30%时需重建)。vm.swappiness(如设为10,减少交换分区使用)、fs.file-max(增加文件句柄数,如设为65535),提升系统资源利用率;top、iostat、vmstat等工具监控系统资源(CPU、内存、磁盘IO),及时发现瓶颈(如磁盘IO等待过高需优化存储)。UPDATE STATISTICS)、清理日志(BACKUP LOG)、收缩数据库(DBCC SHRINKDATABASE,谨慎使用)。