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
,確保優化器生成最優執行計劃);每月執行數據庫備份(全量+增量),驗證備份可用性。