共用方式為


查詢存放區的使用方式情節 - 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器 (部分機器翻譯)

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

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

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

識別並調整成本昂貴的查詢

識別長時間執行的查詢

使用伺服器 azure_sys 資料庫上的查詢存放區檢視,以快速識別最長執行的查詢。 這些查詢通常會消耗最多資源。 最佳化執行時間最長的問題可提高效能,方法是釋放資源以供系統上執行的其他查詢使用。

使用效能差異鎖定查詢

查詢存放區會將效能資料分割成時間範圍,讓您能夠追蹤一段時間內的查詢效能。 這可協助您確切識別哪些查詢會增加所花費的整體時間。 如此一來,您就可以對工作負載進行具有針對性的疑難排解。

調整佔用大量資源的查詢

當您識別效能欠佳的查詢時,您要採取的動作取決於問題的本質。 其中一些動作可能包括:

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

A/B 測試

使用查詢存放區,可比較您計劃引進應用程式變更或移轉之前和之後的工作負載效能。 使用查詢存放區來評估變更對工作負載效能所造成影響的案例範例如下:

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

在上述任一案例中,套用下列工作流程:

  1. 在計劃性變更之前使用查詢存放區執行您的工作負載,以產生效能基準。
  2. 在受控制的時間點即時套用所需變更。
  3. 繼續執行工作負載一段足夠的時間,才能產生變更之後的系統效能影像。
  4. 比較變更之前和之後的結果。
  5. 決定是保留變更還是復原。

識別並改善即興工作負載

某些工作負載沒有可調整的主控查詢,無法提高整體的應用程式效能。 這些工作負載通常具有相對大量的唯一查詢,各個查詢都會耗用一部分的系統資源。 每個唯一查詢都不會經常執行,因此其個別執行階段耗用量並不重要。 另一方面,假設該應用程式會不停產生全新的查詢,則絕大部分的系統資源會耗費在查詢編譯上,這並不能達到最佳效能。 通常,如果您的應用程式會產生查詢 (而不是使用預存程序或參數化查詢),或者它依賴於預設會產生查詢的物件關聯式對應架構,就會發生這種情況。

如果您能夠掌控應用程式程式碼,則可以考慮重新撰寫資料存取層來使用預存程序或參數化查詢。 不過,您也可以改善這種情況而無需變更應用程式,只要使用相同的查詢雜湊,針對整個資料庫 (所有查詢) 或個別查詢範本強制執行查詢參數化即可。

後續步驟