Share via


資料庫監看員資料收集和資料集 (預覽版)

適用於:Azure SQL 資料庫Azure SQL 受控執行個體

資料庫監看員會從 SQL 系統檢視表收集監視資料,並以資料集的形式將其內嵌至資料存放區。 每個資料集皆為使用來自一或多個 SQL 系統檢視表的資料所形成。 針對每個資料集,資料存放區中都有個別資料表。

資料集合

資料庫監看員使用 T-SQL 查詢定期收集監視資料。 每次執行查詢時收集的資料稱為樣本。 樣本收集頻率因資料集而異。 例如,SQL 效能計數器等經常變更的資料,可能每 10 秒收集一次,大部分靜態資料,例如資料庫設定,則可能每五分鐘收集一次。 如需詳細資訊,請參閱資料集

資料庫監看員會利用 Azure 資料總管中的串流擷取Microsoft Fabric 中的即時分析,來提供近即時的監視。 一般來說,收集的 SQL 監視資料在不到 10 秒內即可供報告和分析使用。 您可以使用擷取統計資料連結,在資料庫監看員儀表板上監視資料擷取延遲。

資料庫監看員與應用程式工作負載之間的互動

啟用資料庫監看員不太可能對應用程式工作負載造成任何可觀察到的影響。 較頻繁的監視查詢通常會在次秒級範圍內執行,而可能需要更多時間的查詢,例如傳回大型資料集,則會以不頻繁的間隔執行。

為了進一步降低對應用程式工作負載的影響風險,Azure SQL 資料庫中的所有資料庫監看員查詢都會作為內部工作負載進行資源控管。 當存在資源爭用時,監視查詢的資源使用量僅限於可供資料庫或彈性集區使用的資源總數的一小部分。 這樣一來,應用程式工作負載即會優先於監視查詢。

在 Azure SQL 受控執行個體中,您可以視需要以類似的方式監視查詢,從而讓 Resource Governor 管理資源使用量。

下列範例會在 SQL 受控執行個體上設定 Resource Governor。 當沒有 CPU 爭用時,資料庫監看員查詢會將 CPU 使用量限制為 30%。 當存在 CPU 爭用時,此設定會為監視查詢保留 5% 的 CPU,並將其 CPU 使用量限制為 10%。 其也會將每個監視查詢的記憶體授與大小限制為可用記憶體的 10%。

USE master;
GO

CREATE OR ALTER FUNCTION dbo.dbw_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN

DECLARE @WorkloadGroupName sysname = 'default';

IF APP_NAME() IN (N'SQLExternalMonitoring',N'x_ms_reserved_sql_external_monitoring')
    SET @WorkloadGroupName = N'database_watcher_workload_group'

RETURN @WorkloadGroupName;

END;
GO

BEGIN TRY

IF EXISTS (
          SELECT 1
          FROM sys.resource_governor_configuration
          WHERE classifier_function_id <> 0 OR is_enabled <> 0
          )
    THROW 50001, 'Resource Governor is already configured. No changes were made.', 1;

CREATE RESOURCE POOL database_watcher_resource_pool
WITH (MIN_CPU_PERCENT = 5, MAX_CPU_PERCENT = 10, CAP_CPU_PERCENT = 30);

CREATE WORKLOAD GROUP database_watcher_workload_group
WITH (REQUEST_MAX_MEMORY_GRANT_PERCENT = 10)
USING database_watcher_resource_pool;

ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.dbw_classifier);

ALTER RESOURCE GOVERNOR RECONFIGURE;

END TRY
BEGIN CATCH
    THROW;
END CATCH;

注意

若要讓 Resource Governor 設定在 SQL 受控執行個體的高可用性次要複本上立即生效,請連線到複本並執行 ALTER RESOURCE GOVERNOR RECONFIGURE;

若要避免並行衝突,例如資料收集與 Azure SQL 資源上執行的資料庫工作負載之間的封鎖和鎖死,監視查詢會使用短鎖定逾時和低鎖死優先順序。 如果發生並行衝突,則應用程式工作負載查詢為優先。 根據應用程式工作負載模式,這可能會導致某些資料集收集的資料偶爾出現差距。

彈性集區中的資料收集

若要監視彈性集區,您必須將集區中的一個資料庫指定為錨點資料庫。 資料庫監看員連線到錨點資料庫。 由於監看員會保留VIEW SERVER PERFORMANCE STATE 權限,錨點資料庫中的系統檢視表可提供整個集區的監視資料。

提示

您可以將空白資料庫新增至您想要監視的每個彈性集區,並將其指定為錨點資料庫。 如此一來,您就可以在集區中移入和移出其他資料庫,或是在集區之間移動其他資料庫,而不會中斷彈性集區監視。

從錨點資料庫收集的資料包含集區層級計量,以及集區中每個資料庫的特定資料庫層級效能計量。 例如,這包括每個資料庫的資源使用率和要求率計量。 在某些情況下,將彈性集區當做一個整體來監視,就不需要監視集區中的每個個別資料庫。

某些監視資料 (例如集區層級 CPU、記憶體和儲存體使用率,以及等候統計資料) 只會在彈性集區層級進行收集,因為其無法歸類為集區中的個別資料庫。 相反地,某些其他資料 (例如查詢執行階段統計資料、資料庫屬性、資料表和索引中繼資料) 僅適用於資料庫層級。

如果您將彈性集區中的個別資料庫新增為資料庫監看員目標,則亦應將彈性集區新增為目標。 如此一來,您即能更完整地檢視資料庫和集區效能。

監視密集彈性集區

密集彈性集區包含大量資料庫,但計算大小相對較小。 在假設集區中只有少量資料庫同時處於作用中狀態時,此設定可讓客戶將計算資源分派降到最低,以實現大量成本節省。

為避免影響應用程式查詢,可供密集彈性集區中資料庫監看員查詢使用的計算資源會進一步受到限制。 因此,資料庫監看員可能無法從密集彈性集區中的每個資料庫收集監視資料。

提示

若要監視密集彈性集區,請將彈性集區新增為目標,以在集區層級啟用監視。

不建議在密集彈性集區中監視多個個別資料庫。 由於可供資料庫監看員查詢使用的計算資源不足,您可能會發現收集的資料中存在差距,或資料樣本之間的間隔大於預期的間隔。

資料集

本節描述可供每個目標型別使用的資料集,其中包括資料存放區中的收集頻率和資料表名稱。

注意

在預覽期間,可能會新增和移除資料集。 名稱、描述、收集頻率和可用資料行等資料集屬性可能會變更。

資料集名稱 資料表名稱 收集頻率 (hh:mm:ss) 描述
使用中工作階段 sqldb_database_active_sessions 00:00:30 每個資料列都代表一個工作階段,或是正在執行,或是封鎖程式,或是具有開啟的交易。
備份記錄 sqldb_database_sql_backup_history 00:05:00 每個資料列都代表已成功完成的資料庫備份。
變更處理 sqldb_database_change_processing 00:01:00 每個資料列都代表變更處理功能 (例如異動資料擷取或變更摘要 (Azure Synapse Link)) 的彙總記錄掃描統計資料快照。
變更處理錯誤 sqldb_database_change_processing_errors 00:01:00 當使用變更處理功能 (例如異動資料擷取或變更摘要 (Azure Synapse Link)) 時,每個資料列都代表變更處理期間發生的錯誤。
連線性 sqldb_database_connectivity 00:00:30 每個資料列都代表資料庫的連線探查 (登入和查詢)。
異地複本 sqldb_database_geo_replicas 00:00:30 每個資料列都代表主要或次要異地複本,其中包括異地複寫中繼資料和統計資料。
索引中繼資料 sqldb_database_index_metadata 00:30:00 每個資料列都代表索引分割區,並包括索引定義、屬性和操作統計資料。
記憶體使用率 sqldb_database_memory_utilization 00:00:10 每個資料列都代表記憶體 Clerk,並包括資料庫引擎執行個體上 Clerk 的記憶體使用量。
遺漏索引。 sqldb_database_missing_indexes 00:15:00 每個資料列都代表索引,可能會改善查詢效能 (若建立)。
記憶體不足事件 sqldb_database_oom_events 00:01:00 每個資料列都代表資料庫引擎中的記憶體不足事件。
效能計數器 (通用) sqldb_database_performance_counters_common 00:00:10 每個資料列都代表資料庫引擎執行個體的效能計數器。 此資料集包括常用的計數器。
效能計數器 (詳細) sqldb_database_performance_counters_detailed 00:01:00 每個資料列都代表資料庫引擎執行個體的效能計數器。 此資料集包括可能需要進行詳細監視和疑難排解的計數器。
屬性 sqldb_database_properties 00:05:00 每個資料列都代表資料庫,並包括資料庫選項、資源控管限制和其他資料庫中繼資料。
查詢執行階段統計資料 sqldb_database_query_runtime_stats 00:15:00 每個資料列都代表查詢存放區執行階段間隔,並包括查詢執行統計資料。
查詢等候統計資料 sqldb_database_query_wait_stats 00:15:00 每個資料列都代表查詢存放區執行階段間隔,並包括等候類別統計資料。
複本 sqldb_database_replicas 00:00:10 每個資料列都代表資料庫複本,其中包括複寫中繼資料和統計資料。 包括在主要資料庫上收集的主要複本和異地複本,以及在次要資料上收集的次要複本。
資源使用率 sqldb_database_resource_utilization 00:00:15 每個資料列都代表資料庫在時間間隔內的 CPU、資料 IO、記錄 IO 和其他資源使用量統計資料。
工作階段統計資料 sqldb_database_session_stats 00:01:00 每個資料列都代表資料庫的工作階段統計資料摘要,透過非加法工作階段屬性 (例如登入名稱、主機名稱、應用程式名稱等) 進行彙總。
SOS 排程者 sqldb_database_sos_schedulers 00:01:00 每個資料列都代表 SOS 排程者,並包括排程者、CPU 節點和記憶體節點的統計資料。
儲存體 IO sqldb_database_storage_io 00:00:10 每個資料列都代表資料庫檔案,並包括檔案的累積 IOPS、輸送量和延遲統計資料。
儲存體使用率 sqldb_database_storage_utilization 00:01:00 每個資料列都代表資料庫,並包括其儲存體使用量,其中包括 tempdb、查詢存放區和持續版本存放區。
資料表中繼資料 sqldb_database_table_metadata 00:30:00 每個資料列都代表資料表或索引檢視表,並包括中繼資料,例如資料列計數、空間使用量、資料壓縮、資料行和條件約束。
等候的統計資料 sqldb_database_wait_stats 00:00:10 每個資料列都代表等候類型,並包括資料庫引擎執行個體的累積等候統計資料。 針對彈性集區中的資料庫,僅會收集資料庫範圍的等候統計資料。

注意

對於彈性集區中的資料庫,不會收集包含集區層級資料的 SQL Database 資料集。 這包括記憶體使用率記憶體不足事件效能計數器 (通用)效能計數器 (詳細) 資料集。 系統會收集等候統計資料資料集,但只包含資料庫範圍的等候。 這可避免從集區中的每個資料庫收集相同的資料。

集區層級資料會在 SQL 彈性集區資料集中進行收集。 針對指定的彈性集區,效能計數器 (通用)效能計數器 (詳細) 資料集包含集區層級計量和特定資料庫層級計量,例如 CPU資料 IO記錄寫入要求異動等。

通用資料行

針對每個目標型別,資料集都有通用資料行,如下列資料表所述。

資料行名稱 描述
sample_time_utc 觀察資料列中的值的時間 (UTC)。
collection_time_utc 監看員收集資料列的時間 (UTC)。 此資料行存在於收集時間可能與樣本時間不同的資料集中。
replica_type 其中一個:主要HA 次要異地複寫轉寄站具名次要
logical_server_name Azure SQL 資料庫中邏輯伺服器的名稱包含受監視資料庫或彈性集區。
database_name 受監視資料庫的名稱。
database_id 受監視資料庫的資料庫 ID,在邏輯伺服器內是唯一的。
logical_database_id 在使用者資料庫存留期內保持不變的唯一資料庫識別碼。 重新命名資料庫或變更其服務目標並不會變更此值。
physical_database_id 對應至使用者資料庫之目前實體資料庫的唯一資料庫識別碼。 變更資料庫服務目標會導致此值變更。
replica_id 超大規模資料庫計算複本的唯一識別碼。

如果資料集包含資料庫監看員在收集資料列之前觀察到的樣本,則其就會具有 sample_time_utccollection_time_utc 資料行。 否則,觀察時間和收集時間相同,而且資料集僅會包含 sample_time_utc 資料行。

例如,sqldb_database_resource_utilization 資料集衍生自 sys.dm_db_resource_stats 動態管理檢視 (DMV)。 DMV 包含 end_time 資料行,這是每一個資料列報告 15 秒間隔彙總資源統計資料的觀察時間。 這次會在 sample_time_utc 資料行中報告。 當資料庫監看員查詢此 DMV 時,結果集可能會包含多個資料列,而每個資料列都有不同的 end_time。 所有這些資料列具有相同的 collection_time_utc 值。