Cloud SQL for SQL Server:資料庫管理的最佳實踐

Cloud SQL for SQL Server:資料庫管理的最佳實踐

Cloud SQL for SQL Server 是一項完全託管的資料庫服務,透過該項服務,我們可以在 GCP 上設定、維護、管理 SQL Sever 資料庫。雖然 Cloud SQL 減少了大部分的運營負擔,但在 Cloud SQL 上執行的 SQL Server 資料庫仍然需要透過有效管理才能實現最佳效能。本篇文章將從關鍵的資料庫管理活動出發,探討資料庫管理的最佳實踐。

常見的 DBA 職責和 DBA 清單

作為一名 SQL Server 資料庫管理員(DBA),需負責多項任務,主要包括:

建立資料庫

管理資料庫物件(表,檢視,儲存過程等)

管理使用者和安全

備份資料庫,並在必要時執行恢復操作

為特定客戶克隆和提供資料庫例項

監控例項的狀態,並根據需要採取預防或糾正措施

監視和調優資料庫效能

診斷並向 GCP 支援服務報告關鍵錯誤

在大型企業的工作環境中,這些工作通常由多個 DBA 共同承擔。而在小型或中型資料庫環境中,可能由一個人執行所有資料庫管理任務。

以下 DBA 清單可以幫助我們在 Cloud SQL 例項上對 SQL Server 資料庫進行管理。某些清單任務可能每天執行一次,而有些可能每週甚至每月才執行一次,具體取決於資料庫利用率和業務需求。

檢視錯誤日誌,包括 SQL Server 錯誤日誌和 SQL Server 代理日誌

檢視並設定 Cloud SQL 維護時段

RTO 和 RPO 要求的一致性

高可用性 (HA) 和災難恢復 (DR):檢查配置並與組織中的 HA 和 DR 要求保持一致

測試資料庫每週恢復,每週執行 DBCC CheckDB

監控工作負載(事務與批處理)、計劃作業、處理和維護視窗:檢視工作負載、計劃和執行時間。確保實時跟蹤每個工作負載,包括計劃、執行時長(Min、Max、Avg)

檢視連線到 Cloud SQL 例項的應用。瞭解連線模式以及讀取隔離要求,例如讀取未提交與讀取已提交

檢視標準資料庫維護工作,如索引整理和統計資訊更新。

配置 Cloud SQL

Cloud SQL for SQL Server 可在例項級別和資料庫級別進行配置。大多數例項級配置選項都可以透過 Cloud Console 進行管理。這裡我們應該花些時間仔細檢視例項級配置,因為會影響到資料庫的效能。

例項級配置

例項級配置包括 vcpu、記憶體和儲存透過雲控制檯管理,根據需要使用 Cloud Console 進行配置即可。

Cloud SQL for SQL Server:資料庫管理的最佳實踐

Tempdb

Tempdb 是 SQL Server 中的一個系統資料庫,用於 SQL Server 中臨時物件的內部處理。目前,tempDB 是用4或8個數據檔案建立的,具體取決於例項 vCPU 數量。在之前,一個數據檔案的預設配置通常不足以實現最佳效能。微軟在“SQL伺服器中臨時資料庫的物理屬性”文件中建議新增額外的檔案來減少 tempdb 中的爭用。tempdb 中的所有檔案需要具有相同的大小和相同的檔案增長設定,這裡還建議預先設定 tempdb 的大小,這樣它就不需要自動增長。對於少於8個 vCPU 的情況,tempdb 檔案的數量應該與 vCPU 數量匹配,超過8個 vcpu 時,則使用8個 tempdb 檔案。

如果要檢視 tempdb 配置,參考以下例項:

SELECT name AS FileName, size*1。0/128 AS FileSizeInMB, CASE max_size WHEN 0 THEN ‘Autogrowth is off。’ WHEN -1 THEN ‘Autogrowth is on。’ ELSE ‘Log file grows to a maximum size of 2 TB。’ END, growth AS ‘GrowthValue’, ‘GrowthIncrement’ = CASE WHEN growth = 0 THEN ‘Size is fixed。’ WHEN growth > 0 AND is_percent_growth = 0 THEN ‘Growth value is in 8-KB pages。’ ELSE ‘Growth value is a percentage。’ ENDFROM tempdb。sys。database_files;GO

資料庫標誌

Cloud SQL 資料庫標誌在 SQL Server 社群中也稱為跟蹤標誌,會影響例項行為和效能。在下文的連結中可檢視所有受支援的資料庫標誌的列表:

https://cloud。google。com/sql/docs/sqlserver/flags#list-flags-sqlserver

要檢視當前為例項實現的資料庫標誌,請執行以下 T-SQL 語句。

DBCC TRACESTATUS(-1);GO

配置設定

SQL Server DBA 經常使用系統儲存過程 sp_configure 來設定和檢視例項級配置設定。Cloud SQL 不支援使用 sp_configure 更改例項設定。但是使用資料庫設定和資料庫範圍的配置,需要檢視所有 sp_configure 設定,DBA 可以使用查詢工具(例如 Microsoft 的 SQL Server Management Studio (SSMS) 或 Azure Data Studio)執行以下 SQL 語句。

SELECTa。[name],a。[description],a。[minimum],a。[maximum],a。[value_in_use]FROM sys。configurations aORDER BY a。[name];GO

資料庫級設定

資料庫範圍內設定

資料庫範圍的配置和資料庫屬性允許 DBA 檢視和設定特定資料庫的資料庫級設定。執行下列 sql 語句可檢視特定資料庫的所有資料庫範圍配置:

USE ;GOSELECT a。*FROM sys。database_scoped_configurations aORDER BY 1 ;GO

如果想要更改特定資料庫的資料庫範圍配置,執行以下語句即可

USE ;GOALTER DATABASE SCOPED CONFIGURATION SET = ;GO

如果需要更改特定資料庫設定,執行以下語句

ALTER DATABASE SET ;GO

自動伸縮與關閉

為了避免與資料庫掛載和碎片相關的效能問題,應該將所有資料庫的自動關閉和自動收縮設定為OFF。

ALTER DATABASE SET AUTO_SHRINK OFF;GOALTER DATABASE SET AUTO_CLOSE OFF;GO

最大並行度 (MAXDOP)

SQL Server 會應用最大並行度選項來限制並行計劃執行中使用的處理器數量。例如,如果一個 Cloud SQL 例項配置了40個 vCPU, SQL 最佳化器可能會決定在執行並行查詢時使用所有40個 vCPU。有時過多的並行性可能會導致效能問題,通常表現為查詢時間過長。如果在執行查詢時遇到多個並行執行緒執行,並且一些執行緒在返回資料之前等待的時間比其他執行緒長得多,可以考慮向查詢新增 OPTION (MAXDOP 8)提示。例如,如果查詢包含提示 OPTION (MAXDOP 8), SQL Server 將限制並行度僅為8個 vCPU。MAXDOP 是在資料庫級別為 Cloud SQL 上的 SQL Server 設定的。執行下方 T-SQL 語句可以設定並檢視特定資料庫的 MAXDOP 設定。

USE ;GOALTER DATABASE SCOPED CONFIGURATIONSET MAXDOP = 8;GOSELECT a。*FROM sys。database_scoped_configurations aWHERE a。name = ‘MAXDOP’ORDER BY 1 ;GO

資料庫與資料檔案增長

我們必須在例項級和資料庫級啟用資料庫增長。在例項級,透過選擇複選框“啟用自動儲存增長”來啟用cloud sql 例項上的自動增長。在資料庫級別,啟用自動增長是資料庫所有者的責任。有關更多資訊,可檢視Microsoft的

配置引數文件

更新資料庫檔案自動增長設定,以使用 MB 增量而不是 % 增長率。根據資料庫的不同,首先為資料檔案增加 128 MB 或 256 MB 的增量,為事務日誌增加 256 M B的增量,並根據需要,增加檔案增長增量。在某些情況下,可以使用更大的增量,如資料檔案的增量為1024 MB,日誌檔案的增量為4096 MB。總之,瞭解資料庫的 IO 過程和應用程式需求有利於我們根據工作負載選擇最佳增長率。

以上為本次分享的全部內容。

配置文件:https://docs。microsoft。com/en-us/sql/t-sql/statements/alter-database-transact-sql-file-and-filegroup-options?view=sql-server-ver15

當然資料庫的備份、克隆及如何實現其高可用性也是有效管理的一部分,鑑於篇幅有限,這些內容,我們會放在後面的分享中。請大家持續關注。