Delen via


sys.dm_db_file_space_usage (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform Systeem (PDW)SQL-database in Microsoft Fabric

Geeft ruimtegebruikinformatie terug voor elk databestand in de database.

Opmerking

Gebruik de naam sys.dm_pdw_nodes_db_file_space_usageom dit aan te roepen vanuit Azure Synapse Analytics of Analytics Platform System (PDW). Deze syntaxis wordt niet ondersteund door een serverloze SQL-pool in Azure Synapse Analytics.

Kolomnaam Gegevenstype Description
database_id smallint Database-id.

In Azure SQL Database zijn de waarden uniek binnen één database of een elastische pool, maar niet binnen een logische server.
file_id smallint Bestands-id.

file_id Mapt naar file_id in sys.dm_io_virtual_file_stats en naar fileid in sys.sysfiles.
filegroup_id smallint Van toepassing op: SQL Server 2012 (11.x) en latere versies.

Bestandsgroep-ID.
total_page_count bigint Van toepassing op: SQL Server 2012 (11.x) en latere versies.

Totaal aantal pagina's in het databestand.
allocated_extent_page_count bigint Van toepassing op: SQL Server 2012 (11.x) en latere versies.

Totaal aantal pagina's in de toegewezen extents in het databestand.
unallocated_extent_page_count bigint Totaal aantal pagina's in de niet-toegewezen extents in het databestand.

Ongebruikte pagina's in toegewezen extents zijn niet inbegrepen.
version_store_reserved_page_count bigint Totaal aantal pagina's in de uniforme extensies die zijn toegewezen voor de versieopslag. Versieopslagpagina's worden nooit toegewezen vanuit gemengde extents.

IAM-pagina's zijn niet inbegrepen, omdat ze altijd vanuit gemengde omvang worden toegewezen. PFS-pagina's zijn inbegrepen als ze uit een uniforme omvang worden toegewezen.

Voor meer informatie, zie sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Totaal aantal pagina's toegewezen vanuit uniforme extents voor gebruikersobjecten in de database. Ongebruikte pagina's uit een toegewezen omvang worden meegenomen in de telling.

IAM-pagina's zijn niet inbegrepen, omdat ze altijd vanuit gemengde omvang worden toegewezen. PFS-pagina's zijn inbegrepen als ze uit een uniforme omvang worden toegewezen.

Je kunt de total_pages kolom in de catalogusweergave van sys.allocation_units gebruiken om het aantal gereserveerde pagina's van elke allocatie-eenheid in het gebruikersobject terug te geven. De column bevat echter total_pages IAM-pagina's.
internal_object_reserved_page_count bigint Totaal aantal pagina's in uniforme extents toegewezen aan interne objecten in het bestand. Ongebruikte pagina's uit een toegewezen omvang worden meegenomen in de telling.

IAM-pagina's zijn niet inbegrepen, omdat ze altijd vanuit gemengde omvang worden toegewezen. PFS-pagina's zijn inbegrepen als ze uit een uniforme omvang worden toegewezen.

Er is geen catalogusweergave of dynamisch beheerobject dat het paginaaantal van elk intern object teruggeeft.
mixed_extent_page_count bigint Totaal aantal toegewezen en niet-toegewezen pagina's in toegewezen gemengde omvang in het bestand. Gemengde extents bevatten pagina's die aan verschillende objecten zijn toegewezen. Deze telling bevat alle IAM-pagina's in het bestand.
modified_extent_page_count bigint Van toepassing op: SQL Server 2016 (13.x) SP2 en latere versies.

Totaal aantal pagina's aangepast in toegewezen extents van het bestand sinds de laatste volledige databaseback-up. Het aangepaste paginatelling kan worden gebruikt om het aantal differentiële wijzigingen in de database sinds de laatste volledige back-up bij te houden, om te bepalen of een differentiële back-up nodig is.
pdw_node_id int Van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW)

De id voor het knooppunt waarop deze distributie zich bevindt.
distribution_id int Van toepassing op: Azure Synapse Analytics, Analytics Platform System (PDW)

De unieke numerieke ID die bij de distributie hoort.

Opmerkingen

Het aantal pagina's is altijd op het niveau van de omvang. Daarom zijn paginatellingen altijd een veelvoud van acht. De extents die Global Allocation Map (GAM) en Shared Global Allocation Map (SGAM) allocatiepagina's bevatten, worden uniforme extents toegewezen. Ze zijn niet opgenomen in de eerder beschreven paginatellingen. Voor meer informatie over pagina's en gebieden, zie de architectuurgids voor pagina's en gebieden.

De inhoud van de huidige versie van de winkel is in sys.dm_tran_version_store. Versieopslagpagina's worden op bestandsniveau bijgehouden in plaats van op sessie- en taakniveau, omdat het globale bronnen zijn. Een sessie kan versies genereren, maar de versies kunnen niet worden verwijderd wanneer de sessie eindigt. Het opruimen van de versiewinkel moet rekening houden met de langstlopende transactie die toegang tot de specifieke versie vereist. De langstlopende transactie met betrekking tot versieopslag kan worden ontdekt door de kolom elapsed_time_seconds in sys.dm_tran_active_snapshot_database_transactions te bekijken.

Frequente wijzigingen in de mixed_extent_page_count kolom kunnen wijzen op intensief gebruik van SGAM-pagina's. Wanneer dit gebeurt, zie je vaak PAGELATCH_UP wachttijden waarbij de wachtbron een SGAM-pagina is. Voor meer informatie, zie sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) ) en sys.dm_os_latch_stats (Transact-SQL).

Gebruikersobjecten

De volgende objecten zijn opgenomen in de paginatellers van de gebruikersobjecten:

  • Door de gebruiker gedefinieerde tabellen en indexen
  • Systeemtabellen en indexen
  • Globale tijdelijke tabellen en indexen
  • Lokale tijdelijke tabellen en indexen
  • Tabelvariabelen
  • Tabellen die worden teruggegeven in de tabelwaardige functies

Interne objecten

Interne objecten zijn alleen in tempdb. De volgende objecten zijn opgenomen in de interne objectpaginatellers van de pagina:

  • Werktabellen voor cursor- of spooloperaties en tijdelijke opslag van grote objecten (LOB)
  • Werkbestanden voor bewerkingen zoals een hash join
  • Sorteringsuitvoeringen

Relatiekardinaliteiten

Van Tot Relatie
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id One-to-one

Permissions

Op SQL Server 2019 (15.x) en eerdere versies, en SQL Managed Instance, is toestemming vereist VIEW SERVER STATE .

Op SQL Server 2022 (16.x) en latere versies is een VIEW SERVER PERFORMANCE STATE toestemming vereist op de server.

Voor servicedoelstellingen van SQL Database Basic, S0 en S1 en voor databases in elastische pools is het serverbeheerdersaccount , het Microsoft Entra-beheerdersaccount of het lidmaatschap van de ##MS_ServerStateReader##serverrol vereist. Voor alle andere SQL Database-servicedoelstellingen is de VIEW DATABASE STATE machtiging voor de database of het lidmaatschap van de ##MS_ServerStateReader## serverfunctie vereist.

Voorbeelden

Bepaal de hoeveelheid vrije ruimte in tempdb

De volgende query geeft het totale aantal vrije pagina's en totale vrije ruimte in megabytes (MB) terug die beschikbaar is in alle databestanden in 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;

Bepaal de hoeveelheid ruimte die door gebruikersobjecten wordt gebruikt

De volgende query geeft het totale aantal pagina's dat door gebruikersobjecten wordt gebruikt en de totale ruimte die door gebruikersobjecten in tempdbwordt gebruikt, terug.

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;

Zie ook