查詢存放區 的使用案例 - 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器

您可以在各種不同的案例中使用 查詢存放區,其中追蹤和維護可預測的工作負載效能非常重要。 請參考下列範例:

  • 識別和調整最昂貴的查詢。
  • A/B 測試。
  • 在升級期間保持效能穩定。
  • 識別和改善即興工作負載。

識別和調整昂貴的查詢

識別執行時間最長的查詢

在伺服器的azure_sys資料庫上使用 查詢存放區 檢視,快速識別執行時間最長的查詢。 這些查詢通常會耗用最多的資源。 優化執行時間最長的查詢,可以釋出系統上執行的其他查詢所使用的資源,以改善效能。

以效能差異為目標的查詢

查詢存放區 將效能數據分割成時間範圍,因此您可以追蹤一段時間的查詢效能。 這可協助您確切識別哪些查詢有助於增加整體花費的時間。 因此,您可以針對工作負載進行目標疑難解答。

調整昂貴的查詢

當您識別具有次佳效能的查詢時,您採取的動作取決於問題的本質。 其中一些動作可能是:

  • 針對查詢所使用的基礎資料表,確定其中的統計資料為最新。
  • 請考慮重寫昂貴的查詢。 例如,利用查詢參數化並減少動態 SQL 的使用。 在讀取數據時實作最佳邏輯,例如在資料庫端套用數據篩選,而不是在應用程式端執行。

A/B 測試

使用 查詢存放區 比較應用程式變更之前和之後的工作負載效能,或移轉前後。 使用 查詢存放區 評估工作負載效能變更影響的範例案例:

  • 在 PostgreSQL 的主要版本之間移轉。
  • 推出新版本的應用程式。
  • 修改授與伺服器的資源數量。
  • 變更任何會影響伺服器行為的伺服器參數。
  • 在成本昂貴查詢所參考資料表上建立遺漏的索引。
  • 從單一伺服器 適用於 PostgreSQL 的 Azure 資料庫 移轉至 適用於 PostgreSQL 的 Azure 資料庫 彈性伺服器。

在這些案例中,請套用下列工作流程:

  1. 在規劃的變更之前,使用 查詢存放區 執行您的工作負載,以產生效能基準。
  2. 在受控制的時間點套用所需的變更。
  3. 繼續執行工作負載,足以在變更之後產生系統的效能映像。
  4. 比較變更前後的結果。
  5. 決定是否要保留變更或回復。

識別及改善即興工作負載

某些工作負載沒有可調整的主控查詢,無法提高整體的應用程式效能。 這些工作負載通常會以相對大量的唯一查詢來描述,每個查詢都會耗用系統資源的一部分。 每個唯一查詢不常執行,因此個別的運行時間耗用量並不重要。 另一方面,假設應用程式一直產生新的查詢,大部分的系統資源都會花在查詢編譯上,這不是最佳的。 通常,如果您的應用程式產生查詢(而不是使用預存程式或參數化查詢),或它依賴預設產生查詢的對象關係型對應架構,就會發生這種情況。

如果您控制應用程式程式代碼,您可以考慮重寫資料存取層以使用預存程式或參數化查詢。 不過,如果沒有應用程式變更,也可以藉由強制整個資料庫(所有查詢)或具有相同查詢哈希的個別查詢範本進行查詢參數化,來改善這種情況。

後續步驟