Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O otimizador de consulta usa estatísticas sobre colunas para criar planos de consulta que melhorem o desempenho da consulta. As estatísticas são coletadas das tabelas no banco de dados e armazenadas nos metadados do banco de dados.
As estatísticas são criadas automaticamente, mas também podem ser criadas manualmente. Por exemplo, as estatísticas são criadas automaticamente para colunas de chave de índice quando o índice é criado. Para obter mais informações sobre como criar estatísticas, consulte Estatísticas.
Os dados da tabela normalmente são alterados ao longo do tempo à medida que as linhas são inseridas, atualizadas e excluídas. Isso significa que as estatísticas precisam ser atualizadas periodicamente. Por padrão, as estatísticas em tabelas baseadas em disco são atualizadas automaticamente quando o otimizador determina que elas podem estar desatualizadas.
As estatísticas em tabelas com otimização de memória não são atualizadas por padrão. Em vez disso, você precisa atualizá-los manualmente. Use UPDATE STATISTICS (Transact-SQL) para colunas, índices ou tabelas individuais. Use sp_updatestats (Transact-SQL) para atualizar estatísticas para todos os usuários e tabelas internas no banco de dados.
Ao usar CREATE STATISTICS (Transact-SQL) ou UPDATE STATISTICS (Transact-SQL), você deve especificar NORECOMPUTE para desabilitar a atualização automática de estatísticas para tabelas com otimização de memória. Para tabelas baseadas em disco, sp_updatestats (Transact-SQL) só atualiza as estatísticas se a tabela tiver sido modificada desde o último sp_updatestats (Transact-SQL). Para tabelas com otimização de memória, sp_updatestats (Transact-SQL) sempre gera estatísticas atualizadas.
sp_updatestats (Transact-SQL) é uma boa opção para tabelas com otimização de memória; caso contrário, você precisa saber quais tabelas têm alterações significativas para que você possa atualizar as estatísticas individualmente.
As estatísticas podem ser geradas amostrando os dados ou realizando uma verificação completa. As estatísticas amostradas usam apenas um exemplo dos dados da tabela para estimar a distribuição de dados. As estatísticas de varredura completa examinam toda a tabela para determinar a distribuição dos dados. As estatísticas completas geralmente são mais precisas, mas demoram mais tempo para serem computadas. As estatísticas amostradas podem ser coletadas mais rapidamente.
As tabelas baseadas em disco usam estatísticas de exemplo por padrão. As tabelas otimizadas para memória só dão suporte a estatísticas de varredura completa. Ao usar CREATE STATISTICS (Transact-SQL) ou UPDATE STATISTICS (Transact-SQL), você deve especificar a opção FULLSCAN para tabelas com otimização de memória.
Considerações adicionais para estatísticas em tabelas com otimização de memória:
Índices em tabelas com otimização de memória são criados com a tabela. As estatísticas nas colunas de chave de índice são criadas quando a tabela está vazia. Portanto, essas estatísticas precisam ser atualizadas depois que os dados são carregados na tabela.
Para procedimentos armazenados compilados nativamente, os planos de execução para consultas no procedimento são otimizados quando o procedimento é compilado. Isso acontece somente quando o procedimento é criado e quando o servidor é reiniciado, não quando as estatísticas são atualizadas. Portanto, as tabelas precisam conter um conjunto representativo de dados e as estatísticas precisam ser up-to-date antes que os procedimentos sejam criados. (Os procedimentos armazenados compilados nativamente são recompilados se o banco de dados for colocado offline e colocado online novamente ou se houver uma reinicialização do servidor.)
Diretrizes para estatísticas ao implantar tabelas de Memory-Optimized
Para garantir que o otimizador de consulta tenha estatísticas de data up-toao criar planos de consulta, implante tabelas com otimização de memória usando estas cinco etapas:
Crie tabelas e índices. Os índices são especificados em linha nas instruções
CREATE TABLE.Carregue dados nas tabelas.
Atualize as estatísticas nas tabelas.
Crie procedimentos armazenados que acessem as tabelas.
Execute a carga de trabalho, que pode conter uma combinação de procedimentos armazenados Transact-SQL compilados e interpretados nativamente, bem como lotes ad hoc.
A criação de procedimentos armazenados compilados nativamente depois de carregar os dados e atualizar as estatísticas garante que o otimizador tenha estatísticas disponíveis para as tabelas com otimização de memória. Isso garantirá planos de consulta eficientes quando o procedimento for compilado.
Diretrizes para atualização de estatísticas em tabelas de Memory-Optimized
Para manter as estatísticas up-toatualizadas, atualize regularmente as estatísticas em tabelas otimizadas para memória.
Se os dados forem alterados com frequência, você deverá atualizar estatísticas com frequência. Por exemplo, atualize as estatísticas da tabela após uma atualização em lote. Depois de atualizar as estatísticas, remova e recrie procedimentos armazenados compilados nativamente para que eles possam se beneficiar das estatísticas atualizadas.
.
Não atualize estatísticas durante o pico de carga de trabalho.
Para atualizar estatísticas:
Usar o SQL Server Management Studio para criar um plano de manutenção com uma tarefa de estatística de atualização
Ou atualize as estatísticas por meio de um script Transact-SQL, conforme discutido abaixo.
Para atualizar as estatísticas de uma única tabela com otimização de memória (myschema. Mytable), execute o seguinte script:
UPDATE STATISTICS myschema.Mytable WITH FULLSCAN, NORECOMPUTE
Para atualizar as estatísticas de todas as tabelas com otimização de memória no banco de dados atual, execute o seguinte script:
DECLARE @sql NVARCHAR(MAX) = N''
SELECT @sql += N'
UPDATE STATISTICS ' + quotename(schema_name(schema_id)) + N'.' + quotename(name) + N' WITH FULLSCAN, NORECOMPUTE'
FROM sys.tables WHERE is_memory_optimized=1
EXEC sp_executesql @sql
Para atualizar as estatísticas de todas as tabelas no banco de dados, execute sp_updatestats (Transact-SQL).
O exemplo a seguir relata quando as estatísticas em tabelas com otimização de memória foram atualizadas pela última vez. Essas informações podem ajudar você a decidir se precisa atualizar as estatísticas.
select t.object_id, t.name, sp.last_updated as 'stats_last_updated'
from sys.tables t join sys.stats s on t.object_id=s.object_id cross apply sys.dm_db_stats_properties(t.object_id, s.stats_id) sp
where t.is_memory_optimized=1