sys.dm_db_file_space_usage (Transact-SQL)

Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure azure Synapse Analytics Analytics Platform System (PDW)

Restituisce informazioni sull'utilizzo dello spazio per ogni file di dati nel database.

Nota

Per chiamare questa operazione da Azure Synapse Analytics o da Platform System (PDW), usare il nome sys.dm_pdw_nodes_db_file_space_usage. Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.

Nome colonna Tipo di dati Descrizione
database_id smallint ID del database.

In database SQL di Azure i valori sono univoci all'interno di un database singolo o di un pool elastico, ma non all'interno di un server logico.
file_id smallint ID di file.

file_id esegue il mapping a file_id in sys.dm_io_virtual_file_stats e a fileid in sys.sysfiles.
filegroup_id smallint Si applica a: SQL Server 2012 (11.x) e versioni successive.

ID del filegroup.
total_page_count bigint Si applica a: SQL Server 2012 (11.x) e versioni successive.

Numero totale di pagine nel file di dati.
allocated_extent_page_count bigint Si applica a: SQL Server 2012 (11.x) e versioni successive.

Numero totale di pagine negli extent allocati nel file di dati.
unallocated_extent_page_count bigint Numero totale di pagine negli extent non allocati nel file di dati.

Le pagine inutilizzate negli extent allocati non sono incluse.
version_store_reserved_page_count bigint Numero totale di pagine negli extent uniformi allocati per l'archivio delle versioni. Le pagine dell'archivio delle versioni non vengono mai allocate dagli extent misti.

Le pagine IAM non sono incluse, perché vengono sempre allocate da extent misti. Le pagine PFS vengono incluse se vengono allocate da un extent uniforme.

Per altre informazioni, vedere sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Numero totale di pagine allocate da extent uniformi per gli oggetti utente nel database. Sono incluse nel conteggio le pagine non utilizzate da un extent allocato.

Le pagine IAM non sono incluse, perché vengono sempre allocate da extent misti. Le pagine PFS vengono incluse se vengono allocate da un extent uniforme.

È possibile utilizzare la total_pages colonna nella vista del catalogo sys.allocation_units per restituire il numero di pagine riservate di ogni unità di allocazione nell'oggetto utente. Tuttavia, la total_pages colonna include pagine IAM.
internal_object_reserved_page_count bigint Numero totale di pagine negli extent uniformi allocate per gli oggetti interni nel file. Sono incluse nel conteggio le pagine non utilizzate da un extent allocato.

Le pagine IAM non sono incluse, perché vengono sempre allocate da extent misti. Le pagine PFS vengono incluse se vengono allocate da un extent uniforme.

Non esistono viste del catalogo o oggetti a gestione dinamica che restituiscono il conteggio delle pagine di ogni oggetto interno.
mixed_extent_page_count bigint Numero totale di pagine allocate e non allocate negli extent misti allocati nel file. Gli extent misti contengono le pagine allocate a oggetti diversi. In questo conteggio sono incluse tutte le pagine IAM nel file.
modified_extent_page_count bigint Si applica a: SQL Server 2016 (13.x) SP2 e versioni successive.

Numero totale di pagine modificate negli extent allocati del file dall'ultimo backup completo del database. Il numero di pagine modificate può essere usato per tenere traccia del numero di modifiche differenziali nel database dall'ultimo backup completo, per decidere se è necessario il backup differenziale.
pdw_node_id int Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW)

Identificatore del nodo in cui è attiva la distribuzione.
distribution_id int Si applica a: Azure Synapse Analytics, Piattaforma di analisi (PDW)

ID numerico univoco associato alla distribuzione.

Osservazioni:

I conteggi di pagine vengono sempre eseguiti a livello di extent. Pertanto, i valori del conteggio delle pagine sono sempre un multiplo di otto. Agli extent contenenti le pagine di allocazione GAM (Global Allocation Map, mappa di allocazione globale) e SGAM (Shared Global Allocation Map, mappa di allocazione globale condivisa) vengono allocati extent uniformi. Non sono inclusi nei conteggi delle pagine descritte in precedenza. Per altre informazioni su pagine ed extent, vedere Guida all'architettura di pagine ed extent.

Il contenuto dell'archivio delle versioni corrente si trova in sys.dm_tran_version_store. Viene tenuto traccia delle pagine dell'archivio delle versioni a livello di file anziché a livello di sessione o attività in quanto tali pagine sono risorse globali. Una sessione può generare versioni, ma le versioni non possono essere rimosse al termine della sessione. È necessario considerare l'operazione di pulizia dell'archivio delle versioni come la transazione con esecuzione più lunga che deve accedere alla versione precedente. La transazione con esecuzione più lunga correlata alla pulizia dell'archivio versioni può essere individuata visualizzando la colonna elapsed_time_seconds in sys.dm_tran_active_snapshot_database_transactions.

Le modifiche frequenti nella mixed_extent_page_count colonna possono indicare un uso elevato delle pagine SGAM. In questo caso, è possibile rilevare numerose attese PAGELATCH_UP in cui la risorsa attesa è una pagina SGAM. Per altre informazioni, vedere sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) e sys.dm_os_latch_stats (Transact-SQL).

User objects (Oggetti utente)

Gli oggetti seguenti vengono inclusi nei contatori di pagine degli oggetti utente:

  • Tabelle e indici definiti dall'utente
  • Tabelle e indici di sistema
  • Tabelle e indici temporanei globali
  • Tabelle e indici temporanei locali
  • Variabili di tabella
  • Tabelle restituite nelle funzioni con valori di tabella

Oggetti interni

Gli oggetti interni sono solo in tempdb. Gli oggetti seguenti vengono inclusi nei contatori di pagine degli oggetti interni:

  • Tabelle di lavoro per le operazioni di spooling o di cursore e l'archiviazione di LOB (Large Object) temporanei.
  • File di lavoro per le operazioni quali un hash join
  • Operazioni di ordinamento

Cardinalità delle relazioni

Da Per Relationship
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id Uno-a-uno

Autorizzazioni

In SQL Server 2019 (15.x) e versioni precedenti e Istanza gestita di SQL, è necessaria VIEW SERVER STATE l'autorizzazione.

In SQL Server 2022 (16.x) e versioni successive è richiesta l'autorizzazione VIEW SERVER PERFORMANCE STATE per il server.

In database SQL obiettivi di servizio Basic, S0 e S1 e per i database nei pool elastici, è necessario l'account amministratore del server, l'account amministratore di Microsoft Entra o l'appartenenza al ruolo del ##MS_ServerStateReader## server. Per tutti gli altri obiettivi di servizio database SQL, è necessaria l'autorizzazione VIEW DATABASE STATE per il database o l'adesione ruolo del server ##MS_ServerStateReader##.

Esempi

Determinare la quantità di spazio disponibile in tempdb

La query seguente restituisce il numero totale di pagine libere e lo spazio disponibile totale in megabyte (MB) disponibile in tutti i file di dati 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;

Determinare la quantità di spazio usata dagli oggetti utente

La query seguente restituisce il numero totale di pagine usate dagli oggetti utente e lo spazio totale utilizzato dagli oggetti utente in 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;

Vedi anche