用于處理SQL Server安裝后期問題的更優實踐
在任何企業,SQL Server的安裝,配置和維護都是數據庫管理員的主要職責。本文將介紹在成功安裝了數據庫軟件之后所要遵循的一些重要的SQL Server更優實踐。
讓我們先從給數據庫打補丁作為開始。Microsoft會時不時為SQL Server的各個服務生命尚未終止的版本發布一些服務包,累計更新和修正補丁以進行技術支持。強烈推薦當SQL Server安裝完成后,就馬上從Microsoft's Update Center頁面定期下載并安裝***的補丁。作為一項***實踐,這些補丁需要在開發環境下進行測試然后接著遷移至生產環境。大多數補丁需要重啟SQL Server,因此如果可能的話在安裝它們的過程中要對停機時間有所規劃。
Microsoft SQL Server 2012在安裝設置中引入了Product Update功能。該功能可以發現并顯示***的可用更新來增強SQL Server的安全性和性能。SQL Server 2014和SQL Server 2016的安裝設置中也內置了該功能。
配置tempdb來減少競爭
當廣泛使用了tempdb的應用程序在臨時數據庫中分配新頁的時候會引起加鎖競爭的問題。如果發生的競爭嚴重,與tempdb相關的查詢就可能會在短時間內無響應。這些現象表明需要調整SQL Server tempdb的大小來改善整體查詢性能。你所需要為tempdb配置的數據文件的數量取決于分配給SQL Server一個實例的邏輯處理器的數量。
創建數據庫維護計劃
當你在一個SQL Server實例上創建了用戶數據庫之后,可以將數據庫維護計劃設置為自動任務,例如重建索引以更好地組織數據,壓縮數據文件以及備份所有數據庫和事務日志文件。這些備份可以讓你根據你的數據庫恢復計劃來實現數據庫即時點的恢復。另外,記得要定期備份除了tempdb之外(tempdb是無法備份的)內置進SQL Server的所有系統數據庫。這包括資源數據庫,它是一個用于存儲所有系統對象的只讀數據庫,它可以讓升級至新版的SQL Server變得更加簡便。但是,SQL Server無法對資源數據庫本身進行備份——你必須手動做一個基于文件或是磁盤的備份。
定期運行DBCC CHECKDB命令
作為SQL Server***實踐的一部分,數據庫管理員(DBAs)還需要在他們的環境中主動檢測數據庫損壞。要做到這點的一個方法就是對所有用戶和系統數據庫定期運行DBCC CHECKDB命令。該命令會對數據庫執行一致性檢查來尋找可能會導致數據丟失和處理問題的損壞。
要克服系統故障或其他災難來最小化或避免數據損失,DBA還需要每夜或每周執行全數據庫備份至另一個SQL Server實例——然后運行DBCC CHECKDB命令來識別潛在損壞。此外,對全數據庫備份和災難恢復計劃的周期性測試是無可替代的。
對msd susect_pages表進行監控
在msdb系統數據庫中的suspect_pages表同樣能夠幫助識別數據庫損壞。它將可疑頁的標識存入一個SQL Server實例,以及每頁的數據庫的ID。該表包括的錯誤有錯誤校驗和,不完整頁,以及錯誤消息823和824。因此該***實踐就是要創建一個定期運行的SQL Server任務來監控suspect_pages表并且會在每次添加一個新記錄的時候給DBA團隊發送郵件。
允許“執行卷維護任務”
在數據庫創建和恢復以及數據或日志文件增長期間,SQL Server會用零來填充任何消費空間。該操作會消耗大量SQL Server資源。可以通過給SQL Server Database Engine服務賦予“執行卷維護任務”的特權來避免這種情況。當你賦予了這項特權后,SQL Server就會跳過賦零步驟并立即給數據庫分配新添加的空間。這同樣有助于減少恢復數據庫所要花費的時間。
使用專門的管理員連接
專門的管理員連接可以讓DBA在服務器處于非正常狀態以及無法響應用戶連接的時候進行接入。這有助于DBA運行故障診斷查詢或是診斷函數。使用sp_configure系統存儲過程可以在實例級別啟用該功能。
在實例上啟用備份壓縮
SQL Server Enterprise和Standard Edition的客戶可以使用數據庫備份壓縮功能。該功能可在SQL Server實例級別通過使用SQL Server Management Studio(SSMS)或T-SQL腳本來啟用。它還可以在不實際指定WITH COMPRESSION語句的情況下用于創建所有數據庫的壓縮備份。 配
置最小和***服務器內存
SQL Server***實踐還包括配置最小和***內存來分配給每個數據庫實例中的SQL Server進程。在其默認設置中,SQL Server會根據處理工作負載和可用資源來動態改變內存分配。但DBA可以手動設置最小和***內存級別來限制數據庫可訪問內存的數量。而對于一個特定實例潛在***的服務器內存來說,可以這樣計算,即減去操作系統和來自你的SQL Server系統中總內存量的任何其他實例所需的內存。
設置***程度的并行性
利用***程度的并行性設置來限制為并行計劃執行所用的***處理器數量。其數量的默認值是零,這可以讓SQL Server所有可用處理器增至最多64個。要對用于單個查詢執行所使用的***CPU數量進行限制,可以通過指定期望總數來實現。這是一項高級別的配置更改,可以通過使用SSMS或sp_configure系統存儲過程來實現。