本頁面說明如何使用 AlloyDB 的進階查詢洞察功能,近乎即時地偵測及分析主要和讀取集區執行個體的查詢效能問題。如要瞭解 AlloyDB 的進階查詢洞察功能,請參閱「AlloyDB 的進階查詢洞察功能簡介」。
如要瞭解如何使用標準查詢洞察,請參閱「使用查詢洞察提高查詢成效」。
您可以使用 Gemini Cloud Assist 監控及排解 AlloyDB 資源問題。詳情請參閱「透過 Gemini 輔助功能監控及排解問題」。
事前準備
如要存取查詢洞察資訊主頁,請在 Google Cloud 專案中啟用 PostgreSQL 適用的 AlloyDB 存取權。
必要的角色
如要使用 AlloyDB 的進階查詢洞察功能,您必須具備下列權限:
- 如要存取 AlloyDB 的進階查詢洞察功能,您必須具備存取 AlloyDB 查詢洞察資訊主頁的權限。
- 如要編輯 AlloyDB 進階查詢洞察功能的設定,您必須具備更新 AlloyDB 執行個體的權限。
如要取得這些權限,請要求管理員授予您下列其中一個角色:
- 基本檢視者 (
roles/viewer
) - 資料庫洞察檢視者 (
roles/databaseinsights.viewer
)
如要進一步瞭解如何授予角色,請參閱管理存取權。
啟用 AlloyDB 適用的進階查詢洞察功能
如要為 AlloyDB 執行個體啟用進階查詢洞察設定,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
按一下「啟用」或「編輯設定」。
在「編輯查詢洞察設定」分頁中,選取「啟用 AlloyDB 適用的進階查詢洞察功能」核取方塊。
這項作業預設會進行下列設定變更:
- 勾選「等待事件分析」和「執行中查詢分析」核取方塊。
- 將查詢長度從 4500 B 增加至 100000 B。
儲存變更。這會重新啟動 AlloyDB for PostgreSQL 執行個體。
gcloud
gcloud alpha alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--observability-config-enabled
更改下列內容:
INSTANCE
:要更新的執行個體 ID。CLUSTER
:執行個體叢集的 ID。PROJECT
:叢集專案的 ID。REGION
:叢集所在的區域,例如us-central1
。
--observability-config-enabled
旗標可收集及分析 AlloyDB 執行個體的資料,監控其效能和健康狀態。如要停用進階查詢洞察,請使用 --no-observability-config-enabled
。
Terraform
如要使用 Terraform 在 AlloyDB 執行個體上啟用進階查詢洞察功能,請在 observability_config
區塊中將 enabled
欄位設為 true
。
範例如下:
observability_config { enabled = true ... }
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST v1
這個範例會啟用 AlloyDB 執行個體的進階查詢洞察功能。如需這項呼叫的完整參數清單,請參閱「方法:projects.locations.clusters.instances.patch」。如要瞭解進階查詢洞察設定,請參閱「編輯進階查詢洞察設定」。
使用任何要求資料之前,請先替換以下項目:
CLUSTER_ID
:您建立的叢集 ID。只能使用小寫英文字母、數字和連字號,而且開頭須為小寫英文字母。PROJECT_ID
:您要放置叢集的專案 ID。LOCATION_ID
:叢集所在區域的 ID。INSTANCE_ID
:要建立的主要執行個體名稱。
如要啟用執行個體設定,請使用下列 PATCH
要求:
PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=observabilityConfig.enabled}
updateMask=observabilityConfig.enabled
查詢參數會告知 API 更新 observabilityConfig
區塊中的 enabled
欄位。
JSON 要求內文如下所示:
{
"observabilityConfig": {
"enabled" : true,
}
}
啟用進階查詢洞察後,您就能編輯進階查詢洞察設定。
編輯進階功能設定
如要編輯 AlloyDB 執行個體的進階查詢洞察設定,請按照下列步驟操作:
控制台
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
按一下「編輯設定」,然後修改下列任一設定:
- 等待事件分析:等待事件分析功能可協助找出並解決資料庫中的效能問題。等待事件是造成查詢相關作業處理延遲的元件。
- 執行中查詢分析:追蹤執行中的查詢。
- 儲存查詢註解:查看與您調查的查詢相關的註解 (屬於查詢長度的一部分),瞭解查詢的相關資訊。不需要額外的記憶體。如果註解中含有機密資訊,請留意使用者的存取權。
- 啟用索引建議工具:在叢集的查詢洞察頁面顯示索引建立建議。
- 在「選取執行頻率」欄位中,您可以定義建議的更新頻率。
- 儲存用戶端 IP 位址:啟用後即可追蹤用戶端 IP 位址並分析相關資料。
- 儲存應用程式標記:啟用後,即可瞭解哪些 API 和模型檢視控制器路徑正在發出要求,並將資料分組以產生相關指標。
- 查詢計畫取樣:查詢計畫會以視覺化的方式呈現用來完成查詢取樣的作業。系統每分鐘在各個資料庫中可擷取的查詢樣本數取決於取樣率。取樣率越高,需要的記憶體就越多。
- 在「查詢長度」欄位中,您可以變更查詢長度的預設限制,從 256 個位元組到 100 KB。查詢越長,所需記憶體就越多。變更查詢長度需要重新啟動執行個體。
儲存變更。
gcloud
gcloud alpha alloydb instances update INSTANCE \
--cluster=CLUSTER \
--project=PROJECT \
--region=REGION \
--observability-config-preserve-comments \
--observability-config-track-wait-events \
--observability-config-max-query-string-length=QUERY_LENGTH \
--observability-config-record-application-tags \
--observability-config-query-plans-per-minute=QUERY_PLANS \
--observability-config-track-active-queries
更改下列內容:
INSTANCE
:要更新的執行個體 ID。CLUSTER
:執行個體叢集的 ID。PROJECT
:叢集專案的 ID。REGION
:叢集所在的區域,例如us-central1
。QUERY_LENGTH
:查詢長度,範圍為 1024 到 100000 個位元組。預設查詢長度為 10240 個位元組。 查詢越長,就越適合用於分析查詢,但所需記憶體也越多。變更查詢長度後,您必須重新啟動執行個體。 即使查詢超過長度限制,您還是可以新增標記。QUERY_PLANS
:每分鐘要設定的查詢計畫數量。根據預設,執行個體的所有資料庫每分鐘最多可擷取 20 個已執行的查詢方案樣本。請將這個值變更為介於 1 至 20 之間的數字。如要停用取樣功能,請輸入 0。 提高取樣率或許可以產生更多資料點,但可能會降低效能。
如有需要,請使用下列選用的可觀測性旗標:
--observability-config-track-active-queries
:啟用追蹤執行中查詢。 如要停用這項功能,請使用--no-observability-config-track-active-queries
。--observability-config-record-application-tags
:儲存應用程式標記,協助您判斷發出要求的 API 和模型檢視控制器 (MVC) 路徑,並將資料分組以產生相關指標。這個選項需要您使用特定標記集註解查詢。如不想儲存應用程式標記,請使用--no-observability-config-record-application-tags
。--observability-config-preserve-comments
:保留新增至 SQL 程式碼的註解,提供程式碼相關資訊,但不影響程式碼執行。如不想保留註解,請使用--no-observability-config-preserve-comments
。--observability-config-track-wait-events
:啟用等待各等待事件類型的事件。如不想追蹤等待事件,請使用--no-observability-config-track-wait-events
。
Terraform
如要使用 Terraform 在 AlloyDB 執行個體上設定進階查詢洞察,請使用 google_alloydb_instance
資源。
範例如下:
observability_config { enabled = ENABLED_VALUE preserve_comments = PRESERVE_COMMENTS_VALUE track_wait_events = TRACK_WAIT_EVENTS_VALUE max_query_string_length = MAX_QUERY_STRING_LENGTH_VALUE record_application_tags = RECORD_APPLICATION_TAGS_VALUE query_plans_per_minute = QUERY_PLANS_PER_MINUTE_VALUE track_active_queries = TRACK_ACTIVE_QUERIES_VALUE }
更改下列內容:
ENABLED_VALUE
:執行個體的可觀測性功能狀態。編輯設定並視需要指定其他標記時,請設為true
。PRESERVE_COMMENTS_VALUE
:保留查詢字串中的註解。預設值為false
。TRACK_WAIT_EVENTS_VALUE
:記錄執行個體查詢執行期間的等待事件。預設值為true
。MAX_QUERY_STRING_LENGTH_VALUE
:查詢字串長度。預設值為10240
。介於 1024 到 100000 之間的任何整數都有效。RECORD_APPLICATION_TAGS_VALUE
:記錄執行個體的應用程式標記。預設值為true
。QUERY_PLANS_PER_MINUTE_VALUE
:洞察功能每分鐘擷取的查詢執行計畫數量 (所有查詢加總)。預設值為20
。介於 0 到 20 之間的任何整數都有效。TRACK_ACTIVE_QUERIES_VALUE
:追蹤目前執行的查詢。預設值為false
。如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
REST v1
這個範例會在 AlloyDB 執行個體上設定進階查詢洞察設定。如需此呼叫的完整參數清單,請參閱「方法:projects.locations.clusters.instances.patch」。
如要設定進階查詢洞察設定,請將 enabled
欄位設為 true
,並視需要修改其他選用欄位。如需這項呼叫的完整欄位清單,請參閱 ObservabilityInstanceConfig。
使用任何要求資料之前,請先替換以下項目:
CLUSTER_ID
:您建立的叢集 ID。只能使用小寫英文字母、數字和連字號,而且開頭須為小寫英文字母。PROJECT_ID
:您要放置叢集的專案 ID。LOCATION_ID
:叢集所在區域的 ID。INSTANCE_ID
:要建立的主要執行個體名稱。
如要修改執行個體設定,請使用下列 PATCH
要求:
PATCH https://alloydb.googleapis.com/v1beta/{instance.name=projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID/instances/INSTANCE_ID?updateMask=observabilityConfig.enabled,observabilityConfig.preserveComments,observabilityConfig.trackWaitEvents,observabilityConfig.maxQueryStringLength,observabilityConfig.recordApplicationTags,observabilityConfig.queryPlansPerMinute,observabilityConfig.trackActiveQueries,observabilityConfig.trackClientAddress}
設定所有進階查詢洞察欄位的要求 JSON 主體如下所示:
{
"observabilityConfig": {
"enabled" : true,
"preserveComments": true,
"trackWaitEvents": true,
"maxQueryStringLength": 5000,
"recordApplicationTags": true,
"queryPlansPerMinute": 20,
"trackActiveQueries": true,
}
}
偵測及診斷查詢效能問題
您可以使用進階查詢洞察資料偵測及診斷效能問題。查詢洞察資訊主頁會顯示資料庫負載,這是衡量所選資料庫中執行的查詢作業過去執行的工作量 (以 CPU 使用秒數為單位)。每個執行中的查詢都會使用或等待資源。資料庫負載是指在特定時間範圍內,所有已完成查詢所耗用的時間與實際經過時間的比率。
查看已執行查詢的工作量指標
資料庫負載圖表會衡量資料庫中執行的所有查詢完成的工作量 (以 CPU 使用秒數為單位),並按照所選維度劃分。資料庫負載會根據您從圖表下拉式選單中選取的分配資料進行劃分。
您可以依下列任一維度細分資料庫負載:
- 查詢
- 等待事件類型
- 等待事件
- 資料庫
- 使用者
如要查看資料庫中已執行查詢完成的工作,請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
選擇資料庫和使用者。
選擇要顯示資料的總執行時間,例如 1 或 6 小時,或是自訂時間。
在「Database Load by execution time」(依執行時間劃分的資料庫負載) 下拉式選單中,選擇要調查的維度。視您選擇的維度而定,圖表會顯示所選維度對整體資料庫負載的影響。舉例來說,如果您從資料庫負載圖表的下拉式選單中選取「等待事件」維度,資料庫負載圖表就會顯示所選資料庫和使用者在所選時間範圍內發生的所有等待事件細目。
資料庫負載圖表會顯示所有九種等待事件類型和 PostgreSQL 支援的等待事件資料。系統會根據等待事件的數量和類型,顯示前十大等待事件和類型。如果等候事件超過 10 個,系統會顯示前 9 個等候事件,其餘則歸入「其他」類別。這種做法也適用於其他維度,例如查詢、資料庫和使用者。
查看造成資料庫負載的主要因素
使用「各資料庫負載的最大維度」表格,即可查看指定時間範圍內,對「資料庫負載」圖表所選維度影響最大的項目。根據您在「資料庫負載中占比最大的維度」表格中選擇的維度,找出所選時間範圍內占比最大的值。
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
選擇資料庫和使用者。
選擇要顯示資料的總執行時間,例如 1 或 6 小時,或是自訂時間。
在「各資料庫負載的最大維度」表格中,您可以點選下列任一項目:
尺寸 說明 查詢 表格會根據總執行時間,顯示最熱門的正規化查詢。針對每項查詢,資料欄中顯示的資料如下:
- 平均執行時間 (毫秒)。查詢的平均執行時間。
- 總執行時間 (毫秒)。特定查詢的總執行時間。
- 傳回的資料列。查詢擷取的平均資料列數。
- 呼叫次數。應用程式呼叫查詢的次數。
- %load by chart dimension. 藥丸圖表會顯示特定查詢的圖表維度分布情形。
等待事件類型 表格會列出所選時間範圍內發生的熱門等待事件類型。
- 平均等待時間 (毫秒)。查詢在特定等待事件類型中花費的平均時間。
- 總等待時間 (毫秒)。查詢在特定等待事件類型中花費的總執行時間。
- 等待事件類型數量。所選時間範圍內發生特定等待事件類型的次數。
- %load by chart dimension. 藥丸圖表會顯示在資料庫負載圖表下拉式選單中選取的圖表維度,在特定等待事件類型中的分布情形。
等待事件 表格會列出所選時間範圍內發生的熱門等待事件。
- 平均等待時間 (毫秒)。查詢在特定等待事件中花費的平均時間。
- 總等待時間 (毫秒)。查詢在特定等待事件中花費的總執行時間。
- 等待事件數量。所選時間範圍內發生特定等待事件的次數。
- %load by chart dimension. 藥丸圖表會顯示資料庫載入圖表下拉式選單中選取的圖表維度,在特定等待事件中的分布情形。
資料庫 表格會列出在所選時間範圍內,所有已執行的查詢中,造成負載的熱門資料庫。
- 資料庫中的平均執行時間 (毫秒)。查詢在特定資料庫中執行的平均時間。
- 在資料庫中耗費的總時長 (毫秒)。查詢在特定資料庫中花費的總執行時間。
- %load by chart dimension. 圓形圖會顯示在資料庫負載圖表下拉式選單中選取的圖表維度,在特定資料庫中的分布情形。
使用者 這個表格會顯示所選時間範圍內,所有已執行查詢的前幾名使用者。
- 使用者平均花費的時間 (毫秒)。查詢在特定使用者上花費的平均時間。
- 在使用者中耗費的總時間 (毫秒)。查詢在特定使用者中花費的總執行時間。
- %load by chart dimension. 藥丸圖表會顯示資料庫負載圖表下拉式選單中選取的圖表維度,在特定使用者之間的分布情形。
查看查詢執行時間
AlloyDB 的進階查詢洞察功能會顯示各資料庫負載的最大維度表格中,造成資料庫負載的前十個查詢。熱門查詢是指在所選時間範圍內,造成最多資料庫負載的查詢。後續查詢的執行時間會以百分比表示,並以最長執行時間為基準。
如要瞭解所選圖表維度 (查詢、等待事件類型、等待事件、資料庫和使用者) 的不同值,如何影響「資料庫負載量最高的維度」中參數的執行時間,請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
選擇資料庫和使用者。
在「各資料庫負載的最大維度」表格中,查看「依圖表維度顯示的負載百分比」,瞭解表格中的參數如何受到「資料庫負載」圖表中的參數影響。
舉例來說,如果您在「資料庫負載」圖表中選取「所有查詢」,然後按一下「依資料庫負載排序的前幾名維度」表格中的「查詢」分頁,「依查詢排序的負載百分比」就會顯示清單,列出在指定時間範圍內,所選資料庫中造成最多資料庫負載的查詢。
查看查詢執行時間的詳細資料
您可以在「更多詳細資料」中查看查詢執行時間的詳細資料,包括您在資料庫負載圖表和表格中選取的維度、每個等待事件的定義,以及封裝在「其他」類別中的資料。
「更多詳細資料」也會顯示查詢詳細資料畫面中未顯示的複雜資訊詳細資料。這項資訊包括每個等待事件的定義。
如要查看查詢執行時間的詳細資料,請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
選擇資料庫和使用者。
在「依資料庫負載量排序的前幾名維度」表格中,按一下查詢的「更多詳細資料」。
AlloyDB 的進階查詢洞察功能會顯示正規化查詢 ($1、$2 等),取代常值常數值。例如:
UPDATE "demo_customer" SET "customer_id" = $1::uuid, "name" = $2, "address" = $3, "rating" = $4, "balance" = $5, "current_city" = $6, "current_location" = $7 WHERE "demo_customer"."id" = $8
系統會忽略常數值,以便進階查詢洞察資料匯總類似查詢,並移除常數可能顯示的任何個人識別資訊 (PII)。
判斷正規化查詢的資料庫負載
如要顯示所選正規化查詢在所選資料庫中,隨時間執行的查詢作業所耗用的時間和資源 (以 CPU 使用秒數為單位),請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
選擇資料庫和使用者。
按一下「資料庫負載」圖表中的「查詢」。如要計算資料庫負載,資料庫負載圖表會使用在分鐘界線內完成的正規化查詢所耗用的時間,與實際經過的時間進行比較。
「資料庫負載」圖表頂端會顯示前 10 KB 的正規化查詢字元,其中會移除常值,以利彙整及保護個人識別資訊 (PII)。
為協助判斷每個狀態所花費的時間分配情形,AlloyDB 適用的進階查詢洞察功能會將每個正規化查詢負載分配到等待事件和等待事件類型。
您可以使用「延遲時間」圖表研究查詢延遲時間。延遲時間是指完成正規化查詢所需的實際時間。並行查詢的延遲時間以實際經過時間為計算單位,即便您為了執行部分查詢而使用多個核心,導致資料庫負載超過查詢所需的量也一樣。
您可以按百分位數篩選,查看第 50、第 95 或第 99 個百分位數,藉此偵測不符合預期執行時間的查詢。如要分析正規化查詢的歷史延遲時間,請變更時間範圍。
分析正規化查詢
查詢計畫會針對查詢樣本細分當中的不同作業,讓您瞭解及分析正規化查詢。
查詢計畫範例會提供 EXPLAIN ANALYZE
檢視畫面,顯示與正規化查詢相關的查詢計畫範例。這些是已執行的查詢計畫,可細分查詢計畫中每項作業的有效時間。
如要查看範例查詢計畫,請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
選擇資料庫和使用者。
選擇要顯示資料的總執行時間,例如 1 或 6 小時,或是自訂時間。
在「各資料庫負載的最大維度」表格中,按一下查詢。
在「查詢計畫範例」中,按一下圖表上的任一點,即可查看該查詢的查詢計畫。
使用標記監控及排解應用程式效能問題
進階查詢洞察功能提供以應用程式為中心的監控服務,並簡化以物件關係對映 (ORM) 建構的應用程式效能診斷程序。查詢標記有助於找出較高層級建構中的問題,例如使用商業邏輯、微服務或其他建構。您可以在應用程式中使用標記,協助您執行下列操作:
- 監控資料庫效能。
- 使用 Sqlcommenter 找出應用程式程式碼造成的效能問題。
- 分析資料庫負載。
- 查看每個標記的負載。
如要瞭解如何在查詢洞察中使用標記,請參閱使用查詢洞察提高查詢效能。
排解資料庫層的應用程式問題
進階查詢洞察提供脈絡內端對端追蹤記錄檢視畫面,協助您瞭解特定要求在資料庫層級的應用程式問題。您可透過情境式端對端應用程式追蹤記錄,判斷有問題的查詢來源,例如模型、檢視畫面、控制器和路徑。
啟用 OpenTelemetry 後,系統會將範圍資訊連同 SQL 註解中的標記資訊傳送至資料庫。應用程式到 Cloud Logging 的追蹤記錄會連結至資料庫查詢計畫追蹤記錄,以找出問題來源。
如要查看脈絡內追蹤記錄,請按照下列步驟操作:
前往 Google Cloud 控制台的「Clusters」(叢集) 頁面。
在叢集和執行個體清單中,按一下執行個體。
按一下「查詢洞察」。
選擇資料庫和使用者。
按一下「各資料庫負載的最大維度」表格中的任何項目。
在「查詢洞察詳細資料」頁面中,按一下「端對端」。
您也可以使用 Cloud Trace,查看查詢計畫中每個步驟的端對端追蹤記錄。如要存取 Cloud Trace,請依序選取「Operations」>「Trace」。
常見問題
本節提供進階查詢洞察功能常見問題的解答。
為什麼查詢字串遭到截斷?
根據預設,進階查詢洞察會顯示 10 KB 的查詢字串。您可以將顯示大小增加至 100 KB。
為什麼資料庫負載圖表中的 CPU 負載會高於最高核心線?
CPU 負載會將執行時間和等待 Linux 排程器排定伺服器程序執行的時間納入考量,因此 CPU 負載可能會超過最大核心數。
可以使用標準查詢洞察指標嗎?
可以。標準查詢洞察會產生可透過 Stackdriver 存取的計數器。您可以使用 Cloud Monitoring API 和 Metrics Explorer UI 取得這些指標。詳情請參閱Google Cloud 指標。
查詢字串長度上限為何?
標準查詢洞察外掛程式的查詢字串長度上限為 4.5 KB 字元。進階查詢洞察的預設字串長度為 10 KB,上限為 100 KB。
次要叢集是否支援進階查詢洞察功能?
您無法在有次要執行個體的叢集上啟用進階查詢洞察功能。在叢集上建立次要執行個體前,請務必先停用叢集中所有執行個體的進階查詢洞察功能。