|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : février 2004 Messages : 41 ![]() |
Bonjour à tous,
Je souhaite archiver des données de la façon suivante : Le but est d'archiver une table par mois. Nous en allons donc en créer une par mois. Soit une table contenant 3 000 000 enregistrements sur 40 colonnes nommée TABLE_COURANT (InnoDb). Au 2 janvier 2008, nous voulons transferer les données du mois de décembre vers une table TABLE_200712. Quel est la meilleure solution en temps de traitement? Sachant qu'il faut faire un "couper/coller" dans une autre table ? J'ai bien pensé renommer la table TABLE_COURANT en TABLE_200712 puis de transphaser les données du mois de janvier vers une nouvelle table TABLE_COURANT mais la suppression des données du mois de janvier de la table TABLE_200712 prend beaucoup de temps. Auriez vous une idée miracle ? |
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Antoine DinimantConsultant en Business Intelligence Inscription : octobre 2006 Messages : 5 854 ![]() |
Sur TABLE_COURANT, tu rajoutes une colonne BOOLEAN NOT NULL DEFAULT 0 nommée adetruire. Au lieu de faire un DELETE, tu fais un UPDATE marquant cette colonne à 1 pour le mois copié dans sa table.
La nuit quand il y a du temps, tu lances le DELETE pour toutes les lignes marquées 1 dans adetruire. Autres pistes : - faire un COMMIT avant la suppression - mettre le @@foreign_key_checks à 0 avant la suppressions et le rétablir ensuite - tester le DELETE LOW PRIORITY et le DELETE QUICK |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : février 2004 Messages : 41 ![]() |
Ok merci, je vais voir avec cette technique
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com