Partilhar via


sys.dm_db_file_space_usage (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)

Retorna informações de uso de espaço para cada arquivo de dados no banco de dados.

Observação

Para chamar isso do Azure Synapse Analytics ou do PDW (Analytics Platform System), use o nome sys.dm_pdw_nodes_db_file_space_usage. Não há suporte a essa sintaxe para o pool de SQL sem servidor no Azure Synapse Analytics.

Nome da coluna Tipo de dados Descrição
database_id smallint ID do banco de dados.

No Banco de Dados SQL do Azure, os valores são exclusivos em um único banco de dados ou em um pool elástico, mas não em um servidor lógico.
file_id smallint ID do arquivo.

file_id Mapeia para file_id em sys.dm_io_virtual_file_stats e para fileID em sys.sysfiles.
filegroup_id smallint Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.

ID do grupo de arquivos.
total_page_count bigint Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.

Número total de páginas no arquivo de dados.
allocated_extent_page_count bigint Aplica-se a: SQL Server 2012 (11.x) e versões posteriores.

Número total de páginas nas extensões alocadas no arquivo de dados.
unallocated_extent_page_count bigint Número total de páginas nas extensões não alocadas no arquivo de dados.

As páginas não utilizadas em extensões alocadas não estão incluídas.
version_store_reserved_page_count bigint Número total de páginas nas extensões uniformes alocadas para o repositório de versão. As páginas do repositório de versão nunca são alocadas de eventos mistos.

As páginas do IAM não são incluídas, pois são sempre alocadas de extensões mistas. As páginas PFS serão incluídas se forem alocadas de uma extensão uniforme.

Para obter mais informações, veja sys.dm_tran_version_store (Transact-SQL).
user_object_reserved_page_count bigint Número total de páginas alocadas de extensões uniformes para objetos de usuário no banco de dados. Páginas não usadas de uma extensão alocada são incluídas na contagem.

As páginas do IAM não são incluídas, pois são sempre alocadas de extensões mistas. As páginas PFS serão incluídas se forem alocadas de uma extensão uniforme.

Você pode usar a total_pages coluna na exibição de catálogo sys.allocation_units para retornar a contagem de páginas reservadas de cada unidade de alocação no objeto de usuário. No entanto, a coluna inclui páginas do total_pages IAM.
internal_object_reserved_page_count bigint Número total de páginas nas extensões uniformes alocadas para objetos internos no arquivo. Páginas não usadas de uma extensão alocada são incluídas na contagem.

As páginas do IAM não são incluídas, pois são sempre alocadas de extensões mistas. As páginas PFS serão incluídas se forem alocadas de uma extensão uniforme.

Não há exibição do catálogo ou objeto de gerenciamento dinâmico que retorne a contagem de páginas de cada objeto interno.
mixed_extent_page_count bigint Número total de páginas alocadas e não alocadas nas extensões mistas alocadas no arquivo. As extensões mistas contêm páginas alocadas a objetos diferentes. Essa contagem inclui todas as páginas IAM no arquivo.
modified_extent_page_count bigint Aplica-se a: SQL Server 2016 (13.x) SP2 e versões posteriores.

Número total de páginas modificadas em extensões alocadas do arquivo desde o último backup completo do banco de dados. A contagem de páginas modificada pode ser usada para controlar o número de alterações diferenciais no banco de dados desde o último backup completo, para decidir se o backup diferencial é necessário.
pdw_node_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

O identificador do nó em que essa distribuição está ativada.
distribution_id int Aplica-se a: Azure Synapse Analytics, Analytics Platform System (PDW)

A ID numérica exclusiva associada à distribuição.

Comentários

As contagens de página estão sempre no nível de extensão. Portanto, os valores de contagem de páginas são sempre um múltiplo de oito. As extensões que contêm páginas de alocação GAM (Global Alocação Map) e SGAM (Shared Global Allocation Map) são extensões uniformes alocadas. Eles não estão incluídos nas contagens de páginas descritas anteriormente. Para obter mais informações sobre páginas e extensões, confira o Guia de arquitetura de páginas e extensões.

O conteúdo do repositório da versão atual está em sys.dm_tran_version_store. As páginas de repositório de versão são controladas no nível de arquivo, em vez de no nível de sessão e tarefa, porque são recursos globais. Uma sessão pode gerar versões, mas as versões não podem ser removidas quando a sessão termina. A limpeza total do repositório de versão deve considerar a transação mais longa em execução que exige acesso à versão particular. A transação de execução mais longa relacionada à limpeza do repositório de versão pode ser descoberta exibindo a coluna elapsed_time_seconds em sys.dm_tran_active_snapshot_database_transactions.

Mudanças frequentes na mixed_extent_page_count coluna podem indicar uso intenso de páginas SGAM. Quando isso ocorrer, você poderá ver muitas esperas de PAGELATCH_UP nas quais o recurso de espera é uma página SGAM. Para obter mais informações, consulte sys.dm_os_waiting_tasks (Transact-SQL), sys.dm_os_wait_stats (Transact-SQL) e sys.dm_os_latch_stats (Transact-SQL).

Objetos de usuário

Os objetos a seguir são incluídos nos contadores de páginas de objeto do usuário:

  • Tabelas e índices definidos pelo usuário
  • Índices e tabelas do sistema
  • Tabelas e índices temporários globais
  • Tabelas e índices temporários locais
  • Variáveis de tabela
  • Tabelas retornadas nas funções com valor de tabela

Objetos internos

Os objetos internos estão apenas em tempdb. Os seguintes objetos são incluídos nos contadores de páginas de objeto de usuário:

  • Tabelas de trabalho para operações de cursor ou spool e armazenamento temporário de LOB (Objeto Grande)
  • Arquivos de trabalho para operações, como junção de hash
  • Execuções de classificação

Cardinalidades de relações

De Para Relação
sys.dm_db_file_space_usage.database_id, file_id sys.dm_io_virtual_file_stats.database_id, file_id Um-para-um

Permissões

No SQL Server 2019 (15.x) e versões anteriores, e na Instância Gerenciada de SQL, requer VIEW SERVER STATE permissão.

No SQL Server 2022 (16.x) e versões posteriores, requer a permissão VIEW SERVER PERFORMANCE STATE no servidor.

Nos objetivos de serviço do Banco de Dados SQL Básico, S0 e S1 e para bancos de dados em pools elásticos, é necessário ter a conta do administrador do servidor, a conta do administrador do Microsoft Entra ou a associação à ##MS_ServerStateReader## função de servidor. Em todos os outros objetivos de serviço do Banco de Dados SQL, a permissão VIEW DATABASE STATE no banco de dados ou a associação à função de servidor ##MS_ServerStateReader## são necessárias.

Exemplos

Determine a quantidade de espaço livre em tempdb

A consulta a seguir retorna o número total de páginas livres e o espaço livre total em megabytes (MB) disponíveis em todos os arquivos de dados no 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;

Determinar a quantidade de espaço usada pelos objetos do usuário

A consulta a seguir retorna o número total de páginas usadas por objetos de usuário e o espaço total usado por objetos de usuário no 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;

Confira também