- É a adição de índice em rápida mudança coluna como "lastUpdatedOn" a pena ?
- Como calcular a compensação ?
- Alguém pode me apontar a documentação oficial sobre quando e como faz o MySQL reindexes na linha inserções e atualizações na coluna indexada.
Se ter um índice, incluindo uma "rápida mudança de coluna" é uma troca.
Um UPDATE
precisa excluir uma entrada em um índice e adicione uma nova entrada em outro lugar no índice.
Por outro lado, o índice poderá aumentar a velocidade, devido ao índice.
Por favor fornecer um exemplo concreto para que possamos discutir as vantagens e as desvantagens mais.
Não-UNIQUE
índices (em oposição a FULLTEXT
e SPATIAL
) são mantidos assim:
Há uma "mudança de buffer" (qv) no buffer_pool que mantém o índice de atualizações que ainda não foram gravados no disco.
Quando um DELETE
ocorre, uma entrada é adicionada para a Alteração do Buffer para dizer que a entrada de índice precisa ser removido.
Para UPDATE
duas entradas pode ser necessário colocar no CB.
Quando um SELECT
usa um índice, verifica tanto a CB e o real, no disco, BTree para o índice. Que Árvore é armazenada em cache (bloco por bloco) no buffer_pool. (Um bloco é de 16 kb e pode conter centenas(s) de entradas.)
O CB é liberado para o disco "no fundo" ou "conforme necessário". Que envolve a obtenção de um índice de bloco (a menos que já está em cache), atualizando algumas entradas (excluir e/ou adicionar), e escrever de volta para o disco. Tanto a leitura e escrita são armazenados em cache no buffer_pool, por isso nem pode ser um físico de I/O.
O MySQL não "reconstruir" um índice regular ("reindexar"), exceto através de certos ALTERs
ou OPTIMIZE
. Isto é, todas as alterações são feitas na hora. A ação do CB é transparente para o usuário.