了解統計資料

已完成

當查詢執行時,其必須建立計畫才能決定如何存取資料。 例如,若 SELECT 查詢會傳回每個資料列,則使用索引毫無益處,掃描整個資料表會更有效率。 在此案例中,規劃查詢很簡單,但大部分的查詢計劃並非這麼簡單可解決。

試想一個您正在執行查詢的案例,該查詢會搜尋介於美金 $10.00 到 $20.00 元之間的每個訂單。 一開始,我們不知道這是所有資料還是一小部分,因此在看到資料之前,很難規劃查詢策略。 若我們知道資料表包含購買價格介於美金 $1.00 到 $800.00 元之間的訂單,這可能會導致我們使用索引來搜尋一小部分的資料;然而,這仍然無法取得查詢計劃的足夠資訊。 事實上,雖然訂單的購買價格介於美金 $1.00 到 $800.00 元之間,但 95% 的訂單介於美金 $10.00 到 $20.00 元之間,掃描資料實際上是最有效的計畫。

使用上述範例 PostgreSQL 等案例時,需要詳細的統計資料,才能使用最佳查詢計劃。

若要監視規劃與執行統計資料,有一個名為 pg_stat_statements 的 PostgreSQL 延伸模組。 根據預設,會在適用於 PostgreSQL 的 Azure 資料庫中啟用 pg_stat_statements,並允許 pg_read_all_stats 角色的成員使用多個 pg_stat 檢視來查詢統計資料。 下列查詢會使用 pg_stat_activity 檢視傳回查詢活動:

SELECT * FROM pg_stat_activity;

Screenshot of pg_stat_activity query.

關閉 pg_stat_statements

若您的查詢為唯一,且不會定期重複相同的查詢,則歷程記錄查詢資料較不實用。 此外,若您不使用 pg_stat 檢視,則該歷程記錄查詢資料無法提供任何好處。 維護 pg_stat_statements 的額外負荷最多為 50%,您可以在這些案例中關閉追蹤 pg_stat_statements

若要關閉追蹤 pg_stat_statements,請執行下列步驟:

  1. 前往 Azure 入口網站,並選取適用於 PostgreSQL 的 Azure 資料庫伺服器。
  2. 選取 [伺服器參數],然後巡覽至 pg_stat_statements.track 設定。 Screenshot of pg_statements.track setting.
  3. 若您想要關閉追蹤,請選取 [無]
  4. 如需更精準的追蹤,請選取 [全部]
  5. 預設設定為 [熱門]
  6. 選取 [儲存]。