使用 Extended Events 分析資料庫效能

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

Cloud SQL 支援使用 XEvents 監控、識別及排解資料庫效能問題。如要執行這項操作,請建立 XEvent 工作階段並讀取 XEvent 輸出檔案。您可以在執行個體上讀取 XEvent 輸出檔案,也可以從 Cloud Storage bucket 下載 XEvent 檔案。

事前準備

如要將 XEvent 檔案上傳至 Cloud Storage bucket,請在 Google Cloud 帳戶中建立 bucket

最佳做法

  • 為避免跨區域傳輸大型檔案,建議您採取下列任一做法:
    • 建立多區域 Cloud Storage bucket
    • 在與執行個體相同的區域中設定目標 Cloud Storage 值區
  • 使用 XEvents 前,請先啟用自動增加儲存空間。視總大小和保留間隔而定,XEvent 輸出檔案可能需要大量磁碟空間。
  • 為避免長期保留過多 XEvent 檔案,請為 Cloud Storage 值區設定資料保留政策。
  • 如果您使用 SSMS UI 建立 XEvent 工作階段,但部分輸入值方塊未顯示,請調整「建立 XEvent 工作階段」視窗大小。

如何建立 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) 指定要上傳至 Cloud Storage 的 XEvent 檔案上傳間隔。如未指定,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 函式。如要進一步瞭解權限,請參閱「權限」。

監控指標

您可以透過 Metrics Explorer 查看 Cloud SQL 指標,監控下列與 xevent 相關的作業:

  • database/sqlserver/xevents_upload_count:表示成功和失敗的 xevent 檔案上傳嘗試總數。請查看這項指標,監控上傳作業是否成功。
  • database/sqlserver/xevents_size:以位元組為單位,指出執行個體儲存的 xevent 檔案所使用的磁碟空間大小。

監控 XEvent 工作階段

您可以透過 xevents.log 檔案監控下列作業的 XEvent 工作階段相關活動:

  • 從磁碟移除未上傳至 Cloud Storage 的 XEvent 輸出檔案,這些檔案佔用的磁碟空間高於與 cloud sql xe output total disk size (mb) 相關聯的值。
  • 從磁碟移除未上傳至 Cloud Storage 且早於 cloud sql xe file retention 相關值的 XEvent 輸出檔案。

唯讀備用資源的注意事項

本節包含新舊讀取副本的 XEvent 工作階段相關資訊。

新的唯讀副本

  • 透過原始執行個體上的資料庫標記傳遞的所有 XEvent 工作階段設定參數,都會在新建立的唯讀備用資源上提供。
  • 建立唯讀副本時,原始執行個體上的所有 XEvent 工作階段都會在唯讀副本上提供。請注意,除非設定為自動啟動,否則讀取複本上的 XEvent 工作階段必須手動啟動。詳情請參閱「如何建立 XEvent 工作階段」。
  • 如果複製主要執行個體,主要執行個體上顯示的所有資料庫旗標都會傳播至複製的執行個體。此外,您必須再次授予複製執行個體的服務帳戶存取 Cloud Storage bucket 的權限。

現有唯讀備用資源

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