資料庫監看員資料收集和資料集 (預覽版)
適用於: Azure SQL 資料庫 Azure SQL 受控執行個體
資料庫監看員會從 SQL 系統檢視表收集監視資料,並以資料集的形式將其內嵌至資料存放區。 每個資料集皆為使用來自一或多個 SQL 系統檢視表的資料所形成。 針對每個資料集,資料存放區中都有個別資料表。
資料集合
資料庫監看員使用 T-SQL 查詢定期收集監視資料。 每次執行查詢時收集的資料稱為樣本。 樣本收集頻率因資料集而異。 例如,SQL 效能計數器等經常變更的資料,可能每 10 秒收集一次,大部分靜態資料,例如資料庫設定,則可能每五分鐘收集一次。 如需詳細資訊,請參閱資料集。
資料庫監看員會利用 Azure 資料總管中的串流擷取和 Microsoft Fabric 中的即時分析,來提供近即時的監視。 一般來說,收集的 SQL 監視資料在不到 10 秒內即可供報告和分析使用。 您可以使用擷取統計資料連結,在資料庫監看員儀表板上監視資料擷取延遲。
資料庫監看員與應用程式工作負載之間的互動
啟用資料庫監看員不太可能對應用程式工作負載效能造成可觀察的影響。 較頻繁的監視查詢通常會在次秒級範圍內執行,而可能需要更多時間的查詢,例如傳回大型資料集,則會以不頻繁的間隔執行。
為了進一步降低對應用程式工作負載的影響風險,Azure SQL 資料庫中的所有資料庫監看員查詢都會作為內部工作負載進行資源控管。 當存在資源爭用時,監視查詢的資源使用量僅限於可供資料庫或彈性集區使用的資源總數的一小部分。 這樣一來,應用程式工作負載即會優先於監視查詢。
若要避免並行衝突,例如資料收集與 Azure SQL 資源上執行的資料庫工作負載之間的封鎖和鎖死,監視查詢會使用短鎖定逾時和低鎖死優先順序。 如果發生並行衝突,則應用程式工作負載查詢為優先。
如果整體資源使用率很高,或發生並行衝突,您可能會觀察到所收集數據的差距。 在這些情況下,監視查詢可能會優先於應用程式工作負載。
彈性集區中的資料收集
若要監視彈性集區,您必須將集區中的一個資料庫指定為錨點資料庫。 資料庫監看員連線到錨點資料庫。 由於監看員會保留 VIEW SERVER PERFORMANCE STATE
權限,錨點資料庫中的系統檢視表可提供整個集區的監視資料。
提示
您可以將空白資料庫新增至您想要監視的每個彈性集區,並將其指定為錨點資料庫。 如此一來,您就可以在集區中移入和移出其他資料庫,或是在集區之間移動其他資料庫,而不會中斷彈性集區監視。
從錨點資料庫收集的數據包含集區層級計量,以及集區中每個資料庫的特定資料庫層級效能計量,例如每個資料庫的資源使用率和要求率計量。 在某些情況下,新增彈性集區 SQL 目標來監視整個彈性集區,可能不需要監視集區中的每個個別資料庫。
某些監視資料 (例如集區層級 CPU、記憶體和儲存體使用率,以及等候統計資料) 只會在彈性集區層級進行收集,因為其無法歸類為集區中的個別資料庫。 相反地,只有當您將個別資料庫新增為 SQL 目標時,才能使用某些其他數據,例如查詢運行時間統計數據、資料庫屬性、數據表和索引元數據。
如果您從彈性集區新增個別資料庫作為 SQL 目標,則也應該將彈性集區新增為 SQL 目標。 如此一來,您即能更完整地檢視資料庫和集區效能。
監視密集彈性集區
密集彈性集區包含大量資料庫,但計算大小相對較小。 在假設集區中只有少量資料庫同時處於作用中狀態時,此設定可讓客戶將計算資源分派降到最低,以實現大量成本節省。
為避免影響應用程式查詢,可供密集彈性集區中資料庫監看員查詢使用的計算資源會進一步受到限制。 因此,資料庫監看員可能無法從密集彈性集區中的每個資料庫收集監視資料。
提示
若要監視密集的彈性集區,請將彈性集區新增為 SQL 目標,以在集區層級啟用監視。
不建議在密集彈性集區中監視多個個別資料庫。 由於可供資料庫監看員查詢使用的計算資源不足,您可能會發現收集的資料中存在差距,或資料樣本之間的間隔大於預期的間隔。
資料落地
客戶可以選擇將收集的 SQL Monitoring 資料儲存在三種資料存放區類型的其中一種:
Azure 資料總管叢集和資料庫。 根據預設,系統會為每個新的監看員建立新的 Azure 資料總管叢集,且位於與監看員相同的 Azure 區域中。
客戶可以選擇 Azure 地理位置中的特定 Azure 區域作為其 Azure 資料總管叢集和資料庫的位置。 如需 Azure 資料總管中資料複寫功能的詳細資訊,請參閱 商務持續性和災害復原概觀。
Azure 資料總管叢集中的資料庫。
客戶可以選擇特定的 Azure 地理位置,但不能選擇特定的 Azure 區域作為其免費 Azure 資料總管叢集和資料庫的位置。 不支援將資料複寫至不同的區域或地理位置。
在 Microsoft Fabric 中的即時分析 的資料庫
客戶無法選擇資料庫的地理位置。
若要完全控制所收集 SQL Monitoring 資料的資料落地,客戶必須選擇 Azure 資料總管叢集上的資料庫作為資料存放區。
客戶可以將其 Azure 數據總管叢集的地理位置和區域與所監視的 Azure SQL 資源的地理位置和區域對齊。 當 Azure SQL 資源位於多個區域時,客戶可能需要建立多個監看員和多個 Azure 資料總管叢集,以滿足其資料落地需求。
資料集
本節描述每個 SQL 目標類型可用的數據集,包括數據存放區中的收集頻率和數據表名稱。
注意
在預覽期間,可能會新增和移除資料集。 名稱、描述、收集頻率和可用資料行等資料集屬性可能會變更。
資料集名稱 | 資料表名稱 | 收集頻率 (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、記錄寫入、要求、異動等。
通用資料行
針對每個 SQL 目標類型,數據集都有一般數據行,如下表所述。
資料行名稱 | 描述 |
---|---|
subscription_id |
SQL 資料庫的 Azure訂閱識別碼。 |
resource_group_name |
SQL 資料庫的資源群組名稱。 |
resource_id |
SQL 資料庫的 Azure 資源識別碼。 |
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_utc
和 collection_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
值。