前言
做好日常巡檢是數據庫管理和維護的重要步驟,而且需要對每次巡檢日期、結果進行登記,同時可能需要出一份巡檢報告。
本系列旨在解決一些常見的困擾:
- 不知道巡檢哪些東西
- 不知道怎麼樣便捷體檢
- 機器太多體檢麻煩
- 生成報告困難,無法直觀呈現結果
實例的參數對系統性能和穩定的影響很重要,系統級別的參數可能會根據業務的變化而變化,但防止系統參數設置不合理或被意外修改,系統參數檢查也是巡檢中的必要項。
系統參數概覽
1.在【檢查項】-【全部】頁面檢查是否有設置不合理的參數,當參數設置未通過檢查,會有警告。
具體參數設置
在【參數】頁查看具體的參數配置。
注:合理參數與不合理參數爲平臺計算公式所得,個人針對系統特點進行的調整可能會被列入不合理範圍(此情況可忽略警告)。
參數說明
一般建議系統如果超過32個CPU 那麼設置成8或者4,如果系統中都是特別短小且頻繁的語句建議設置成1(取消語句並行,要慎重真的符合你的場景纔好)
注:很多時候並行度設置和你的服務器CPU配置有關,比如有幾路、幾核、是否超線程,一般來說不要跨物理CPU爲好。
並行度的設置是針對實例級別的設置(SQL2016中可以對單獨數據庫設置)
2.並行開銷的閥值(cost threshold for parallelism) 僅當運行同一查詢的串行計劃的估計開銷高於在“並行的開銷閾值”中設置的值時,SQL Server 才創建和運行該查詢的並行計劃。 開銷指的是在特定硬件配置中運行串行計劃估計需要花費的時間(秒)。 “並行的開銷閾值”選項可設置爲 0 到 32767 之間的任何值。 默認值爲 5。
在某些情況下,即使查詢的開銷計劃小於當前“並行的開銷閾值”的值,也有可能選擇並行計劃。 出現這種情況,是因爲使用並行還是串行計劃是根據完成完全優化之前所提供的開銷估計確定的。
注:主要控制SQL優化器何時選用並行計劃,建議默認值,此值設置的越小優化器越容易選擇並行計劃。
3.服務器內存( min server memory 和 max server memory)
max server memory (建議設置): 一般推薦如果內存較小操作系統預留3G-4G ,如果內存大256或512以上在數據庫內存無壓力時預留5%-10%給操作系統,剩下給SQL SERVER ,如果服務器還有其他應用還要在SQL 中減掉應用所佔的內存。
min server memory(服務器存在多個實例建議設置):當計算機上存在其他佔用大量內存的進程時,這種方法也十分有用,因爲它可確保 SQL Server 至少獲得合理的內存量。 這種方法的缺點是:當啓動新的實例(或任何其他進程)時,運行的實例可能會花費一些時間來釋放內存,如果實例必須將修改後的頁寫回到數據庫中來釋放內存,則花費的時間可能會更長。
帶有工作負荷的第一個實例通常分配所有的內存。 空閒實例或稍後啓動的實例最終可能會只使用最少的可用內存量運行。 SQL Server 不會嘗試均衡分配各個實例的內存使用量。 但是,所有實例均將響應 Windows 內存通知信號以調整它們內存需求量的大小。 Windows 不會使用內存通知 API 來平衡各個應用程序使用的內存。 它只提供有關係統內存可用性的全局反饋。
注:最大服務器內存控制 SQL Server 內存分配,包括緩衝池、編譯內存、所有緩存、QE 內存授予、鎖定管理器內存和 CLR 內存(實際上是 sys.dm_os_memory_clerks 中找到的任何內存分配器)。 線程棧的內存、內存堆、除 SQL Server 之外的鏈接服務器提供程序以及由非 SQL Server DLL 分配的任何內存都不受最大服務器內存控制。
xp_cmdshell 屬於外圍應用配置在新安裝的 SQL Server的默認配置中,功能並未啓用。以最大限度地減少可能受到惡意用戶攻擊的功能數。
總結
參數設置不佳可能導致系統硬件無法發揮最大性能,或造成性能問題。例如:最大內存的設置,設置過小會導致系統無法利用內存而使性能出現嚴重問題,反之不設置或過大會導致在操作系統內存壓力時強制釋放SQL Server內存導致SQL Server無法工作。
在巡檢中及時發現系統參數配置變化與是否合理,這也是重要的巡檢項。