Suppression gd nombre enregistrements [ORACLE] - SQL/NoSQL - Programmation
Marsh Posté le 29-08-2002 à 14:27:48
Il n'y a pas une option du genre NO LOG (ou NO LOGGON je ne sais plus bien) qui permet d'effectuer une opération sur la base sans que cela soit inscrit dans le journal ?
Ca devrait être plus rapide je pense ?
Marsh Posté le 29-08-2002 à 15:03:56
Je ne connais pas cette option mais si tu retrouves comment on l'utilise, je suis preneur.
J'ai plusieurs choses à faire en même temps et là j'ai un bug à corriger assez rapidement.
Merci pour ton aide.
Marsh Posté le 29-08-2002 à 15:22:30
shyangel a écrit a écrit : Je ne connais pas cette option mais si tu retrouves comment on l'utilise, je suis preneur. J'ai plusieurs choses à faire en même temps et là j'ai un bug à corriger assez rapidement. Merci pour ton aide. |
Faut faire :
alter table nom_table nologging;
Marsh Posté le 29-08-2002 à 15:50:34
Il s'effectue quand ton delete, en pleine journée avec
plein d'utilisateurs qui bosse sur ta table
ou le soir quand ya personne ?
Marsh Posté le 29-08-2002 à 16:30:59
vttman2 > En ce moment on est en phase de test, je ne suis pas sur le site du client mais sur un serveur spécial qu'on a pour le projet. Je suis le seul à travailler dessus (PIII 866 avec RAM 256Mo) donc pas de surcharge d'autres utilisateurs.
tomlameche > Merci, j'essaierai dès demain, parce que pour le moment, j'ai ma procédure qui tourne.
Marsh Posté le 29-08-2002 à 16:45:23
Ok
En fait je te posais cette question parceque
dans certaines sociétés on préfère faire
au lieu d'un DELETE TAB1
un truc du style
CREATE table TEMP
INSERT des enregistrements conservés à partir de TAB1
DROP table TAB1
RECOPIE de TEMP dans TAB1
DROP table TEMP
... et tout ça pour gagner pas mal de temps
Mais bon ça dépend de la liaison des tables, contraintes ...
Marsh Posté le 29-08-2002 à 16:49:20
vttman2 a écrit a écrit : Ok En fait je te posais cette question parceque dans certaines sociétés on préfère faire au lieu d'un DELETE TAB1 un truc du style CREATE table TEMP INSERT des enregistrements conservés à partir de TAB1 DROP table TAB1 RECOPIE de TEMP dans TAB1 DROP table TEMP ... et tout ça pour gagner pas mal de temps Mais bon ça dépend de la liaison des tables, contraintes ... |
En plus autre avantage du drop Table : ça libère vraiment l'espace disque (contrairement au delete).
en ce qui concerne les contraintes, tu galère la première fois que tu fais le drop, mais en copiant dans un fichier les script d'inactivation (puis réactivation) des contraintes, ça redevient rapide.
Marsh Posté le 02-09-2002 à 16:41:59
J'ai essaye les 2 méthodes :
- alter table nom_table nologging : pas très efficace, je n'ai pas vu de changement dans les temps ou alors c'était très faible.
- create temp as select ... from nom_table
drop table nom_table
rename temp to nom_table
Cette solution est très rapide, beaucoup plus que ce que je pouvais espérer
Merci pour tout
Marsh Posté le 29-08-2002 à 13:09:30
Bonjour à toutes et à tous,
J'ai une application VB qui appelle une procédure stockée pour supprimer un grand nombre d'enregistrement dans une table (un peu plus d'un million de lignes). Le problème est que cette opération est vraiment trop longue et je voudrais savoir quel(s) moyen(s) je pourrais utiliser pour accélérer l'exécution.
Dans la procédure stockée, j'affecte un gros rollback segment spécialement pour la requête DELETE. J'ai essayé de découper la requête en plusieurs sous-requêtes mais ça ne change pas grand chose.
Merci pour vos lumières ...
PS : pas de TRUNCATE car je ne dois pas supprimer tous les enregistrements de la table