bonjour,
j'ai un peu de mal à saisir la différence entre le "truncate reuse storage" et le "truncate drop storage".
De plus lequel est utilisé par défaut?
Version imprimable
bonjour,
j'ai un peu de mal à saisir la différence entre le "truncate reuse storage" et le "truncate drop storage".
De plus lequel est utilisé par défaut?
par défaut c'est reuse il me semble, faut faire un test. L'intérêt du REUSE c'est juste d'éviter de recréer les extents lors des prochaines insertions.
Par exemple, tu veux vider la table tous les jours pour la charger à nouveau, tu vas faire un REUSE pour éviter que le chargement perde du temps à gérer les extents.
Réponse dans l'Admin. Guide:
Citation:
The REUSE STORAGE or DROP STORAGE options of the TRUNCATE statement control whether space currently allocated for a table or cluster is returned to the containing tablespace after truncation. The default option, DROP STORAGE, reduces the number of extents allocated to the resulting table to the original setting for MINEXTENTS. Freed extents are then returned to the system and can be used by other objects
Effectivement, c'est bien Drop par défaut.
Donc ça veut dire qu'à chaque chargement de mon dataWarehouse lorsque je truncate mes partitions avant de les recharger vaut mieux que j'utilise la clause reuse storage...c'est plus performant?
pas le truncate mais l'insertion de masses, elle, devrait être plus rapide en effet :)
Autre question: j'ai cru lire quelque part que pour les petites tables il valait mieux faire un delete plutôt qu'un truncate. C'est vrai ça?
bah non... pas plus que pour les grandes. Le DELETE a pour intérêt d'être une commande DML (donc supporte le DBLink), d'être sélectif et d'utiliser les rollbacks pour pouvoir annuler la transaction et puis c'est à peu prêt tout ;)
Orafrance en faisant une recherche sur le web j'ai retrouvé un discussion sur le sujet (http://www.developpez.net/forums/arc...p/t-13257.html) et voilà ce que tu disais à l'époque (en 2004):
Citation:
Alors d'après le gourou j'ai nommé Tom Kyte ;) : le truncate est couteux donc pour les petits volumes c'est plus couteux que le delete même si celui-ci consomme du rollback et du redo. En plus, si il y a un lock sur la table le truncate foire immédiatement :?
8O j'ai dit ça moi ? :aie:
En effet, j'avais pas pensé au lock... m'enfin, faut voir... depuis j'ai appris à pas toujours être d'accord avec Tom Kyte :mrgreen:
Attention tout de même il y a un bugg dans la version 9.2.0.6
Même avec la clause "drop storage" (par défaut) les extents ne sont pas libérés.
Ce bugg est résolu en version 9.2.0.7
Bonjour,
Je remonte ce post juste pour apporter une petite précision que j'ai trouvé ici :
http://asktom.oracle.com/pls/asktom/...90900346657642
En bas de page, il y a une explication sur la raison qui peut faire qu'un truncate prend plus de temps qu'un delete.
Nicolas