了解統計數據
當查詢執行時,它必須建立計劃來決定如何存取數據。 例如,如果 SELECT 查詢傳回每個數據列,則使用索引並無好處,掃描整個數據表會更有效率。 在這種情況下,規劃查詢相當簡單,但大多數的查詢計劃並不那麼容易解決。
試想一個您正在執行查詢的案例,該查詢會搜尋介於美金 $10.00 到 $20.00 元之間的每個訂單。 一開始,我們不知道查詢是否傳回數據表中的所有數據,或只是一個小子集。 在看到數據之前,這個未知狀況使得很難規劃查詢策略。 如果我們知道數據表包含購買價格介於 $1.00 到 $800.00 之間的訂單,則索引可用來搜尋一小部分的數據。 不過,仍然可能沒有足夠的資訊來產生適當的查詢計劃。 事實上,雖然訂單的購買價格介於 $1.00 到 $800.00 美元之間,但 95% 的訂單介於美金 $10.00 到 $20.00 美元之間,掃描資料實際上是最有效的計畫。
在上述範例等案例中,PostgreSQL 需要詳細的統計數據,才能使用最佳的查詢計劃。
若要監視規劃和執行統計數據,有一個名為 pg_stat_statements的PostgreSQL擴充功能。 pg_stat_statements 預設會在適用於 PostgreSQL 的 Azure 資料庫中啟用,並允許 pg_read_all_stats 角色的成員使用多個 pg_stat 檢視來查詢統計數據。 下列查詢會使用 pg_stat_activity 檢視傳回查詢活動:
SELECT * FROM pg_stat_activity;
關閉 pg_stat_statements
如果您的查詢是唯一的,而且您不會定期重複相同的查詢,則歷史查詢數據較不實用。 此外,若您不使用 pg_stat 檢視,則該歷程記錄查詢資料無法提供任何好處。 維護 pg_stat_statements 的額外負荷最多為 50%,您可以在這些案例中關閉追蹤 pg_stat_statements。
若要關閉 pg_stat_statements追蹤,請執行下列步驟:

