Partilhar via


sys.dm_db_stats_properties (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Devolve propriedades das estatísticas para o objeto da base de dados especificado (tabela ou vista indexada) na base de dados SQL Server atual. Para tabelas particionadas, veja 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 para o qual se solicitam propriedades de uma das suas estatísticas. object_id é int.

stats_id
É o ID das estatísticas para a object_id especificada. O ID de estatísticas pode ser obtido a partir da visualização de gerenciamento dinâmico sys.stats . stats_id é int.

Tabela retornada

Nome da coluna Tipo de dados Description
object_id int ID do objeto (tabela ou exibição indexada) para o qual retornar as propriedades do objeto de estatísticas.
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 comentários nesta página.
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 que retorna na coluna das linhas.
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 Azure SQL Database 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 Percentagem amostral persistente usada para atualizações estatísticas que não especificam explicitamente uma percentagem 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

Observações

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

  • object_id ou stats_id é NULO.
  • 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 não são lidos dados para gerar dados estatísticos, o blob de estatísticas não é criado, a data não está disponível e a coluna last_updated é NULL. Este é o caso de estatísticas filtradas para as quais o predicado não devolve linhas, ou para novas tabelas vazias.

Permissions

Requer que o utilizador tenha permissões de seleção nas colunas de estatísticas, que o utilizador seja dono da tabela ou que o utilizador seja membro do sysadmin papel fixo do servidor, do db_owner papel fixo na base de dados ou do db_ddladmin papel fixo da base de dados.

Examples

A. Exemplo simples

O exemplo seguinte devolve as estatísticas da Person.Person tabela na base de dados AdventureWorks.

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

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

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

SELECT sp.stats_id, name, filter_definition, last_updated, rows, rows_sampled, steps, unfiltered_rows, modification_counter   
FROM sys.stats AS stat   
CROSS APPLY sys.dm_db_stats_properties(stat.object_id, stat.stats_id) AS sp  
WHERE stat.object_id = object_id('TEST');  

C. Devolver propriedades estatísticas 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 1000 vezes desde a última atualização estatística.

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

Ver também

DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Exibições e funções de gerenciamento dinâmico relacionadas a objetos (Transact-SQL)
Visualizações e funções de gerenciamento dinâmico (Transact-SQL)
sys.dm_db_incremental_stats_properties (Transact-SQL)
sys.dm_db_stats_histogram (Transact-SQL)