sys.dm_db_file_space_usage (Transact-SQL)
適用対象: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
データベース内の各データ ファイルの領域使用量情報を返します。
Note
これを Azure Synapse Analytics または Analytics Platform System (PDW) から呼び出すには、 sys.dm_pdw_nodes_db_file_space_usage
という名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。
列名 | データ型 | 説明 |
---|---|---|
database_id |
smallint | データベース ID。 Azure SQL Database では、値は 1 つのデータベースまたは Elastic Pool 内で一意ですが、論理サーバー内では一意ではありません。 |
file_id |
smallint | ファイル ID。file_id は、sys.dm_io_virtual_file_stats 内のfile_id と、sys.sysfiles の fileid にマップ。 |
filegroup_id |
smallint | 適用対象: SQL Server 2012 (11.x) 以降のバージョン。 ファイル グループ ID。 |
total_page_count |
bigint | 適用対象: SQL Server 2012 (11.x) 以降のバージョン。 データ ファイル内のページの合計数。 |
allocated_extent_page_count |
bigint | 適用対象: SQL Server 2012 (11.x) 以降のバージョン。 データ ファイル内の割り当てられたエクステント内のページの合計数。 |
unallocated_extent_page_count |
bigint | データ ファイル内の未割り当てエクステント内のページの合計数。 割り当てられたエクステント内の未使用のページは含まれません。 |
version_store_reserved_page_count |
bigint | バージョン ストアに割り当てられた均一エクステント内のページの合計数。 バージョン ストア ページは、混合エクステントからは割り当てられません。 IAM ページは常に混合エクステントから割り当てられるため、含まれません。 PFS ページは、均一エクステントから割り振られる場合に含まれます。 詳しくは、「sys.dm_tran_version_store (Transact-SQL)」をご覧ください。 |
user_object_reserved_page_count |
bigint | データベース内のユーザー オブジェクトに対して均一エクステントから割り当てられたページの合計数。 割り当て済みのエクステントの未使用ページは、この数に含まれません。 IAM ページは常に混合エクステントから割り当てられるため、含まれません。 PFS ページは、均一エクステントから割り振られる場合に含まれます。 sys.allocation_units カタログ ビューの total_pages 列を使用して、ユーザー オブジェクト内の各アロケーション ユニットの予約ページ数を返すことができます。 ただし、 total_pages 列には IAM ページが含まれています。 |
internal_object_reserved_page_count |
bigint | ファイル内の内部オブジェクトに対して割り当てられる単一エクステント内の総ページ数。 割り当て済みのエクステントの未使用ページは、この数に含まれません。 IAM ページは常に混合エクステントから割り当てられるため、含まれません。 PFS ページは、均一エクステントから割り振られる場合に含まれます。 各内部オブジェクトのページ数を返すカタログ ビューまたは動的管理オブジェクトはありません。 |
mixed_extent_page_count |
bigint | ファイル内の割り当て済みの混合エクステント内の割り当て済みページと未割り当てページの合計数。 混合エクステントには、異なるオブジェクトに割り当てられたページが含まれます。 この数には、ファイル内のすべての IAM ページが含まれます。 |
modified_extent_page_count |
bigint | 適用対象: SQL Server 2016 (13.x) SP2 以降のバージョン。 前回のデータベースの完全バックアップ以降に、ファイルの割り当てられたエクステントで変更されたページの合計数。 変更されたページ数を使用して、前回の完全バックアップ以降のデータベース内の差分変更の数を追跡して、差分バックアップが必要かどうかを判断できます。 |
pdw_node_id |
int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) このディストリビューションがオンになっているノードの識別子。 |
distribution_id |
int | 適用対象: Azure Synapse Analytics、Analytics Platform System (PDW) 分布に関連付けられている一意の数値 ID。 |
解説
ページ数は常にエクステント レベルのものです。 したがって、ページ数の値は常に 8 の倍数です。 グローバル割り当てマップ (GAM) および共有グローバル割り当てマップ (SGAM) 割り当てページを含むエクステントには、均一なエクステントが割り当てられます。 これらは、前に説明したページ数には含まれません。 ページとエクステントの詳細については、「ページとエクステントのアーキテクチャ ガイド」を参照してください。
現在のバージョン ストアのコンテンツは、 sys.dm_tran_version_storeにあります。 バージョン ストア ページはグローバル リソースであるため、セッションおよびタスク レベルではなくファイル レベルで追跡されます。 セッションによってバージョンが生成される場合がありますが、セッションの終了時にバージョンを削除することはできません。 バージョン ストアのクリーンアップでは、特定のバージョンへのアクセスが必要な実行時間が最も長いトランザクションを考慮する必要があります。 バージョン ストアのクリーンアップに関連する実行時間が最も長いトランザクションは、 sys.dm_tran_active_snapshot_database_transactionsの elapsed_time_seconds 列を表示することで検出できます。
mixed_extent_page_count
列を頻繁に変更すると、SGAM ページが頻繁に使用されている可能性があります。 この場合、PAGELATCH_UP 待機の数が多くなっていることがあります。またこの待機では、待機リソースが SGAM ページになっています。 詳細については、「 sys.dm_os_waiting_tasks (Transact-SQL)、 sys.dm_os_wait_stats (Transact-SQL)、および sys.dm_os_latch_stats (Transact-SQL)」を参照してください。
ユーザー オブジェクト
ユーザー オブジェクト ページ カウンターには、次のオブジェクトが含まれています。
- ユーザー定義テーブルとインデックス
- システム テーブルとインデックス
- グローバル一時テーブルとインデックス
- ローカルの一時テーブルとインデックス
- テーブル変数
- テーブル値関数で返されるテーブル
内部オブジェクト
内部オブジェクトは、 tempdb
内にのみ存在します。 内部オブジェクト ページ カウンターには、次のオブジェクトが含まれています。
- カーソル操作またはスプール操作および一時ラージ・オブジェクト (LOB) ストレージの作業表
- ハッシュ結合などの操作用の作業ファイル
- 並べ替え実行結果
リレーションシップのカーディナリティ
ソース | ターゲット | 関係 |
---|---|---|
sys.dm_db_file_space_usage.database_id , file_id |
sys.dm_io_virtual_file_stats.database_id , file_id |
一対一 |
アクセス許可
SQL Server 2019 (15.x) 以前のバージョンと SQL Managed Instance では、 VIEW SERVER STATE
アクセス許可が必要です。
SQL Server 2022 (16.x) 以降のバージョンでは、サーバーに対する VIEW SERVER PERFORMANCE STATE 権限が必要です。
SQL Database Basic、S0、および S1 サービス目標、および弾性プール内のデータベースの場合サーバー管理者アカウント、Microsoft Entra 管理者アカウント、または##MS_ServerStateReader##
サーバー ロールのメンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE
アクセス許可または ##MS_ServerStateReader##
サーバー ロールのメンバーシップのいずれかが必要です。
例
の空き領域の量を決定する tempdb
次のクエリでは、空きページの合計数と、 tempdb
内のすべてのデータ ファイルで使用可能な合計空き領域 (MB) が返されます。
USE tempdb;
GO
SELECT
SUM(unallocated_extent_page_count) AS [free pages],
(SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;
ユーザー オブジェクトによって使用される領域の量を決定する
次のクエリは、ユーザー オブジェクトによって使用されるページの合計数と、 tempdb
内のユーザー オブジェクトによって使用された領域の合計を返します。
USE tempdb;
GO
SELECT
SUM(user_object_reserved_page_count) AS [user object pages used],
(SUM(user_object_reserved_page_count) * 1.0 / 128) AS [user object space in MB]
FROM sys.dm_db_file_space_usage;