Os livros on-line têm a dizer sobre a otimização de consultas no PolyBase:
O otimizador de consulta toma uma decisão baseada em custo para enviar a computação para o Hadoop quando isso melhorar o desempenho da consulta. Ele usa estatísticas em tabelas externas para tomar a decisão baseada em custo. A computação push cria tarefas MapReduce e aproveita os recursos computacionais distribuídos do Hadoop.
Minha pergunta - como e quando o otimizador coleta essas estatísticas?
Dentro do mecanismo relacional do SQL Server, as estatísticas podem ser criadas implícita ou explicitamente, envelhecem conforme ocorrem as gravações e podem ser atualizadas explicitamente ou durante a manutenção da tabela. Existem estratégias semelhantes empregadas no PolyBase?
Dado que os dados podem ser carregados no blob do Hadoop/Azure sem que o SQL Server os veja no caminho, e os volumes de dados serão grandes (provavelmente) a criação de estatísticas ad hoc em tempo de execução por meio de amostragem ou similar parece uma estratégia improvável para mim.
A criação e manutenção das estatísticas do PolyBase está nas mãos do DBA.
O guia "primeiros passos" fornece várias etapas para estabelecer o PolyBase, a última das quais é CREATE STATISTICS referenciando a tabela externa.
A documentação em CREATE STATISTICS declara:
e mais abaixo
A partir disso concluo que cabe ao administrador do sistema
Imagina-se que, à medida que o produto amadurece e ganha força, mais recursos do mecanismo de dados atual (criação automática e estatísticas de atualização automática) serão transferidos para o PolyBase. Por outro lado, você realmente quer esperar pelos resultados enquanto uma loja de 5 PB é amostrada?