sys.dm_db_file_space_usage (Transact-SQL)

適用対象:Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Azure SQL SQL Server (サポートされているすべてのバージョン)

データベース内の各データ ファイルの領域使用量情報を返します。

注意

Azure Synapse Analytics または Analytics Platform System (PDW) からこれを呼び出すには、sys.dm_pdw_nodes_db_file_space_usageという名前を使用します。 この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

列名 データ型 説明
database_id smallint データベース ID。
file_id smallint ファイル ID。

file_idは、 sys.dm_io_virtual_file_statsのfile_idsys.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 と SQL Managed Instance では、VIEW SERVER STATE アクセス許可が必要です。

SQL Database BasicS0、および S1 のサービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Azure Active Directory 管理者アカウント、または ##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 のユーザー オブジェクトにより使用されるページ数の合計と領域の合計 (MB 単位) が返されます。

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;

こちらもご覧ください