監視資料庫效能
您用於疑難排解資料庫效能的疑難排解技術在 Azure SQL 中大部分會維持不變。
通常用於監視和疑難排解 SQL Server 的所有工具也適用於在 Azure 虛擬機器上執行的 SQL Server,包括效能監視器等工具。 不過,由於平台即服務 (PaaS) 的性質,Azure SQL Database 和 Azure SQL 受控執行個體會提供不同的工具組。 接下來,我們將探索 Azure PaaS 供應項目的特定工具及其功能。
比較效能結果與您的基準
建立基準的流程通常在實際資料庫移轉之前就會開始。 這牽涉到收集一組完整的資料度量,以反映資料庫在其原始環境中的標準效能。 這些度量可能包括,但不限於 CPU 使用量、回應時間、交易速率和錯誤率。
此基準可作為參考點,與移轉資料庫的效能進行比較。 不過,此基準資料與移轉資料庫的效能計量的評估或比較只有在移轉完成後才會發生。
移轉後,會監視並測量新資料庫環境的效能。 然後,這些移轉後計量會與移轉前基準進行比較,以找出任何不一致或效能問題。 這項比較有助於了解移轉對資料庫效能是否有任何負面影響,或是否有地方需要最佳化以提升效能。
自動微調
自動微調是持續從工作負載學習、識別潛在問題和改善,並根據查詢存放區資料提供建議的功能。 它會適應結構描述或索引修改或資料更新所造成的執行計畫變更。
您可以使用 Azure 入口網站來手動套用微調建議,或是讓自動微調獨立自主地為您套用微調建議。 在 Azure SQL Database 中,也可以藉由微調索引來增強查詢效能。
自動計劃修正
在查詢存放區的協助下,資料庫引擎可以判斷查詢執行計畫的效能何時降低。 雖然您可以透過使用者介面手動識別迴歸計畫,但查詢存放區也提供可自動通知您的選項。
在給出的範例中,計畫識別碼 1旁會出現核取記號,代表已強制執行計畫。
在您啟用自動調整之後,資料庫引擎就會在下列情況下自動強制執行任何建議的查詢執行計畫:
- 上一個計畫的錯誤率超過建議方案的錯誤率
- 估計的 CPU 增益超過10秒
- 強制計畫表現比上一個計畫更好
當自動計畫強制發生時,資料庫引擎會套用最後一個良好的計畫並監視其效能。 如果強制計畫的表現不如上一個計畫,則會遭到取消並會編譯新的計畫。 如果它的表現比上一個計畫好,它會保持強制狀態,直到重新編譯發生為止。
使用下列 T-SQL 查詢來啟用自動計畫更正。
ALTER DATABASE [WideWorldImporters] SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);
您可以透過動態管理檢視 sys.dm_db_tuning_recommendations
來檢視自動微調建議。 此 DMV 會提供建議的詳細資料、類型和狀態。 若要確認資料庫已啟用自動微調,請參考檢視 sys.database_automatic_tuning_options
。
Azure SQL 受控執行個體的自動微調僅支援 FORCE LAST GOOD PLAN
。
要啟用自動微調的通知,請參閲 自動微調的電子郵件通知
自動索引管理
Azure SQL Database 支援自動微調索引。 這表示經過一段時間後,資料庫會有能力了解現有的工作負載,並提供新增或移除索引的建議,以改善效能。 正如同強制改善的查詢計畫,資料庫可以設定為允許根據現有的索引效能建立或移除自動索引。
或者,使用下列查詢來查看資料庫中所啟用的自動微調功能。
SELECT name,
desired_state_desc,
actual_state_desc,
reason_desc
FROM sys.database_automatic_tuning_options
索引建立需要大量資源,而且必須確保其成功建立對於您的工作負載沒有任何的負面影響。
Azure SQL 資料庫會監視自動實作新索引所需的資源,以避免效能降低。 微調動作會延遲到資源可供使用,例如,當現有工作負載所需的資源阻止索引的建立時。
探索查詢效能深入解析
任何資料庫效能最佳化工作的初始階段都牽涉到找出最耗用資源的查詢。 在先前的 SQL Server 版本中,這需要廣泛的追蹤和一組複雜的 SQL 指令碼,也讓資料收集流程變得很費力。
找出有問題的查詢
Azure SQL Database 提供名為 [查詢效能深入解析] 的工具,讓系統管理員快速識別高成本的查詢。 您可以在 [智慧型效能] 區段底下的 Azure SQL 資料庫主要刀鋒視窗中找到它。
Azure SQL 資料庫中的查詢效能深入解析會提供三種篩選選項: 長時間執行的查詢、耗用資源最高的查詢 (這是預設) 或自訂篩選。 它會顯示前五個查詢並依所選資源排序,例如 CPU、資料 IO 或記錄 IO。 您可以選取下方格線內的資料列,深入了解個別的查詢。 每個資料列都會以符合橫條圖中色彩的不同色彩標示。
自訂索引標籤的彈性會比其他選項更大。 它允許更量身打造的效能資料檢查,其中包含數個會影響資料視覺效果的下拉式功能表。 關鍵計量包括 CPU、記錄 IO、資料 IO和記憶體,這是由您 Azure SQL 資料庫服務層級和計算資源所限制的效能層面。
如果深入檢視個別查詢,我們可看到查詢識別碼和查詢本身,以及查詢彙總類型和相關聯的時間週期。
雖然查詢效能深入解析不會顯示查詢的執行計畫,但您可以快速識別該查詢,並使用此資訊從您資料庫中的查詢存放區擷取計畫。
警示
可以使用 Azure 入口網站為 Azure SQL 資料庫中的資料庫設定效能警示。 當特定計量 (例如資料庫大小或 CPU 使用量) 達到閾值時,這些警示可以透過電子郵件通知您或呼叫 Webhook。
SQL Database 與 SQL 受控執行個體的設定警示流程很相似。 若要設定 Azure SQL 資料庫的效能警示,請瀏覽至 [監視] 區段,然後選取 [警示]。 您必須從該處建立新的警示規則、定義條件,以及建立動作群組。
如需 Azure SQL 受控執行個體警示的詳細資訊,您可以造訪 [使用 Azure 入口網站建立 Azure SQL 受控執行個體警示]。 如果你對 Azure SQL 資料庫感興趣,請參閱 [使用 Azure 入口網站為 Azure SQL 資料庫和 Azure Synapse Analytics 建立警示]。
Azure SQL 深入解析
Azure SQL 深入解析提供互動式且現成可用的視覺效果,以增強您的監視體驗。 您可以自訂遙測收集和頻率,並將多個來源的資料結合成單一監視體驗。 此外也會保留在一段時間內的計量值集,讓您能夠調查過去可能遇到的效能問題。
重要
建議只有在移轉的資料庫已完全整合到生產環境之後,才設定 Azure SQL 深入解析。 這可防止工具在移轉和測試階段擷取雜訊資料。
若要開始使用 SQL 深入解析,您需要專用的虛擬機器,以監視和從 SQL 伺服器遠端收集資料。 此專用虛擬機器必須安裝下列元件:
- Azure 監視器代理程式
- 工作負載深入解析擴充功能
此外,需要下列元件才能設定 SQL Insights。
監視設定檔 – 要監視的群組伺服器、執行個體或資料庫。
Log Analytics 工作區 –傳送 SQL 監視資料的位置。
集合設定 – 您可以自訂設定檔的資料收集。 預設設定涵蓋大部分的監視案例,而且通常無須進行變更。
擴充事件
擴充事件 工具是強固的監視系統,可擷取詳細的伺服器和資料庫活動。 您可以套用篩選來減少資料收集額外負荷,並將焦點放在特定的效能問題。 所有 Azure SQL 供應項目都支援擴充事件。
雖然擴充事件的設定與 SQL Server、Azure SQL資料庫和 Azure SQL 受控執行個體類似,但本課程模組著重y於其差異,而不是教導安裝流程。
以下是在 Azure SQL Database 上設定擴充事件時的一些主要差異:
Transact-SQL: 在 SQL Server 上執行
CREATE EVENT SESSION
命令時,您會使用ON SERVER
子句。 但在 Azure SQL Database 上,您反而會使用ON DATABASE
子句。ON DATABASE
子句亦能套用到ALTER EVENT SESSION
和DROP EVENT SESSION
Transact-SQL 命令。 Azure SQL Database 僅支援資料庫範圍工作階段。資料庫範圍工作階段: 在 Azure SQL Database 的單一租用戶隔離模型上找到擴充事件。 一個資料庫中的擴充事件無法從另外一個資料庫存取資料或事件。 您無法在主資料庫的內容中,發出
CREATE EVENT SESSION
陳述式。儲存體: 由於您無法存取資料庫位於 Azure SQL Database 之伺服器的檔案系統,因此您可以設定儲存體帳戶目標來儲存擴充事件工作階段。