Atualizar
Agora isso é implementado no SQL Server Azure. Gera recomendações
e o gerenciamento de índice pode ser configurado para ser automático .
Ativar gerenciamento automático de índice
Você pode definir o SQL Database Advisor para implementar recomendações automaticamente. À medida que as recomendações estiverem disponíveis, elas serão aplicadas automaticamente. Como em todas as operações de índice gerenciadas pelo serviço, se o impacto no desempenho for negativo, a recomendação será revertida.
Resposta original
Alguns bancos de dados já (meio que) criam índices automaticamente.
Às vezes, no SQL Server, o plano de execução pode incluir um operador Index Spool , em que o RDBMS cria dinamicamente uma cópia indexada dos dados. No entanto, esse spool não é uma parte persistente do banco de dados mantida em sincronia com os dados de origem e não pode ser compartilhado entre as execuções de consultas, o que significa que a execução desses planos pode acabar criando e descartando repetidamente índices temporários nos mesmos dados.
Talvez no futuro, os RDBMSs tenham a capacidade de eliminar dinamicamente e criar índices persistentes de acordo com a carga de trabalho.
O processo de otimização do índice é, no final, apenas uma análise de custo-benefício. Embora seja verdade que os humanos possam ter mais informações sobre a importância relativa de consultas em uma carga de trabalho, em princípio, não há razão para que essas informações não possam ser disponibilizadas ao otimizador. O SQL Server já possui um administrador de recursos que permite que as sessões sejam classificadas em diferentes grupos de carga de trabalho com diferentes alocações de recursos, de acordo com a prioridade.
As DMVs de índice ausentes mencionadas por Kenneth não devem ser implementadas às cegas, pois consideram apenas os benefícios de uma consulta específica e não tentam levar em conta o custo do índice em potencial para outras consultas. Também não consolida índices ausentes semelhantes. por exemplo, a saída deste DMV pode relatar índices ausentes A,B,C
eA,B INCLUDE(C)
Alguns problemas atuais com a ideia são
- A qualidade de qualquer análise automatizada que realmente não crie o índice dependerá muito da precisão do modelo de custo.
- Mesmo no campo da análise automatizada, uma solução offline poderá ser mais completa do que uma solução on-line, pois é imperativo que uma solução on-line não adicione sobrecarga de manutenção de livros grandes ao servidor ativo e interfira em seu objetivo principal de executar consultas.
- Os índices criados automaticamente em resposta à carga de trabalho serão necessariamente criados em resposta a consultas que os considerariam úteis, ficando atrás das soluções que criam os índices antecipadamente.
Provavelmente, é razoável esperar que a precisão dos modelos de custeio melhore ao longo do tempo, mas o ponto 2 parece mais difícil de resolver e o ponto 3 é inerentemente insolúvel.
No entanto, provavelmente a grande maioria das instalações não está nessa situação idealizada com uma equipe qualificada que monitora, diagnostica e antecipa continuamente (ou pelo menos reage a) mudanças nas cargas de trabalho.
O projeto AutoAdmin da Microsoft Research está em execução desde 1996
O objetivo deste projeto é tornar o auto-ajuste e a auto-administração dos bancos de dados, explorando o conhecimento da carga de trabalho
A home page do projeto lista vários projetos intrigantes. Um é particularmente relevante para a questão aqui
Outro problema interessante surge quando não há DBA disponível (por exemplo, um banco de dados incorporado ou uma pequena empresa). Nesses cenários, uma abordagem de ajuste contínuo de índice de baixo toque pode se tornar importante. Nós exploramos soluções ... [no] " Uma abordagem on-line para o ajuste do design físico " no ICDE 2007.
Os autores declaram
Com recursos DBMS cada vez mais comuns, como índices on-line, é atraente explorar soluções mais automáticas para o problema de design físico que avançam no estado da arte.
O artigo apresenta um algoritmo
Suas principais características são:
- À medida que as consultas são otimizadas, identificamos um conjunto relevante de índices de candidatos que melhorariam o desempenho. Esse recurso permite que o processamento de consultas continue paralelamente aos índices criados em segundo plano.
- No momento da execução, rastreamos os benefícios potenciais que perdemos por não ter esses índices candidatos e também a utilidade dos índices existentes na presença de consultas, atualizações e restrições de espaço.
- Depois de reunirmos “evidências” suficientes de que uma alteração no projeto físico é benéfica, acionamos automaticamente criações ou exclusões de índices.
- A natureza on-line do nosso problema implica que geralmente ficaremos atrás das soluções ideais que conhecem o futuro. No entanto, medindo cuidadosamente as evidências, asseguramos que não soframos decisões "tardias" de forma significativa, limitando assim o valor da perda incorrida.
A implementação do algoritmo permite a otimização em resposta a alterações na carga do servidor e também pode abortar a criação de índice se durante a criação a carga de trabalho mudar e o benefício esperado cair abaixo do ponto que é considerado valioso.
A conclusão dos autores sobre o tópico Online versus o ajuste físico tradicional.
Os algoritmos on-line neste trabalho são úteis quando os DBAs são incertos sobre o comportamento futuro da carga de trabalho ou não têm possibilidade de fazer uma análise ou modelagem abrangente. Se um DBA tiver informações completas sobre as características da carga de trabalho, uma análise e implantação estática das ferramentas existentes (por exemplo, [2, 3]) seria uma alternativa melhor.
As conclusões aqui são semelhantes às de outro artigo Sintonia de índices orientada a consultas autônoma
Nossa abordagem não pode superar o orientador de índice se toda a carga de trabalho for conhecida antecipadamente. No entanto, em ambientes dinâmicos com cargas de trabalho em evolução e alterações, a abordagem orientada a consultas produz melhores resultados.