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:✅ extremidade de análise SQL e Warehouse no Microsoft Fabric
O Warehouse no Microsoft Fabric usa um mecanismo de consulta para criar um plano de execução para uma determinada consulta SQL. Quando submete uma consulta, o otimizador de consulta tenta enumerar todos os planos possíveis e escolher o candidato mais eficiente. Para determinar qual plano exigiria a menor sobrecarga (E/S, CPU, memória), o mecanismo precisa ser capaz de avaliar a quantidade de trabalho ou linhas que podem ser processadas em cada operador. Depois, com base no custo de cada plano, escolhe aquele com menor quantidade de trabalho estimado. As estatísticas são objetos que contêm informações relevantes sobre os seus dados, para permitir que o otimizador de consultas estime esses custos.
Como utilizar as estatísticas
Para obter um desempenho de consulta ideal, é importante ter estatísticas precisas. Atualmente, o Microsoft Fabric oferece suporte aos seguintes caminhos para fornecer estatísticas relevantes e atualizadas:
- Estatísticas definidas pelo utilizador
- O utilizador usa manualmente a sintaxe DDL (linguagem de definição de dados) para criar, atualizar e descartar estatísticas, conforme necessário
- Estatísticas automáticas
- O mecanismo cria e mantém estatísticas em tempo de consulta
Estatísticas manuais para todas as tabelas
A opção tradicional de manter o estado de funcionamento das estatísticas está disponível no Microsoft Fabric. Os usuários podem criar, atualizar e descartar estatísticas de coluna única baseadas em histograma com CREATE STATISTICS, UPDATE STATISTICS e DROP STATISTICS, respectivamente. Os usuários também podem visualizar o conteúdo de estatísticas de coluna única baseadas em histograma com DBCC SHOW_STATISTICS. Atualmente, é suportada uma versão limitada destas declarações.
- Se criar estatísticas manualmente, considere concentrar-se em colunas muito usadas em sua carga de trabalho de consulta (especificamente em GROUP BYs, ORDER BYs, filtros e JOINs).
- Considere atualizar estatísticas em nível de coluna regularmente após alterações de dados que alterem significativamente a contagem de linhas ou a distribuição dos dados.
Exemplos de manutenção manual de estatísticas
Para criar estatísticas na dbo.DimCustomer tabela, com base em todas as linhas de uma coluna CustomerKey:
CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;
Para atualizar manualmente o objeto DimCustomer_CustomerKey_FullScande estatísticas , talvez após uma grande atualização de dados:
UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;
Para mostrar informações sobre o objeto de estatísticas:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");
Para mostrar apenas informações sobre o histograma do objeto de estatística:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;
Para eliminar manualmente o objeto de estatísticas DimCustomer_CustomerKey_FullScan:
DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;
Os seguintes objetos T-SQL também podem ser usados para verificar estatísticas criadas manualmente e automaticamente no Microsoft Fabric:
- sys.stats vista de catálogo
- vista de catálogo sys.stats_columns
- função do sistema STATS_DATE
Estatísticas automáticas ao consultar
Sempre que emitir uma consulta e o otimizador de consultas requerer estatísticas para a exploração do plano, o Microsoft Fabric cria automaticamente essas estatísticas se ainda não existirem. Uma vez que as estatísticas tenham sido criadas, o otimizador de consultas pode utilizá-las para estimar os custos do plano da consulta de acionamento. Além disso, se o mecanismo de consulta determinar que as estatísticas existentes relevantes para a consulta não refletem mais com precisão os dados, essas estatísticas serão atualizadas automaticamente. Como essas operações automáticas são feitas de forma síncrona, pode esperar-se que a duração da consulta inclua esse tempo se as estatísticas necessárias ainda não existirem ou se tiverem ocorrido alterações significativas nos dados desde a última atualização das estatísticas.
Verificar estatísticas automáticas no momento da consulta
Existem vários casos em que se pode esperar algum tipo de estatística automática. As mais comuns são estatísticas baseadas em histograma, que são solicitadas pelo otimizador de consulta para colunas referenciadas em GROUP BYs, JOINs, cláusulas DISTINCT, filtros (cláusulas WHERE) e ORDER BYs. Por exemplo, se quiser ver a criação automática dessas estatísticas, uma consulta acionará a criação se as estatísticas para COLUMN_NAME ainda não existirem. Por exemplo:
SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;
Neste caso, deve esperar que as estatísticas para COLUMN_NAME tenham sido criadas. Se a coluna também fosse uma coluna varchar, também veria estatísticas de comprimento médio da coluna criadas. Se quiser validar que as estatísticas foram criadas automaticamente, pode executar a seguinte consulta:
select
object_name(s.object_id) AS [object_name],
c.name AS [column_name],
s.name AS [stats_name],
s.stats_id,
STATS_DATE(s.object_id, s.stats_id) AS [stats_update_date],
s.auto_created,
s.user_created,
s.stats_generation_method_desc
FROM sys.stats AS s
INNER JOIN sys.objects AS o
ON o.object_id = s.object_id
LEFT JOIN sys.stats_columns AS sc
ON s.object_id = sc.object_id
AND s.stats_id = sc.stats_id
LEFT JOIN sys.columns AS c
ON sc.object_id = c.object_id
AND c.column_id = sc.column_id
WHERE o.type = 'U' -- Only check for stats on user-tables
AND s.auto_created = 1
AND o.name = '<YOUR_TABLE_NAME>'
ORDER BY object_name, column_name;
Agora, pode encontrar o statistics_name da estatística de histograma gerada automaticamente (deve ser algo como _WA_Sys_00000007_3B75D760) e executar o seguinte T-SQL:
DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');
Por exemplo:
DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');
O Updated valor no conjunto de resultados do DBCC SHOW_STATISTICS deve ser uma data (em UTC) semelhante à de quando executou a consulta GROUP BY original.
Essas estatísticas geradas automaticamente podem ser aproveitadas em consultas subsequentes pelo mecanismo de consulta para melhorar a estimativa de custos do plano e a eficiência de execução. Se ocorrerem alterações suficientes na tabela, o mecanismo de consulta também atualizará essas estatísticas para melhorar a otimização da consulta. O mesmo exercício de amostra anterior pode ser aplicado depois de alterar significativamente a tabela. No Fabric, o mecanismo de consulta SQL usa o mesmo limite de recompilação do SQL Server 2016 (13.x) para atualizar estatísticas.
Tipos de estatísticas geradas automaticamente
No Microsoft Fabric, há vários tipos de estatísticas que são geradas automaticamente pelo mecanismo para melhorar os planos de consulta. Atualmente, eles podem ser encontrados em sys.stats , embora nem todos sejam acionáveis:
- Estatísticas de histograma
- Criado para cada coluna que precisa de estatísticas de histograma no momento da consulta
- Esses objetos contêm histograma e informações de densidade sobre a distribuição de uma coluna específica. Semelhante às estatísticas criadas automaticamente no tempo de consulta nos pools dedicados do Azure Synapse Analytics.
- O nome começa com
_WA_Sys_. - Os conteúdos podem ser visualizados com DBCC SHOW_STATISTICS
- Estatísticas de comprimento médio de coluna
- Criado para colunas de caracteres variáveis (varchar) maiores que 100 que necessitam do comprimento médio da coluna no momento da consulta.
- Esses objetos contêm um valor que representa o tamanho médio da linha da coluna varchar no momento da criação das estatísticas.
- O nome começa com
ACE-AverageColumnLength_. - Os conteúdos não podem ser visualizados e não é possível interagir com os conteúdos pelo utilizador.
- Estatísticas de cardinalidade baseadas em tabelas
- Criado para cada tabela que necessite de estimação de cardinalidade no momento da consulta, apenas se outros metadados de contagem de linhas não estiverem disponíveis.
- Esses objetos contêm uma estimativa do rowcount de uma tabela.
- Com o nome
ACE-Cardinality. - Os conteúdos não podem ser visualizados e não são acionáveis pelo utilizador.
- Criado para cada tabela que necessite de estimação de cardinalidade no momento da consulta, apenas se outros metadados de contagem de linhas não estiverem disponíveis.
Otimizações incorporadas nas estatísticas do Fabric
Atualização incremental das estatísticas
A atualização incremental das estatísticas é uma melhoria de desempenho para atualizações automáticas das estatísticas das colunas.
Normalmente, quando a estatística de uma coluna é automaticamente atualizada, uma amostra da coluna inteira deve ser digitalizada para atualizar a estatística. Esta funcionalidade acelera estas operações sempre que possível, amostrando apenas as linhas adicionadas desde a última atualização e fundindo esses dados com histogramas existentes.
Quando o motor solicita uma atualização de uma estatística de coluna, determina automaticamente se este método de atualização mais rápida pode ser utilizado. As atualizações incrementais de estatísticas normalmente beneficiam tabelas maiores que passaram principalmente por operações de INSERT desde a última atualização estatística.
Atualização proativa das estatísticas
A atualização proativa das estatísticas é um processo totalmente gerido que tenta antecipar as atualizações estatísticas após alterações nos dados.
Esta otimização visa reduzir a probabilidade de uma SELECT consulta sofrer atraso devido a atualizações estatísticas durante a geração do plano de consulta.
As atualizações proativas de estatísticas afetam apenas as estatísticas de histograma geradas automaticamente, que têm a convenção de nomenclatura gerada pelo sistema de _WA_Sys_.
A funcionalidade proativa de atualização de estatísticas está ativada por defeito, mas pode ser configurada usando o comando ALTER DATABASE T-SQL.
Limitações
- Apenas as estatísticas de histograma de coluna única podem ser criadas e modificadas manualmente.
- Não há suporte para a criação de estatísticas com várias colunas.
- Outros objetos de estatísticas podem aparecer em sys.stats, além de estatísticas criadas manualmente e estatísticas criadas automaticamente. Esses objetos não são usados para otimização de consulta.