一、系統級基礎優化
sudo apt update && sudo apt upgrade更新所有軟件包至最新版本,獲取性能補丁與安全修復;禁用不必要的啟動服務(如sudo systemctl disable <service_name>),僅保留網絡、數據庫等關鍵服務,減少系統資源占用。二、SQL Server配置調優
mssql-conf工具預配置內存限制(如sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 4096設置4GB內存),確保數據庫有足夠緩存空間提升查詢速度。max degree of parallelism (maxdop)——OLTP系統(高并發小事務)建議設置為CPU核心數的1/2或更低(如4核CPU設為2),OLAP系統(復雜分析查詢)可設置為CPU核心數或更高,平衡并發性能與資源爭用。mssql-conf設置:sudo /opt/mssql/bin/mssql-conf set sqlagent.traceflags "1118,3982",重啟SQL Server生效。三、內核與系統內核參數優化
/usr/lib/tuned/mssql/tuned.conf文件,添加以下關鍵設置:[main]
summary=Optimize for Microsoft SQL Server
include=throughput-performance
[cpu]
force_latency=5
[sysctl]
vm.swappiness = 1 # 減少交換分區使用,避免頻繁換頁
vm.dirty_background_ratio = 3 # 臟頁刷新閾值(后臺)
vm.dirty_ratio = 80 # 臟頁刷新閾值(強制)
vm.dirty_expire_centisecs = 500 # 臟頁存活時間(5秒)
vm.dirty_writeback_centisecs = 100 # 刷新間隔(1秒)
vm.transparent_hugepages = always # 啟用大頁,提升內存訪問效率
vm.max_map_count = 1600000 # 增加內存映射區域數量,支持大型數據庫
net.core.rmem_default = 262144 # 接收緩沖區默認大小
net.core.wmem_default = 262144 # 發送緩沖區默認大小
應用配置:sudo tuned-adm profile mssql。四、索引與查詢優化
SET SHOWPLAN_ALL ON;分析查詢執行計劃,為WHERE子句、JOIN條件、ORDER BY中的高頻列創建索引;避免過度索引(每個額外索引會增加INSERT/UPDATE/DELETE的開銷),定期使用UPDATE STATISTICS更新統計信息,確保查詢優化器生成高效執行計劃。SELECT *(僅選擇所需列),減少數據傳輸量;用UNION ALL替代OR條件(提升OR查詢性能);用EXISTS替代子查詢中的IN(減少嵌套查詢開銷);模糊匹配時優先使用前綴匹配(如LIKE 'abc%',可以利用索引)。五、磁盤I/O與文件布局優化
/data、/logs、/tempdb),減少I/O爭用;日志文件需放在低延遲存儲(如SSD)上,確保事務提交性能。六、性能監控與維護
top、htop監控CPU使用率,vmstat 1監控磁盤I/O,free -m監控內存使用;使用SQL Server自帶的性能監視器(sys.dm_os_performance_counters)、Profiler抓取慢查詢,Database Engine Optimization Advisor分析查詢計劃并提供優化建議。ALTER INDEX ALL ON <table_name> REBUILD)或重組(ALTER INDEX ALL ON <table_name> REORGANIZE,針對碎片率低的索引),每月更新統計信息(UPDATE STATISTICS <table_name>),清理過期數據,保持數據庫高效運行。