智慧效能

已完成

SQL Server 和 Azure SQL 包含自動化可有助為應用程式提供一致的效能。 這些自動化功能統稱為智慧型效能。

Azure SQL 的智慧效能包括智慧型查詢處理、自動計畫修正及自動調整。

智慧查詢處理

智慧型查詢處理 (IQP) 是一套內建在查詢處理器中的新功能。 可利用最新的資料庫相容性層級予以啟用。 應用程式可以使用最新的資料庫相容性層級來提升效能。 不需要變更程式碼。 「資料表變數延後編譯」是一種 IQP 範例,其可讓使用資料表變數的查詢執行得更快。

Azure SQL 資料庫和Azure SQL 受控執行個體支援使用 IQP 作為 SQL Server 2019 和更新版本所需的相同資料庫相容性層級(150)。

自動計劃修正

SQL Server 最難解決的其中一個效能問題就是查詢計劃迴歸。 當重新編譯相同查詢,且新計劃導致效能變差時,就會發生查詢計劃迴歸。

SQL Server 2017 和 Azure SQL Database 藉由分析查詢存放區中的資料來引進自動計劃修正概念。 當啟用包含 SQL Server 2017 (或更新版本) 和 Azure SQL Database 資料庫的查詢存放區時,SQL Server 引擎會找尋查詢計劃迴歸並提供建議。 您可以在動態管理檢視 (DMV) 中看到 sys.dm_db_tuning_recommendations 這些建議。 這些建議包括可在效能狀態良好時,手動強制執行查詢計劃的 T-SQL 陳述式。

如果您對這些建議有信心,您可以讓 SQL Server 在遇到迴歸時自動強制執行計畫。 使用 ALTER DATABASEAUTOMATIC_TUNING 引數啟用自動計畫更正。

針對 Azure SQL Database,您也可以透過 Azure 入口網站或 REST API 中的自動調整選項來啟用自動計劃修正。 啟用查詢存放區的資料庫一律會啟用自動計劃修正建議 (在 Azure SQL Database 和 Azure SQL 受控執行個體中為預設設定)。 針對新的資料庫,預設會針對 Azure SQL 資料庫啟用自動計畫修正 ( FORCE_PLAN )。

Azure SQL Database 的自動調整

自動計畫修正是 Azure SQL 和 SQL Server 中的自動調整範例,但自動調整 Azure SQL 資料庫的獨特層面是自動編制索引。

注意

SQL 受控執行個體目前無法使用自動編制索引。

雲端提供了一種方法,可讓 Microsoft 以效能建議的形式提供其他服務,並在計劃建議之外進行自動化。 這項功能稱為 Azure SQL Database 的自動調整。 這些服務會執行為背景程式,其會分析 Azure SQL Database 執行個體的效能資料。 所有資料庫訂閱的價格都已包含這些服務。

主要案例自動調整旨在解決有關索引的問題。 自動調整會分析來自資料庫遙測的資料,包括查詢存放區和 DMV,以建議建立可改善應用程式效能的索引。 此外,您也可以啟用自動調整來自動建立可改善查詢效能的索引。 自動調整也會監視索引變更,並建議放棄或自動放棄不會改善查詢效能的索引。

Azure SQL Database 的自動調整以保守方式來建議索引。 這表示可能會出現在 DMV 中的 sys.dm_db_missing_index_details 建議,例如 ,或查詢顯示計畫,可能不會立即顯示為自動調整的建議。 自動調整服務會監視一段時間的查詢,並使用機器學習演算法提出建議,以真正影響查詢效能。

請注意,索引建議其自動調整並不考慮索引對插入、更新或刪除等作業效能所造成的任何額外負荷。 通常,自動索引功能所建立的新非叢集索引會對效能產生重大正面影響。

參數化查詢代表其他的自動調整案例。 具有非參數化值的查詢可能會導致效能額外負荷,因為每次非參數化值不同時,都會重新編譯執行計畫。 在許多情況下,具有不同參數值的相同查詢會產生相同的執行計畫。 不過,這些計劃仍會個別加入至計畫快取。 重新編譯執行計畫的程序會使用資料庫資源、增加查詢持續時間,以及造成計畫快取溢位。 這些事件接著會導致計劃從快取中收回。

您可以使用 參數敏感性計畫 (PSP) 優化 來解決此案例。 PSP 最佳化會自動為單一參數化陳述式啟用多個使用中快取計劃。 快取的執行計畫會根據客戶提供的執行時間參數值來容納不同的資料大小。

Azure SQL Database 中使用自動調整的索引範例

下列是 Azure 入口網站中的範例,其中根據一段時間的工作負載分析來對資料庫提出索引建議。 我們尚未將足夠的活動傳送至您的沙箱 Azure SQL 資料庫,以產生這類建議。 CREATE INDEX 建議會在擷取工作負載時產生,而不是在此練習的小型時間範圍內產生。

Screenshot of index recommendation notification.

在Azure 入口網站 的 [效能概觀 ] 中,您可以看到前五個耗用資源查詢的效能資訊,如查詢存放區所示。 以及一項建議。

Screenshot of Query Performance Overview.

Azure 入口網站也提供查詢效能深入解析,這是以查詢存放區為基礎的視覺化報表工具。 在此範例中,[查詢效能深入解析] 會顯示耗用最多資源的特定查詢,以及如何改善查詢效能的建議。

Screenshot of Query Performance Insights.

Azure 入口網站可供直接查看所有效能建議。

Screenshot of Performance Recommendations.

在此檢視中,您會看到任何自動調整動作的特定建議和歷程記錄。 在索引的案例中會顯示索引和資料表其詳細資料。 [自動化] 選項可啟用自動調整。

Screenshot of automatic tuning options.

您可在資料庫伺服器或資料庫層級上設定自動調整選項。 如果您在此案例中啟用自動調整,則會自動建立索引。

您也可以透過 sys.database_automatic_tuning_options DMV 檢視自動調整選項。

注意

索引和參數敏感計畫的建議和自動化不適用於Azure SQL 受控執行個體或 SQL Server。 可使用自動計劃修正。

如果選取建議的索引,即可取得特定索引更多的詳細資料。

Screenshot of create index recommendation.

您會看到索引、資料表和所需空間的詳細資料。 您可選擇套用建議的索引,或檢視要套用索引的 T-SQL 指令碼。

Screenshot of the index recommendation script.

請注意,索引是以線上索引形式套用的非叢集索引。 不論是手動或透過自動調整根據建議套用索引後,建議引擎也會監視已套用索引的查詢效能一段時間。 如果查詢效能比套用索引之前還差,則建議放棄該索引。

知識檢查

1.

哪一個是智慧型查詢處理 (IQP) 的最佳描述?

2.

自動計劃修正可協助建議並修正哪種類型的效能案例?

3.

Azure SQL Database 的自動調整會根據哪些資訊提供建議並建立索引?