次の方法で共有


sys.dm_hs_database_log_rate (Transact-SQL)

適用対象:Azure SQL データベース

sys.dm_hs_database_log_rate動的管理機能 (DMF) は、Azure SQL Database Hyperscale でのログ生成率に関する情報を返します。

結果セットの各行は、Hyperscale データベースのログ生成率を制御 (削減) するコンポーネントを表します。 Hyperscale レベルのアーキテクチャには、データベースのパフォーマンスを安定してバランスよく保つために、ログ生成率を低下させる可能性があるコンポーネントが複数あります。

セカンダリ コンピューティング レプリカやページ サーバーなどの特定の種類のコンポーネントでは、データベースの全体的な正常性と安定性を確保するために、プライマリ コンピューティング レプリカのログ生成率を一時的に減らすことができます。

どのコンポーネントでもログ生成率が低下しない場合は、プライマリ コンピューティング レプリカ コンポーネントに対して行が返され、データベースに対して許可されるログ生成率の最大値が表示されます。

この動的管理機能は、セッションがプライマリ レプリカに接続されている場合にのみ行を返します。

構文

sys.dm_hs_database_log_rate ( 
{ database_id | NULL }                                     
)                             

論争

データベースID

database_id は、既定値のないデータベース ID を表す 整数 です。 有効な入力は、データベース ID または NULLです。

database_idが指定されると、sys.dm_hs_database_log_rateはその特定のデータベースの行を返します。

指定されていない場合、または NULL が指定されている場合、単一データベースの場合、現在のデータベースの行が返されます。 エラスティック プール内のデータベースの場合、呼び出し元に十分な アクセス許可があるプール内のすべてのデータベースの行を返します。

組み込み関数 DB_ID を指定できます。

返されるテーブル

列名 データの種類 Description
database_id int NOT NULL データベースの識別子。 値は 1 つのデータベースまたはエラスティック プール内で一意ですが、論理サーバー内では一意ではありません。
replica_id uniqueidentifier NOT NULL sys.dm_database_replica_statesreplica_id列に対応するコンピューティング レプリカの識別子。 NULL component_idが Hyperscale ページ サーバーに対応する場合.

この値は、レプリカに接続されている場合、DATABASEPROPERTYEX(DB_NAME(), 'ReplicaID')関数呼び出しによって返されます。
file_id int ヌル ログ生成速度を制限するページ サーバーに対応するデータベース内のデータベース ファイルの ID。 ロールがページ サーバーの場合にのみ設定され、それ以外の場合は NULLを返します。 この値は、sys.database_filesfile_id列に対応します。
current_max_log_rate bigint NOT NULL プライマリ コンピューティング レプリカでのログ生成レートの現在の最大ログ レート制限 (バイト/秒)。ログ生成速度を低下させるコンポーネントがない場合は、Hyperscale データベースのログ生成速度の制限を報告します。
component_id uniqueidentifier NOT NULL ページ サーバーやコンピューティング レプリカなどの Hyperscale コンポーネントの一意識別子。
role smallint NOT NULL ログ生成を削減できる既存のすべてのコンポーネント ロール。

Unknown = 0
Storage = 1
Primary = 2
Replica = 4
LocalDestage = 5
Destage = 6
GeoReplica = 10
StorageCheckpoint = 12
MigrationTarget = 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 nvarchar(60) NOT NULL Unknown = コンポーネント ロールが不明です
Storage = ページ サーバー
Primary = プライマリ コンピューティング レプリカ
Replica = 高可用性 (HA) レプリカや名前付きレプリカなどのセカンダリ コンピューティング レプリカ。
LocalDestage = ログ サービス
Destage = 長期ログ ストレージ
GeoReplica = geo セカンダリ レプリカ
StorageCheckpoint = ページ サーバー上のチェックポイント
MigrationTarget = Hyperscale から非 Hyperscale データベースへの逆移行中のターゲット データベース。
catchup_rate bigint NOT NULL キャッチアップ レート (バイト/秒)。ログ レートが低下しない場合は、0 を返します。
catchup_bytes bigint NOT NULL プライマリ コンピューティング レプリカに追いつくためにコンポーネントが適用する必要があるトランザクション ログの量 (バイト単位)。 コンポーネントが追いついたときの 0 を返します。
last_reported_time datetime ハイパースケール ログ サービスが最後に値を報告した時刻。

注釈

sys.dm_hs_database_log_rate動的管理機能は、Azure SQL Database Hyperscale レベルにのみ適用されます。

Azure SQL Database の Hyperscale サービス レベルでは、ログ サービスによって、分散コンポーネントがトランザクション ログの適用に大きく遅れないようにします。 これは、システムの全体的な正常性と安定性を維持するために必要です。 コンポーネントが遅れ、そのキャッチアップ率が現在のログ生成速度より低い場合、ログ サービスはプライマリのログ生成率を減らします。 sys.dm_hs_database_log_rate() DMF を使用すると、ログ レートの低下の原因となっているコンポーネントと、ログ レートの低下がどの程度まで続くかを把握できます。

ログ レートの削減の詳細については、「 Hyperscale のパフォーマンス診断」を参照してください。

Permissions

この動的管理機能には 、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. ログ レートの低下の原因となっているコンポーネントを返す

エラスティック プール内のデータベースに接続されている場合、次の例では、十分なアクセス許可を持つプール内のすべてのデータベースについて、ログ レートの低下の原因となっているコンポーネントの行を返します。 1 つのデータベースに接続されている場合は、データベースの行を返します。

SELECT current_max_log_rate_bps, role_desc, catchup_rate_bps, catchup_distance_bytes 
FROM sys.dm_hs_database_log_rate(NULL);