了解統計資料

已完成

當查詢執行時,其必須建立計畫才能決定如何存取資料。 例如,若 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;

pg_stat_activity 查詢的螢幕擷取畫面。

關閉 pg_stat_statements

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

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

  1. 前往 Azure 入口網站,並選取適用於 PostgreSQL 的 Azure 資料庫伺服器。

  2. 選取 [伺服器參數],然後巡覽至 pg_stat_statements.track 設定。

    pg_statements 命令的螢幕擷取畫面。

  3. 若您想要關閉追蹤,請選取 [無]

  4. 如需更精準的追蹤,請選取 [全部]

  5. 預設設定為 [熱門]

  6. 選取 [儲存]。