Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base 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)