8
votes

Modification du type de données d'une colonne dans une énorme table. Les problèmes de performance

Je veux courir ceci sur ma table:

ALTER TABLE table_name MODIFY col_name VARCHAR(255)


2 commentaires

Nope, ça va être lent. Une déclaration d'alter est une action unique. Attendez-le et j'espère que vous n'avez pas besoin de le refaire.


Table énorme? non. Très grand? Oui.


3 Réponses :


4
votes

Eh bien, vous avez besoin

 ALTER TABLE table_name CHANGE col_name new_name VARCHAR(255)


4 commentaires

Oui. Je ne peux pas me permettre d'avoir des temps d'arrêt de 50 minutes, car toutes les lignes seront verrouillées pendant cela, ce qui empêchera d'autres actions (CRUD) sur cette table.


Euh. Oh. Cela signifie que si vous copiez la table, les lignes neuves et modifiées apparaîtront dans l'ancienne table pendant que vous réorganisez le nouveau. Si tel était mon projet, j'essayais maintenant de décider de la manière dont il est important de modifier ce nom de colonne.


Oui. Je peux faire une chose. Annoncez les temps d'arrêt de 1HR et apportez ces modifications lorsque la charge est inférieure. Probablement à minuit. Cependant, merci pour vos intrants.


Annoncer deux heures de temps d'arrêt. De cette façon, vous n'habirez pas tout le monde, mais aussi de les ravir lorsque vous vous faites tôt avec votre temps d'arrêt.



0
votes

Vous pouvez traiter avec le changement de schéma sans temps d'arrêt en utilisant du chêne.

Oak-Online-Alter -Table Copies Schéma de la table d'origine, applique vos modifications, puis copie les données. Les opérations de crud peuvent toujours être invoquées alors que OAK met des déclencheurs sur la table d'origine afin qu'aucune donnée ne soit perdue pendant l'opération.

Veuillez vous reporter à Autre question où l'auteur de OAK donne une explication détaillée sur ce mécanisme et suggère également d'autres outils.


0 commentaires

4
votes

0 commentaires