使用 Extended Events 分析資料庫效能

本頁說明如何在執行個體上使用擴充事件 (XEvents)

Cloud SQL 支援使用 XEvents 監控、找出資料庫效能問題並排解問題。如要這麼做,您必須建立 XEvent 工作階段並讀取 XEvent 輸出檔案。您可以在執行個體上讀取 XEvent 輸出檔案,也可以從 Cloud Storage 值區下載 XEvent 檔案。

事前準備

如果您想將 XEvent 檔案上傳至 Cloud Storage 值區,請在 Google Cloud 帳戶中建立值區

最佳做法

  • 為避免跨區域傳輸大型檔案,建議您採取下列任一做法:
    • 建立多區域 Cloud Storage 值區
    • 在執行個體所在的區域設定目標 Cloud Storage 值區
  • 使用 XEvents 前,請先啟用自動增加儲存空間功能。XEvent 輸出檔案的大小和保留間隔可能會占用大量磁碟空間。
  • 為避免保留太多 XEvent 檔案,請為 Cloud Storage 值區設定資料保留政策。
  • 如果您使用 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 值區。如果未指定此項目,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) 指定上傳至 Cloud Storage 的 XEvent 檔案上傳間隔。如未指定,Cloud SQL 會使用預設值 10 分鐘。

如要進一步瞭解如何設定這些標記,請參閱「設定資料庫標記」。

如何讀取 XEvent 工作階段輸出檔案

您可以從 Cloud SQL 執行個體或 Cloud Storage 值區讀取 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);

從值區讀取 XEvent 輸出檔案

如要從 Cloud Storage 值區讀取 XEvent 輸出檔案,請將檔案從值區下載到 SQL Server 執行個體。您可以從下列任一執行個體下載:

  • Compute Engine Windows 執行個體
  • Compute Engine Linux 執行個體
  • 另一種執行 SQL Server 的執行個體

接著,請將 XEvent 輸出檔案從值區傳輸至可供該執行個體存取的位置,例如本機磁碟。接著,如要從 XEvent 輸出檔案傳回資訊,請使用在伺服器上具有 VIEW SERVER STATE 權限的帳戶執行 sys.fn_xe_file_target_read_file 函式。如要進一步瞭解權限,請參閱「權限」。

監控指標

您可以透過 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 工作階段」。
  • 如果您複製主要執行個體,則主要執行個體上顯示的任何資料庫旗標都會複製到複製的執行個體。此外,您必須授予複製執行個體的服務帳戶權限,才能再次存取 Cloud Storage 值區。

現有的唯讀備用資源

  • 透過資料庫標記傳遞至原始執行個體的 XEvent 工作階段設定參數不會傳播至唯讀備用資源。
  • 在原始執行個體上建立的 XEvent 工作階段不會傳播至唯讀備用資源。