sys.dm_db_stats_properties (Transact-SQL)

Aplica-se a:SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

A sys.dm_db_stats_properties função de gestão dinâmica devolve estatísticas para o objeto de base de dados especificado na base de dados atual.

Para tabelas particionadas, veja também a sys.dm_db_incremental_stats_properties semelhante.

Sintaxe

sys.dm_db_stats_properties (object_id, stats_id)  

Arguments

object_id

O ID do objeto na base de dados atual. object_id é inteligência.

stats_id

O ID das estatísticas para o especificado object_id. Podes obter o ID de estatísticas na vista de gestão dinâmica do sys.stats . stats_id é inteligência.

Tabela retornada

Nome da coluna Tipo de dados Description
object_id int ID do objeto (tabela ou vista indexada).
stats_id int ID do objeto de estatística. É exclusivo dentro da tabela ou do modo de exibição indexado. Para mais informações, consulte sys.stats (Transact-SQL).
last_updated datetime2 Data e hora em que o objeto de estatísticas foi atualizado pela última vez. Para obter mais informações, consulte a seção Observações neste artigo.
rows bigint Número total de linhas na tabela ou na vista indexada quando as estatísticas foram atualizadas pela última vez. Se as estatísticas forem filtradas ou corresponderem a um índice filtrado, o número de linhas poderá ser menor do que o número de linhas na tabela.
rows_sampled bigint Número total de linhas amostradas para cálculos estatísticos.
steps int Número de passos no histograma. Para mais informações, consulte o DBCC SHOW_STATISTICS (Transact-SQL).
unfiltered_rows bigint Número total de linhas na tabela antes de aplicar a expressão do filtro (para estatísticas filtradas). Se as estatísticas não forem filtradas, unfiltered_rows é igual ao valor devolvido na rows coluna.
modification_counter bigint Número total de modificações para a coluna principal de estatísticas (a coluna sobre a qual o histograma é construído) desde a última atualização das estatísticas.

Tabelas otimizadas para memória: a partir do SQL Server 2016 (13.x) e no Base de Dados SQL do Azure esta coluna contém: número total de modificações para a tabela desde a última atualização das estatísticas ou o reinício da base de dados.
persisted_sample_percent float Porcentagem de amostra persistente usada para atualizações estatísticas que não especificam explicitamente uma porcentagem de amostragem. Se o valor for zero, nenhuma porcentagem de amostra persistente será definida para essa estatística.

Aplica-se a: SQL Server 2016 (13.x) SP1 CU4 e versões posteriores

Observações

A sys.dm_db_stats_properties função devolve um conjunto de linhas vazio sob qualquer uma das seguintes condições:

  • object_id ou stats_id é NULL.
  • O objeto especificado não é encontrado ou não corresponde a uma tabela ou a uma vista indexada.
  • O ID de estatísticas especificado não corresponde às estatísticas existentes para o ID do objeto especificado.
  • O utilizador atual não tem permissões para visualizar o objeto de estatísticas.

Este comportamento permite o uso seguro de sys.dm_db_stats_properties quando aplicado cruzadamente a linhas em vistas como sys.objects e sys.stats.

A data de atualização das estatísticas é armazenada no objeto de blob de estatísticas juntamente com o de histograma e o vetor de densidade , não nos metadados. Quando nenhum dado é lido para gerar dados estatísticos, o blob de estatísticas não é criado, a data não está disponível e a last_updated coluna é NULL. Esta condição aplica-se a estatísticas filtradas para as quais o predicado não devolve linhas, ou a novas tabelas vazias.

Permissions

Precisas SELECT de permissões nas colunas de estatísticas, ou tens de ser dono da tabela, ou ser membro do sysadmin papel fixo do servidor, do db_owner papel fixo na base de dados, ou do db_ddladmin papel fixo na base de dados.

Examples

A. Exemplo simples

O exemplo seguinte devolve informações sobre as estatísticas da Person.Person tabela na AdventureWorks base de dados.

SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);

B. Devolver todas as propriedades estatísticas para uma tabela

O exemplo seguinte devolve propriedades de todas as estatísticas que existem para a tabela Sales.SalesOrderDetail.

SELECT 
    OBJECT_SCHEMA_NAME(stat.object_id) AS schema_name,
    OBJECT_NAME(stat.object_id)        AS table_name,
    sp.stats_id, 
    stat.[name], 
    stat.filter_definition, 
    sp.last_updated, 
    sp.[rows], 
    sp.rows_sampled, 
    sp.steps,
    sp.unfiltered_rows, 
    sp.modification_counter   
FROM sys.stats AS stat   
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = OBJECT_ID(N'Sales.SalesOrderDetail')

C. Propriedades de estatísticas de retorno para objetos frequentemente modificados

O exemplo seguinte devolve todas as tabelas, vistas indexadas e estatísticas na base de dados atual para as quais a coluna inicial foi modificada mais de 1.000 vezes desde a última atualização estatística.

SELECT 
    OBJECT_SCHEMA_NAME(obj.[object_id]) AS schema_name,
    obj.[name],
    stat.[name],
    stat.stats_id, 
    sp.last_updated, 
    sp.modification_counter  
FROM sys.objects AS obj   
INNER JOIN sys.stats AS stat ON stat.object_id = obj.object_id  
OUTER APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE sp.modification_counter > 1000;