Sdílet prostřednictvím


sys.dm_db_file_space_usage (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)databáze SQL v Microsoft Fabric

Vrací informace o využití místa pro každý datový soubor v databázi.

Poznámka:

K volání z Azure Synapse Analytics nebo systému PDW (Analytics Platform System) použijte název sys.dm_pdw_nodes_db_file_space_usage. Tato syntaxe není podporována bezserverovým fondem SQL ve službě Azure Synapse Analytics.

Název sloupce Datový typ Description
database_id smallint ID databáze.

Ve službě Azure SQL Database jsou hodnoty jedinečné v rámci jedné databáze nebo elastického fondu, ale ne v rámci logického serveru.
file_id smallint ID souboru.

file_id mapuje na file_idin sys.dm_io_virtual_file_stats a na fileID v sys.sysfiles.
filegroup_id smallint platí pro: SQL Server 2012 (11.x) a novější verze.

ID souborové skupiny.
total_page_count bigint platí pro: SQL Server 2012 (11.x) a novější verze.

Celkový počet stránek v datovém souboru.
allocated_extent_page_count bigint platí pro: SQL Server 2012 (11.x) a novější verze.

Celkový počet stran v přidělených rozsahech datového souboru.
unallocated_extent_page_count bigint Celkový počet stran v nealokovaných rozsahech datového souboru.

Nepoužité stránky v přidělených rozsahech nejsou zahrnuty.
version_store_reserved_page_count bigint Celkový počet stránek v jednotných rozsahech přidělených pro úložiště verzí. Stránky úložiště verzí se nikdy nepřidělují z různých rozsahů.

IAM stránky nejsou zahrnuty, protože jsou vždy alokovány z různých rozsahů. PFS stránky jsou zahrnuty, pokud jsou alokovány z jednotného rozsahu.

Pro více informací viz sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Celkový počet stránek přidělených z uniformních rozsahů pro uživatelské objekty v databázi. Nevyužité stránky z přiděleného rozsahu jsou zahrnuty do sčítání.

IAM stránky nejsou zahrnuty, protože jsou vždy alokovány z různých rozsahů. PFS stránky jsou zahrnuty, pokud jsou alokovány z jednotného rozsahu.

Sloupec total_pages v sys.allocation_units katalogovém zobrazení můžete použít k vrácení rezervovaného počtu stran každé alokační jednotky v uživatelském objektu. Sloupek total_pages však obsahuje stránky IAM.
internal_object_reserved_page_count bigint Celkový počet stran v jednotných rozsahech přidělených pro interní objekty v souboru. Nevyužité stránky z přiděleného rozsahu jsou zahrnuty do sčítání.

IAM stránky nejsou zahrnuty, protože jsou vždy alokovány z různých rozsahů. PFS stránky jsou zahrnuty, pokud jsou alokovány z jednotného rozsahu.

Neexistuje žádný katalogový pohled ani dynamický správcovský objekt, který by vracel počet stran každého interního objektu.
mixed_extent_page_count bigint Celkový počet přidělených a nealokovaných stran v přidělených smíšených rozsahech v souboru. Smíšené rozsahy obsahují stránky přiřazené různým objektům. Tento počet zahrnuje všechny stránky IAM ve spisu.
modified_extent_page_count bigint Platí pro: SQL Server 2016 (13.x) SP2 a novější verze.

Celkový počet stránek upravených v přidělených rozsahech souboru od poslední kompletní databázové zálohy. Počet upravených stránek lze použít ke sledování počtu rozdílných změn v databázi od poslední úplné zálohy, aby se rozhodlo, zda je potřeba diferenciální záloha.
pdw_node_id int platí pro: Azure Synapse Analytics, Analytics Platform System (PDW)

Identifikátor uzlu, na který je tato distribuce zapnutá.
distribution_id int platí pro: Azure Synapse Analytics, Analytics Platform System (PDW)

Jedinečné číselné ID spojené s distribucí.

Poznámky

Počet stran je vždy na úrovni rozsahu. Proto jsou hodnoty počtu stran vždy násobkem osmi. Rozsahy, které obsahují stránky s Globální mapou alokace (GAM) a sdílenou globální mapou alokace (SGAM), jsou přiděleny jednotným rozsahům. Nejsou zahrnuty v dříve popsaném počtu stran. Další informace o stránkách a rozsahech naleznete v Průvodci architekturou stránek a rozsahů.

Obsah aktuálního úložiště verzí je v sys.dm_tran_version_store. Stránky úložiště verzí se sledují na úrovni souboru, nikoli na úrovni relace a úkolu, protože jsou globálními zdroji. Relace může generovat verze, ale ty nelze odstranit po jejím skončení. Čištění úložiště verzí musí zohlednit nejdéle běžící transakci, která potřebuje přístup k dané verzi. Nejdéle trvající transakce související s úklidem úložiště verzí lze zjistit zobrazením sloupce elapsed_time_seconds v sys.dm_tran_active_snapshot_database_transactions.

Časté změny ve sloupci mixed_extent_page_count mohou naznačovat časté používání SGAM stránek. Když k tomu dojde, můžete vidět mnoho PAGELATCH_UP čekání, kde je zdrojem čekání stránka SGAM. Pro více informací viz sys.dm_os_waiting_tasks (Transact-SQL),sys.dm_os_wait_stats (Transact-SQL) a sys.dm_os_latch_stats (Transact-SQL).

Uživatelské objekty

Následující objekty jsou zahrnuty v čítačích uživatelských objektových stránek:

  • Uživatelsky definované tabulky a indexy
  • Tabulky a indexy systémů
  • Globální dočasné tabulky a indexy
  • Lokální dočasné tabulky a indexy
  • Proměnné tabulek
  • Tabulky vracené v tabulkových funkcích

Interní objekty

Vnitřní objekty jsou pouze v tempdb. Následující objekty jsou zahrnuty v čítačích interních objektových stránek:

  • Pracovní tabulky pro operace s kurzorem nebo spoolem a dočasné ukládání velkých objektů (LOB)
  • Pracovní soubory pro operace, jako je hash join
  • Řazení spuštění

Kardinality relací

Od To Vztah
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id One-to-one

Povolení

Na SQL Server 2019 (15.x) a starších verzích a SQL Managed Instance VIEW SERVER STATE vyžaduje oprávnění.

Na SQL Server 2022 (16.x) a novějších verzích vyžaduje na serveru povolení ZOBRAZIT STAV VÝKONU SERVERU.

U cílů služby SQL Database Basic, S0 a S1 a pro databáze v elastických fondech se vyžaduje účet správce serveru , účet správce Microsoft Entra nebo členství v ##MS_ServerStateReader##roli serveru . U všech ostatních cílů VIEW DATABASE STATE služby SQL Database se vyžaduje buď oprávnění k databázi, nebo členství v ##MS_ServerStateReader## roli serveru.

Examples

Určeme množství volného prostoru v tempdb

Následující dotaz vrací celkový počet volných stránek a celkový volný prostor v megabajtech (MB) dostupných ve všech datových souborech v 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;

Určte množství prostoru využívaného uživatelskými objekty

Následující dotaz vrací celkový počet stránek používaných uživatelskými objekty a celkový prostor využitý uživatelskými objekty v 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;

Viz také