CentOS下SQL Server性能调优技巧
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'max server memory (MB)';
命令查看并调整最大内存(如16GB),避免设置过高导致操作系统内存不足;同时设置最小内存(如4GB),防止内存压力下过度收缩。使用free -h
、top
命令监控内存使用,通过echo 1 > /proc/sys/vm/drop_caches
清理PageCache释放内存。sp_configure
设置max server memory
(限制缓冲池大小,不包含其他组件内存)和min server memory
(预留内存,避免内存波动),确保操作系统和其他服务有足够资源。max degree of parallelism (MAXDOP)
,避免过多并行导致资源竞争(建议设置为CPU核心数的1/2或1/4)。SELECT *
),使用复合索引覆盖多列查询;定期通过ALTER INDEX ... REBUILD
或REORGANIZE
重建/重组索引,减少碎片(碎片率超过30%需重建);对部分数据使用过滤索引(如CREATE INDEX idx_name ON table(col) WHERE status='active'
),降低索引维护成本。EXPLAIN
命令分析查询执行计划,识别全表扫描、索引未使用等问题(如索引列上使用函数会导致索引失效)。SELECT *
,只查询所需列;用JOIN
代替子查询(减少嵌套循环);使用高效分页技术(如OFFSET-FETCH
或存储过程),避免LIMIT offset, size
在大偏移量时的性能下降。READ COMMITTED
,平衡一致性与并发性);缩短事务持续时间(避免长事务占用锁资源,减少死锁概率)。sys.dm_os_performance_counters
(查看缓存命中率、磁盘I/O等)、sys.dm_exec_query_stats
(分析慢查询)动态管理视图;借助SQL Server Profiler
或扩展事件
监控查询性能,定位瓶颈。UPDATE STATISTICS table_name
,确保优化器生成最优执行计划);每月执行数据库备份(全量+增量),验证备份可用性。