sys.dm_db_stats_properties (Transact-SQL)
Aplica-se a: SQL ServerBanco de Dados SQL do Azure Instância Gerenciada de SQL do Azure
Retorna propriedades de estatísticas para o objeto de banco de dados especificado (tabela ou exibição indexada) no banco de dados atual do SQL Server. Para tabelas particionadas, consulte o sys.dm_db_incremental_stats_properties semelhante.
Sintaxe
sys.dm_db_stats_properties (object_id, stats_id)
Argumentos
object_id
É a ID do objeto no banco de dados atual para o qual as propriedades de uma de suas estatísticas é solicitada. object_id é int.
stats_id
É a ID de estatísticas do object_idespecificado. A ID de estatísticas pode ser obtida na exibição de gerenciamento dinâmico sys.stats . stats_id é int.
Tabela retornada
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
object_id | int | ID do objeto (tabela ou exibição indexada) para o qual as propriedades do objeto de estatísticas serão retornadas. |
stats_id | int | ID do objeto de estatísticas. É exclusiva na tabela ou exibição indexada. Para obter mais informações, veja sys.stats (Transact-SQL). |
last_updated | datetime2 | Data e hora da última atualização do objeto de estatísticas. Para obter mais informações, consulte a seção de Comentários nesta página. |
rows | bigint | O número total de linhas da tabela ou exibição indexada na última atualização das estatísticas. Se as estatísticas forem filtradas ou corresponderem a um índice filtrado, o número de linhas talvez seja menor do que o número de linhas na tabela. |
rows_sampled | bigint | O número total de linhas amostradas para cálculos de estatísticas. |
etapas | int | O número de etapas no histograma. Para obter mais informações, veja DBCC SHOW_STATISTICS (Transact-SQL). |
unfiltered_rows | bigint | O número total de linhas da tabela antes da aplicação da expressão de filtro (para estatísticas filtradas). Se as estatísticas não forem filtradas, unfiltered_rows será igual ao valor retornado na coluna de linhas. |
modification_counter | bigint | Número total de modificações da coluna de estatísticas principal (a coluna em que o histograma é criado) desde que as últimas estatísticas de tempo foram atualizadas. Tabelas com otimização de memória: a partir do SQL Server 2016 (13.x) e no Banco de Dados SQL do Azure, esta coluna contém: número total de modificações para a tabela desde a última vez que as estatísticas foram atualizadas ou o banco de dados foi reiniciado. |
persisted_sample_percent | float | Percentual de amostra persistente usado para as atualizações de estatísticas que não especifica explicitamente um percentual de amostragem. Se o valor for zero, nenhum percentual de amostra persistente será definido para essa estatística. Aplica-se a: SQL Server 2016 (13.x). SP1 CU4 |
Comentários
sys.dm_db_stats_properties retorna um conjunto de linhas vazio em qualquer uma das seguintes condições:
- object_id ou stats_id é NULL.
- O objeto especificado não foi encontrado ou não corresponde a uma tabela ou exibição indexada.
- A ID de estatísticas especificada não corresponde às estatísticas existentes para a ID de objeto especificada.
- O usuário atual não tem permissões para exibir o objeto de estatísticas.
Esse comportamento permite o uso seguro de sys.dm_db_stats_properties quando aplicado de forma cruzada a linhas em exibições como sys.objects e sys.stats.
A data de atualização de estatísticas é armazenada no objeto de blob de estatísticas, junto com o 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 coluna last_updated é NULL. Esse é o caso para estatísticas filtradas para as quais o predicado não retorna nenhuma linha ou para novas tabelas vazias.
Permissões
Requer que o usuário tenha permissões selecionadas em colunas de estatísticas, que ele possua a tabela ou que seja membro da função de servidor fixa sysadmin
, da função de banco de dados fixa db_owner
ou da função de banco de dados fixa db_ddladmin
.
Exemplos
a. Exemplo simples
O exemplo a seguir retorna as estatísticas da Person.Person
tabela no banco de dados AdventureWorks.
SELECT * FROM sys.dm_db_stats_properties (object_id('Person.Person'), 1);
B. Retornando todas as propriedades de estatísticas para uma tabela
O exemplo a seguir retorna 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. Retornando propriedades de estatísticas para objetos modificados com frequência
O exemplo a seguir retorna todas as tabelas, exibições indexadas e estatísticas do banco de dados atual para o qual a coluna principal foi modificada mais de 1000 vezes desde a última atualização de estatísticas.
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;
Confira também
DBCC SHOW_STATISTICS (Transact-SQL)
sys.stats (Transact-SQL)
Funções e exibições de gerenciamento dinâmico relacionadas a objetos (Transact-SQL)
Exibiçõ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)