CentOS環境下SQL Server性能調優技巧
EXEC sp_configure 'max server memory (MB)', 值; RECONFIGURE;
命令限制SQL Server最大內存,保留10%以上內存給系統和其他應用(如CentOS內核、其他服務),避免內存耗盡導致系統崩潰。Max Degree of Parallelism (MAXDOP)
參數調整并行查詢的CPU核心數(建議設置為CPU核心數的1/2~2/3,避免過多并行導致資源競爭)。noatime
選項(減少文件訪問時間更新的開銷)。/etc/sysctl.conf
文件,增加vm.swappiness
(降低交換分區使用,建議設置為10~30)、net.core.somaxconn
(增加TCP連接隊列長度,建議設置為1024~2048),并通過sysctl -p
命令生效。EXEC sp_configure 'max server memory (MB)', 值; RECONFIGURE;
命令限制SQL Server最大內存(如16GB內存服務器可設置為12~14GB),避免占用過多系統內存。同時,設置min server memory (MB)
(如4GB),保證SQL Server有最低內存可用,防止頻繁申請/釋放內存。Cost Threshold for Parallelism (CTFP)
參數(默認5),設置并行執行的成本閾值(建議設置為20~50),避免小查詢使用并行執行(增加開銷);調整MAXDOP
參數(如設置為4~8),控制并行查詢使用的CPU核心數,平衡并行效率與資源競爭。WHERE
、JOIN
、ORDER BY
的列創建索引(如主鍵、外鍵、高頻查詢字段),但避免過度索引(每個索引會增加插入/更新/刪除的開銷)。定期使用sys.dm_db_index_physical_stats
動態管理視圖檢查索引碎片,對碎片率超過30%的索引進行REBUILD
(碎片率高時)或REORGANIZE
(碎片率低時)操作。SELECT *
(只選擇需要的列,減少數據傳輸量);用JOIN
代替子查詢(減少嵌套查詢的開銷);使用EXPLAIN
或SQL Server Management Studio(SSMS)中的“執行計劃”分析查詢執行路徑,找出性能瓶頸(如全表掃描、索引未使用);優化事務處理(縮短事務持續時間,減少鎖持有時間,避免死鎖)。INSERT INTO ... SELECT
、UPDATE ... FROM
)替代游標,提升查詢速度。sys.dm_os_performance_counters
查看緩沖池命中率(應大于90%,低于則需增加內存),通過sys.dm_os_wait_stats
查看等待類型(如PAGEIOLATCH
表示磁盤I/O瓶頸)。UPDATE STATISTICS 表名
),確保查詢優化器生成最優執行計劃;每天備份數據庫(全量+增量),并測試備份的可恢復性(避免備份失效)。