sys.dm_db_file_space_usage (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics 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_idfile_idは、sys.dm_io_virtual_file_stats内と 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列を使用して、ユーザー オブジェクト内の各アロケーション ユニットの予約ページ数を返すことができます。 ただし、列には IAM ページが total_pages 含まれています。
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にあります。 バージョン ストア ページはグローバル リソースであるため、セッションおよびタスク レベルではなくファイル レベルで追跡されます。 セッションによってバージョンが生成される場合がありますが、セッションの終了時にバージョンを削除することはできません。 バージョン ストア クリーンup では、特定のバージョンへのアクセスが必要な実行時間が最も長いトランザクションを考慮する必要があります。 バージョン ストアのクリーンに関連する実行時間が最も長いトランザクションは、sys.dm_tran_active_スナップショット_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 Standard Edition RVER PERFORMANCE STATE 権限が必要です。

SQL Database Basic、S0、S1 サービス目標、およびエラスティック プール内のデータベースの場合、サーバー管理者アカウント、Microsoft Entra 管理者アカウント、またはサーバー ロール##MS_ServerStateReader##メンバーシップが必要です。 他のすべての SQL Database サービス目標では、データベースに対する VIEW DATABASE STATE アクセス許可または ##MS_ServerStateReader## サーバー ロールのメンバーシップのいずれかが必要です。

の空き領域の量を決定する tempdb

次のクエリは、空きページの合計数と、すべてのデータ ファイルで使用可能な合計空き領域 (MB (メガバイト)) をメガバイト単位でtempdb返します。

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;

関連項目