查詢存放區的使用案例 - 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
適用範圍:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器
您可以在各種不同的案例中使用查詢存放區,其中追蹤和維護可預測的工作負載效能非常重要。 請參考下列範例:
- 識別並調整昂貴的查詢。
- 執行 A/B 測試。
- 識別並改善即興工作負載。
識別並調整成本昂貴的查詢
識別長時間執行的查詢
使用伺服器資料庫的查詢存放區檢視 azure_sys
,快速識別執行時間最長的查詢。 這些查詢通常會耗用最多的資源。 最佳化執行時間最長的問題可提高效能,方法是釋放資源以供系統上執行的其他查詢使用。
使用效能差異鎖定查詢
查詢存放區會將效能數據分割成時間範圍,以便追蹤一段時間的查詢效能。 這可協助您確切識別哪些查詢會增加所花費的整體時間。 因此,您可以對工作負載進行有範圍的疑難解答。
調整佔用大量資源的查詢
當您識別效能欠佳的查詢時,您要採取的動作取決於問題的本質。 其中一些動作可能包括:
- 針對查詢所使用的基礎資料表,確定其中的統計資料為最新。
- 請考慮重新撰寫成本昂貴的查詢。 例如,利用查詢參數化並減少臨機操作 SQL 的使用。 在讀取資料時實作最佳邏輯,例如在資料庫端上套用資料篩選,而不是在應用程式端上套用。
執行 A/B 測試
使用查詢存放區來比較您計劃引進的應用程式變更之前和移轉前後的工作負載效能。 使用查詢存放區評估工作負載效能變更影響的範例案例:
- 在 PostgreSQL 主要版本之間移轉。
- 推出新版本的應用程式。
- 修改授與伺服器的資源數量。
- 變更任何會影響伺服器行為的伺服器參數。
- 在成本昂貴查詢所參考資料表上建立遺漏的索引。
- 從適用於 PostgreSQL 的 Azure 資料庫單一伺服器移轉至適用於 PostgreSQL 的 Azure 資料庫彈性伺服器。
在上述任一案例中,套用下列工作流程:
- 在規劃的變更之前,使用查詢存放區執行您的工作負載,以產生效能基準。
- 在受控制的時間點即時套用所需變更。
- 在足夠的時間繼續執行工作負載,讓您可以在變更之後清楚檢視系統的效能。
- 比較變更之前和之後的結果。
- 決定是保留變更還是復原。
識別並改善即興工作負載
某些工作負載沒有可調整的主控查詢,無法提高整體的應用程式效能。 這些工作負載通常具有相對大量的唯一查詢,各個查詢都會耗用一部分的系統資源。 每個唯一查詢都不會經常執行,因此其個別執行階段耗用量並不重要。 另一方面,假設該應用程式會不停產生全新的查詢,則絕大部分的系統資源會耗費在查詢編譯上,這並不能達到最佳效能。 通常,如果您的應用程式會產生查詢 (而不是使用預存程序或參數化查詢),或者它依賴於預設會產生查詢的物件關聯式對應架構,就會發生這種情況。
如果您能夠掌控應用程式程式碼,則可以考慮重新撰寫資料存取層來使用預存程序或參數化查詢。 不過,如果沒有應用程式變更,也可以改善這種情況,方法是強制整個資料庫(所有查詢)或具有相同查詢哈希的個別查詢範本進行查詢參數化。