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