Pergunta

Eu estava lendo sobre refatoração uma grande SQL Query sobre aqui , ea corrente mais alta lento resposta é de Mitch Wheat, que quer ter certeza de que os índices usos de consulta para os principais seleciona, e menciona:

A primeira coisa que eu faria é verificação para garantir que não é um trabalho de manutenção do índice ativa sendo executado periodicamente. Se não, obter todos indexs existentes reconstruída ou se não for possível as estatísticas get menos atualizado.

Eu só estou sou DBA amador, e eu fiz um freelance poucos programas que são basicamente clientes de desktop Java e, ocasionalmente, um backend MySQL. Quando eu configurar o sistema, eu sei que para criar um índice nas colunas que serão consultados por, há uma CaseID varchar e uma CustName varchar.

No entanto, eu definir este sistema até meses atrás e deixou o cliente utilizá-lo, e eu acredito que os índices devem crescer à medida que os dados são inseridos e acredito que tudo ainda está funcionando bem. Eu estou preocupado que embora os índices devem ser reconstruídos periodicamente, porque hoje eu li que deve haver um 'trabalho ativo de manutenção'. A única manutenção trabalho que eu conjunto sobre a coisa era um backup noturno.

Eu queria perguntar a comunidade sobre a manutenção regular que um banco de dados pode exigir. É necessário marcar para reconstruir índices? Posso confiar no backend MySQL para continuar tanto tempo como ninguém messes com ele e as estadias de dados sob alguns gigabytes?

Foi útil?

Solução

Não há necessidade de 'reconstruir' um índice. Eles estão sempre up-to-date. Talvez ele estava se referindo a reconstrução da tabela. Dependendo de seus padrões de uso e de esquema, você pode obter páginas em InnoDB fragmentado, e eu acho que em MyISAM também. Reconstruindo a tabela pode melhorar o desempenho por se livrar de fragmentação de seus dados no disco. Eu não usar tabelas MyISAM regularmente, mas eu acredito que é recomendado para executar 'OPTIMIZE TABLE' com certos padrões de uso. Veja a documentação do MySQL sobre OPTIMIZE TABLE para algumas boas informações em ambos MyISAM e InnoDB.

Eu não sou tão familiarizado com as complexidades MyISAM, mas com InnoDB é verdade que as estatísticas podem sair da data. O banco de dados mantém estatísticas sobre como os dados são distribuídos para um determinado índice estimado, e é possível para aqueles que sair-of-date, mas MySQL / InnoDB tem algum construído em funcionalidade para tentar manter as estatísticas atual. Você normalmente não precisa se preocupar com isso.

Então, se você estiver usando InnoDB, a resposta é não, você geralmente não precisa ativamente fazer qualquer coisa para manter seus índices de um bom desempenho. Eu não estou tão certo com MyISAM, eu acho que é mais comum a necessidade de otimizar as tabelas regularmente.

Outras dicas

É geralmente uma boa idéia para criar um cron a índices de otimizar e verificar se há erros.

mysqlcheck . Um típico cron olhares de trabalho algo como mysqlcheck -Aaos, que verifica todas as tabelas em todos os bancos de dados para erros, otimiza índices e apenas saídas em caso de erro.

A resposta é ligada ao sobre "manutenção regular" foi no contexto específico de uma tabela temporária que fica truncado e repovoada regularmente. Você não precisa fazer isso para a grande maioria das instalações de banco de dados MySQL.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top