MySQL 適用的 Cloud SQL 效能擷取功能可協助您診斷及解決 MySQL 資料庫中複雜且暫時性的效能問題。
當執行個體發生效能下降問題 (例如資料庫速度變慢或停滯) 時,標準指標可能不足以判斷根本原因。效能擷取功能會在偵測到問題時,擷取資料庫的詳細時間點快照,解決這個問題。您可以設定觸發條件,在發生暫時性問題時擷取系統全域快照,並偵測長時間執行的交易。
應用實例
本節列出啟用例項的效能擷取功能後,可使用的用途範例。
診斷資料庫停滯問題
問題:執行個體已無回應數分鐘,但指標只顯示每秒查詢次數 (QPS) 下降,以及連線數增加。
使用範例:使用 runningThreadsThreshold 定義門檻觸發條件。
效能擷取記錄檔顯示大量信號燈等待,這表示特定互斥鎖爭用 (例如在適應性雜湊索引上) 是根本原因。
分析查詢效能下降情形
問題:查詢效能突然全面下降。
使用範例:效能擷取記錄顯示單一長時間執行的交易,累積了大量復原記錄。記錄會識別長期執行的交易、使用者和查詢文字。
調查複製延遲
問題:讀取副本大幅落後來源。
使用範例:您為 secondsBehindSourceThreshold 設定高價值觸發條件門檻。您可以查看效能擷取記錄,找出造成延遲的特定 GTID。
管理長時間執行的交易
問題:批次工作或使用者查詢執行時間過長,導致鎖定狀態。
使用範例:您為 transactionDurationThreshold 設定了閾值觸發條件。效能擷取記錄會指出超過門檻的交易。您可以利用這項資訊進行調查。
成效資料的擷取方式
效能擷取功能是代理程式型服務,可監控執行個體。啟用效能擷取後,Cloud SQL 執行個體會執行下列動作來擷取效能資料:
代理程式會探查資料庫設定,讀取您定義的觸發條件。接著,代理程式會以可設定的間隔 (預設為 30 秒) 探查資料庫的指標。
如果系統偵測到問題,且觸發條件的門檻已超過,代理程式就會繼續比較資料庫的即時狀態與規則。為避免暫時尖峰導致誤報,代理程式只會在連續偵測到問題時,才觸發完整效能擷取作業。舉例來說,如果代理程式連續三次偵測到執行緒數量偏高,可能會觸發效能擷取作業。
觸發效能擷取作業時,代理程式會連線至資料庫,並執行一系列診斷指令來擷取詳細的快照。
擷取的資訊會格式化為記錄檔項目,並直接傳送至專案的 Cloud Logging,供特定記錄檔串流 (名為
mysql-performance-capture.log) 下的 Cloud SQL 執行個體使用。
可設定的觸發條件
您可以設定下列觸發條件,擷取效能資料:
runningThreadsThreshold:當主要執行個體上執行的有效執行緒數量超過指定值時,就會觸發這項動作。舉例來說,如果運作中的執行緒數量超過 100,您可能會設定門檻來執行效能擷取作業。secondsBehindSourceThreshold:當複本的複製延遲時間超過指定秒數時,就會觸發。舉例來說,如果讀取副本延遲時間超過 300 秒,您可能會設定門檻來執行效能擷取作業。transactionDurationThreshold:觸發記錄個別交易,這些交易的執行時間超過指定時間長度。舉例來說,您可以設定觸發條件,記錄任何執行時間超過 10 分鐘的單一交易。
擷取效能資料後的冷卻期
為避免在持續的效能事件期間記錄過多資料和系統負荷過重,效能擷取功能會在成功擷取快照後,實作 30 分鐘的冷卻期。系統會自動啟動這段冷卻期,避免代理程式在系統處於延長問題狀態時,觸發新的多餘擷取作業。
定價
效能擷取功能會將記錄儲存在 Cloud Logging 中,因此可能會產生額外的儲存空間費用。
如要進一步瞭解在 Cloud Logging 中儲存記錄的價格,請參閱「價格」一文。
限制
- 您必須啟用查詢洞察,才能使用成效擷取功能。停用查詢洞察後,系統也會停用效能擷取功能。
- 效能擷取功能僅適用於 MySQL 5.7 以上版本的 Cloud SQL。