La documentation de MySQL pour kill
- avertit :
AVERTISSEMENT
Tuer un
REPAIR TABLE
ou alorsOPTIMIZE TABLE
Fonctionnement sur une tableMyISAM
Résultats dans une table corrompue et inutilisable. Toute lecture ou écrit à une telle table échoue jusqu'à l'optimisation ou la réparez à nouveau (sans interruption).
C'est pour Myisam.
Est-ce aussi dangereux de tuer un OPTIMIZE TABLE
processus courant contre une table innodub?
Selon le guide de certification MySQL:
L'énoncé d'optimisation de la table nettoie une table myisam en le défragmentant. Cela implique de recouvrer l'espace inutilisé résultant de suppressions et de mises à jour et des enregistrements de coalescence qui sont devenus divisés et stockés non contiguës. Optimiser Tabley trie également les pages d'index si elles sont hors de commande et met à jour les statistiques d'index
Fonctionne également pour les tables d'Innodb, mais des cartes pour modifier la table, ce qui reconstruit la table. Cela met à jour les statistiques de l'indice et libère de l'espace dans l'index en cluster.
Donc, dans le cas d'InnoDB:
INNODB est une conformité acide, la table d'optimisation copie simplement tous les enregistrements dans une nouvelle table.
Et si vous essayez de le tuer quand il fonctionne, vous ne perdrez aucun enregistrement.
De plus, cas d'innodb avec innodb_defragment=1
, il n'y aura pas de rollback requis, comme dans ce cas OPTIMIZE TABLE
est incrémental.