本頁說明如何在執行個體上使用擴充事件 (XEvents)。
SQL Server 適用的 Cloud SQL 支援使用 XEvents 監控、識別及排解資料庫效能問題。為此,您需要建立 XEvent 工作階段,並讀取 XEvent 輸出檔案。您可以直接在執行個體上讀取 XEvent 輸出檔案,也可以從 Cloud Storage bucket 下載 XEvent 檔案。
事前準備
如要將 XEvent 檔案上傳至 Cloud Storage bucket,請在 Google Cloud 帳戶中建立 bucket。
最佳做法
- 為避免跨區域移轉大型檔案,建議您採取下列任一做法:
- 建立多區域 Cloud Storage bucket
- 在執行個體所在區域設定目的地 Cloud Storage bucket
- 使用 XEvents 前,請先啟用自動增加儲存空間功能。XEvent 輸出檔案可能需要大量磁碟空間,具體取決於檔案總大小和保留間隔。
- 為避免長期保留過多 XEvent 檔案,請為 Cloud Storage bucket 設定資料保留政策。
- 如果您使用 SSMS UI 建立 XEvent 工作階段,但部分輸入值方塊未顯示,請調整「Create XEvent Session」視窗的大小。
如何建立 XEvent 工作階段
執行個體會自動啟用 XEvents。
使用 CREATE EVENT SESSION 指令定義新的 XEvent 工作階段。您也可以使用 SQL Server Management Studio (SSMS) 的使用者介面建立 XEvent 工作階段。
Cloud SQL 會對所有 XEvent 工作階段強制執行下列參數:
| 參數 | 說明 | 允許值 |
FILENAME
|
指定儲存 XEvents 工作階段資料的檔案名稱和路徑。 | 任何以 /var/opt/mssql/xevents/ 開頭的路徑
|
MAX_FILE_SIZE
|
指定每個輸出檔案的大小上限,超過這個上限就會建立新檔案。 | 至少 10 MB
最多 1 GB |
MAX_MEMORY
|
指定要分配給工作階段的記憶體量上限,用於緩衝事件。 | 至少 4 MB
最多 8 MB |
MAX_DISPATCH_LATENCY
|
指定事件在傳送至目標前,可在事件調度佇列中保留的時間上限 (以秒為單位)。 | 最短 1 秒
最長 30 秒 |
MAX_EVENT_SIZE
|
設定每個事件的大小上限 (以位元組為單位)。 | 至少 4 MB
最多 8 MB |
XEvent 工作階段設定參數
您可以使用下列參數做為自訂旗標,設定 XEvent 工作階段:
| 參數 | 說明 |
cloud sql xe bucket name
|
指定要將 XEvent 工作階段輸出內容上傳至哪個 Cloud Storage bucket。如未指定,Cloud SQL 就不會將 XEvent 工作階段輸出資料上傳至 Cloud Storage。 |
cloud sql xe output total disk size (mb)
|
指定要為所有 XEvent 工作階段的輸出內容保留多少磁碟空間。如未指定,Cloud SQL 會使用預設磁碟空間 512 MB。如果 XEvent 輸出檔案使用的磁碟空間超過 cloud sql xe output total disk size (mb) 的值,Cloud SQL 會從磁碟中移除這些檔案。 |
cloud sql xe file retention (mins)
|
指定 XEvent 工作階段檔案目標所產生檔案在執行個體上的保留時間 (以分鐘為單位)。如未指定,Cloud SQL 會使用預設值 7 天。 |
cloud sql xe upload interval (mins)
|
指定 XEvent 檔案上傳至 Cloud Storage 的間隔時間。如未指定,Cloud SQL 會使用預設值 10 分鐘。 |
如要進一步瞭解如何設定這些旗標,請參閱「設定資料庫旗標」。
如何讀取 XEvent 工作階段輸出檔案
您可以從 Cloud SQL 執行個體或 Cloud Storage bucket 讀取 XEvent 工作階段輸出檔案。
讀取執行個體的 XEvent 輸出檔案
如要從 XEvent 工作階段建立的 XEvent 檔案擷取資料,請使用 sys.fn_xe_file_target_read_file 函式。
範例如下:
SELECT * FROM sys.fn_xe_file_target_read_file('/var/opt/mssql/xevents/filename*, NULL, NULL, NULL);
從 bucket 讀取 XEvent 輸出檔案
如要從 Cloud Storage bucket 讀取 XEvent 輸出檔案,請將檔案從 bucket 下載到 SQL Server 執行個體。您可以從下列其中一個執行個體下載:
- Compute Engine Windows 執行個體
- Compute Engine Linux 執行個體
- 執行 SQL Server 的其他類型執行個體
接著,將 XEvent 輸出檔案從 bucket 移至該執行個體可存取的位置,例如本機磁碟。接著,如要從 XEvent 輸出檔案傳回資訊,請使用在伺服器上具備 VIEW SERVER STATE 權限的帳戶執行 sys.fn_xe_file_target_read_file 函式。如要進一步瞭解權限,請參閱「權限」。
授予將檔案上傳至 Cloud Storage bucket 的權限
如要授予將 XEvent 檔案上傳至 Cloud Storage bucket 的權限,請完成下列步驟:
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選要上傳 XEvent 檔案的 bucket 名稱。
在「Bucket details」(值區詳細資料) 頁面,點選「Permissions」(權限) 分頁標籤。
在「按照主體查看」分頁中,點選「授予存取權」。
在「Add principals」(新增主體) 區段的「New principal」(新增主體) 欄位中,輸入要使用的 Cloud SQL 執行個體服務帳戶。
在「指派角色」部分的「選取角色」欄位中,輸入 Storage 物件使用者 (
roles/storage.objectUser) 角色。如要進一步瞭解這個角色,請參閱「Cloud Storage 必要的角色」。
監控指標
您可以在 Metrics Explorer 透過 Cloud SQL 指標監控下列 xevent 相關作業:
- database/sqlserver/xevents_upload_count:表示 xevent 檔案上傳嘗試成功和失敗的總數。查看這項指標,監控上傳是否成功。
- database/sqlserver/xevents_size:指出執行個體上儲存的 xevent 檔案所使用的磁碟空間量,以位元組為單位。
監控 XEvent 工作階段
您可以透過 xevents.log 檔案監控 XEvent 工作階段相關活動,以便執行下列作業:
- 從磁碟移除的 XEvent 輸出檔案,這些檔案未上傳至 Cloud Storage,且占用的磁碟空間高於與
cloud sql xe output total disk size (mb)相關聯的值。 - 從磁碟中移除的 XEvent 輸出檔案,這些檔案未上傳至 Cloud Storage,且早於與
cloud sql xe file retention相關聯的值。
唯讀副本和讀取集區的注意事項
本節說明讀取副本和讀取集區的 XEvent 工作階段。
新的唯讀副本和讀取集區
- 所有透過原始執行個體資料庫旗標傳遞的 XEvent 工作階段設定參數,都可在新建立的唯讀副本上使用。
- 建立唯讀副本時,原始執行個體上的所有 XEvent 工作階段都會出現在唯讀副本中。請注意,除非 XEvent 工作階段設為自動啟動,否則必須手動啟動唯讀副本上的 XEvent 工作階段。詳情請參閱「如何建立 XEvent 工作階段」。
- 如果複製主要執行個體,主要執行個體上顯示的所有資料庫旗標都會傳播至複製的執行個體。此外,您必須授予複製執行個體的服務帳戶權限,才能再次存取 Cloud Storage bucket。
- 唯讀副本或唯讀集區會將輸出檔案上傳至 Cloud Storage。
- 如果是唯讀副本,檔案名稱會參照唯讀副本。
- 如果是讀取集區,檔案名稱會參照特定讀取集區節點。
現有唯讀副本和讀取集區
- 透過資料庫旗標傳遞至原始執行個體的 XEvent 工作階段設定參數,不會傳播至唯讀副本。
- 在原始執行個體上建立的 XEvent 工作階段不會傳播至唯讀副本。