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,确保优化器生成最优执行计划);每月执行数据库备份(全量+增量),验证备份可用性。