-
MV (Materialized View)
Bonjour,
Je dois créer une MV avec la clause NEVER REFRESH.
Il faut attendre chaque semaine la fin de l'importation d'une table (sous SQL loader) pour rafraichir le contenu de la MV.
Quel est l'ordre à passer (sous une stored procedure exécutée une fois par semaine) pour obtenir le rafraichissement de cette MV SVP ?
Peut-on y ajouter une PK et des index ?
-
Bonjour,
dbms_mview.refresh
Cordialement,
Franck.
-
Merci.
J'envisage une autre situation. Ma MV se base sur une table T.
Si T subit un Truncate, comment faut-il paramétrer la MV pour qu'elle soit effacée vite et bien ? (qqchose comme un drop et un create)
Si T se remplit via SQL Loader (donc avec des commits réguliers), comment paramétrer la MV correctement ?
-
Peut-être que vous pouvez commencer par expliquer ce que vous voulez accomplir. Vous est confus dans vos propos et vous ne maitrisez pas bien les concepts que vous essayez d’utiliser : table temporaire, vue matérialisée, niveau d’isolation des transactions, etc.
-
D'accord. C'est vrai que je n'ai pas fait beaucoup de MV.
Actuellement, je bâtis une table T de 10 M de lignes via SQL Loader.
Puis je bâtis une table T2 elle aussi de 10 M de lignes en se basant dur T.
Le tout prend 4 heures, soit 1 heure pour T et 3 heures pour T2. L'opération se passe toutes les semaines.
J'ai envie de faire la même chose en remplaçant T2 par une MV, car j'espère que cette MV se remplira en même temps que T, et ainsi gagner du temps.
Donc chaque semaine, il faudra que la MV s'efface au début du transfert fait par SQL Loader, puis se charge en même temps que T se remplit.
J'aimerais savoir comment paramétrer correctement cette MV ou au moins l'utiliser convenablement.
Merci de votre attention.
-
Bonjour,
Non, ce n'est pas la bonne solution. Une MV ne sera pas plus rapide.
Par contre en créant T en table externe, tu peux faire le chargement en même temps que tu l'interroge. Et tu peux aussi faire du parallel query (si enterprise edition)
Cordialement,
Franck.
-
Donc vos données primaires sont dans des fichiers. A ce que je comprends ces fichiers sont chargés dans une table de travail T1. Ensuite un traitement transforme ces données pour générer la table T2.
Première question : est-ce que les données de la table T1 servent encore à quelque chose une fois que la table T2 a été générée.
Deuxième question : est-ce que la table T2 est issue seulement des données de la table T1 ou elle se base sur des données des autres tables.
Remarque : pour améliorer ce traitement vous devez essayer d’améliorer le chargement de la table T1 si possible mais cela à seulement 25% de poids dans le traitement. Il sera plus efficace de concentres vos efforts sur la deuxième partie qui prennent actuellement 75% de la totalité du traitement.
-
Bonnes questions.
Remarques liminaires :
T1 ne dépend que d’un seul fichier au format CSV (un fichier plat).
Et T2 est un filtre et une normalisation la table T1. Un tiers des lignes est retiré, une quinzaine de champs sont scindés, créés ou remplacés par des id.
Question 1 :
J’ai besoin de T1 aussi pour voir si de nouveaux id dans différents champs sont apparus. Ici T1 sert 3 fois. T2 sert environ 50 fois.
Question 2 :
T2 dépend en majorité de T1, mais aussi de différentes autres tables qui servent à la normalisation (des textes qui sont remplacés par des id).