sys.dm_hs_database_log_rate動態管理函式 (DMF) 會傳回 Azure SQL 資料庫超大規模資料庫中記錄產生速率的相關資訊。
結果集中的每一列都代表一個元件,可控制 (減少) 超大規模資料庫中的記錄產生速率。 超大規模化層架構中有多個元件可以降低記錄產生速率,以保持資料庫效能穩定和平衡。
特定類型的元件 (例如次要計算複本或頁面伺服器) 可以暫時降低主要計算複本上的記錄產生速率,以確保整體資料庫健康情況和穩定性。
如果任何元件未降低記錄產生速率,則會傳回主要計算複本元件的資料列,以顯示資料庫允許的記錄產生速率上限。
只有在工作階段連線到主要複本時,此動態管理函式才會傳回資料列。
語法
sys.dm_hs_database_log_rate (
{ database_id | NULL }
)
Arguments
database_id
database_id 是代表資料庫 ID 的 整數 ,沒有預設值。 有效的輸入是資料庫 ID 或 NULL。
當提供 a database_id 時, sys.dm_hs_database_log_rate 會傳回該特定資料庫的資料列。
未提供或提供時 NULL ,針對單一資料庫,會傳回目前資料庫的資料列。 針對彈性集區中的資料庫,傳回集區中呼叫端具有足夠 許可權之所有資料庫的資料列。
可以指定內建函數 DB_ID 。
傳回的資料表
| 欄位名稱 | 數據類型 | Description |
|---|---|---|
database_id |
整數 不空值 | 資料庫的識別碼。 這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不然。 |
replica_id |
唯一識別碼 不空值 | 計算複本的識別碼,對應至 中的資料 replica_id 行 sys.dm_database_replica_states。
NULL when component_id 對應至超大規模頁面伺服器。當連線到複本時, DATABASEPROPERTYEX(DB_NAME(), 'ReplicaID') 函數呼叫會傳回此值。 |
file_id |
整數 無效的 | 資料庫內對應至限制記錄產生速率之頁面伺服器的資料庫檔案識別碼。 只有在角色是頁面伺服器時才會填入,否則會傳回 NULL。 此值對 file_id 應至 中的直欄 sys.database_files。 |
current_max_log_rate |
比金特 不空值 | 主要計算複本上記錄產生速率的目前最大記錄速率限制,以位元組/秒為單位。如果沒有元件降低記錄產生速率,則會報告超大規模資料庫的記錄產生速率限制。 |
component_id |
唯一識別碼 不空值 | 超大規模資料庫元件的唯一識別碼,例如頁面伺服器或計算複本。 |
role |
smallint 不空值 | 所有可以減少日誌產生的現有元件角色。Unknown = 0Storage = 1Primary = 2Replica = 4LocalDestage = 5Destage = 6 GeoReplica = 10StorageCheckpoint = 12MigrationTarget = 14當記錄產生速率受到限制時,可能會在主要計算複本上觀察到對應至每個角色的下列等候類型: 1 - RBIO_RG_STORAGE 4 - RBIO_RG_REPLICA 5 - RBIO_RG_LOCALDESTAGE 6 - RBIO_RG_DESTAGE 10 - RBIO_RG_GEOREPLICA 12 - RBIO_RG_STORAGE_CHECKPOINT 14 - RBIO_RG_MIGRATION_TARGET 如需詳細資訊,請參閱 記錄速率節流等待 |
role_desc |
恩瓦查爾(60) 不空值 |
Unknown = 元件角色未知Storage = 頁面伺服器Primary = 主要計算複本Replica = 次要計算複本,例如高可用性 (HA) 複本或具名複本。LocalDestage = 日誌服務Destage = 長期日誌儲存GeoReplica = 異地次要複本StorageCheckpoint = 頁面伺服器上的檢查點MigrationTarget = 從超大規模資料庫反向移轉至非超大規模資料庫期間的目標資料庫。 |
catchup_rate |
比金特 不空值 | 追趕率(以位元組/秒為單位)。當對數速率未降低時,會傳回零。 |
catchup_bytes |
比金特 不空值 | 元件必須套用的交易記錄數量 (以位元組為單位) ,才能趕上主要計算複本。 當元件被追上時傳回 0 。 |
last_reported_time |
日期時間 | 超大規模資料庫記錄服務上次報告值的時間。 |
備註
sys.dm_hs_database_log_rate動態管理函式僅適用於 Azure SQL 資料庫超大規模資料庫層。
在 Azure SQL 資料庫的超大規模服務層中,記錄服務可確保分散式元件在套用交易記錄時不會落後太多。 這是維護整體系統健康和穩定性所必需的。 當元件落後且其追趕率低於目前的日誌產生率時,日誌服務會降低主要日誌上的日誌產生率。
sys.dm_hs_database_log_rate() DMF 可用來瞭解哪個元件導致對數速率降低、降低到什麼程度,以及對數速率降低可能持續多長時間。
如需記錄速率減少的詳細資訊,請參閱 超大規模資料庫中的效能診斷。
權限
此動態管理功能需要 VIEW DATABASE PERFORMANCE STATE 權限。
範例
A。 傳回在特定資料庫中導致日誌速率降低的元件
下列範例會傳回導致對數速率減少之元件的資料列。 如果任何元件未降低記錄產生速率,則會傳回主要計算的資料列,顯示資料庫允許的記錄產生速率上限。
SELECT current_max_log_rate_bps, role_desc, catchup_rate_bps, catchup_distance_bytes
FROM sys.dm_hs_database_log_rate(DB_ID(N'Contosodb'));
B. 傳回導致對數速率降低的元件
連線到彈性集區中的資料庫時,下列範例會針對集區中您擁有足夠許可權的每個資料庫,傳回導致記錄速率降低之元件的資料列。 連線到單一資料庫時,會傳回資料庫的資料列。
SELECT current_max_log_rate_bps, role_desc, catchup_rate_bps, catchup_distance_bytes
FROM sys.dm_hs_database_log_rate(NULL);