|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 122 ![]() |
Bonjour,
Je pense utilisé les materialized view pour un de mes traitement mais comme je ne les ai jamais utilisé, je voulais avoir votre avis. Je dois faire une extraction (flat file) à toute les semaines de 3 select qui ont un lien entre eux. je sais qu'on peut individuellement dire à quelle heure on veut le rafraichissement des données mais dans mon cas, il est tres important que les 3 tables soit rafraichis en meme temps pour garder la consistance des données. Est-ce qu'il y a un moyen de dire que le rafraichissement doit etre fait en meme temps pour les 3 tables? Je sais aussi qu'il y a un option pour allez chercher le delta depuis la derniere fois... c'est solide ca? est-ce qu'il y a un moyen de lui donner depuis quand (quel jour ou heure ) on veut le delta advenant un problème en changeant un parametre par exemple. merci |
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() |
bonjour
les vues materialisées ne sont pas utiles pour une base de données transactionnelles(c-à-d:pleinne de insert into et update). on ne peut pas reffaichir une tables, on raffraichit la vue materialisée qui utilise les trois tables. les vue materialisées sont utilisées surtout pour les rapports pour accelerer l'affichage; ou bien par exemple; lancement d'un procedure qui utile une vue complexe et lourde sinon elle sera inutile. Bon courage |
|
|
00
|
|
|
#3 |
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 122 ![]() |
Ok je vais préciser mon besoin. Les flat file que je dois extraire sont en fait un delta des tables du schéma mais dénormalisé. Alors je me disais qu'en utilisant une vue matérialisé, ca m'éviterait d'avoir à scripter la création de table temporaire pour les extraires par la suite. Je ne veux pas utilisé directement des vues et les extraire ensuite... j'ai déjà eu de gros problème de performance à ce niveau... Alors je me disais que c'était le meilleur des 2 monde?
ce n'est donc vraiment pas fait pour ca? |
|
|
00
|
|
|
#4 |
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 122 ![]() |
une petite précision sur ma question initiale. Je ne veux pas rafraichir les table de mon schéma... je voudrais rafraichir plusieurs vue matérialiser en meme temps pour ne perdre aucune donnée car elles ont un lien entre elles...
est-ce qu'on peut faire ca... et etre sur que le rafraichissement est fait dans la meme seconde? |
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 122 ![]() |
Rebonjour,
Je lis pas mal là dessus depuis 2 jours et ce que j'en comprends c'est que c'est surtout pour du reporting et non pour faire du traitement... mais si le traitement que j'ai à faire c'est une extraction de cette vue matérialiser... croyez-vous que c'est viable... conceptuellement, les vues matérialisé peuvent-elle supporté un traitement d'extraction (j'ose croire que oui) ... J'ai aussi lu un peu sur les log des materialized view... j'ai lu que c'était des objet de la bd... ce que j'en comprend c'est que ce serait logger dans une table spécifiquement créé pour cette vue matérialisé? Ca voudrait dire que si j'ai 10 tables matérialisés à créer, ca créera aussi 10 table de log?? si c'est le cas... ca me prouverait que ce n'est pas fait pour ce que je veux faire je crois... merci |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
En 10g, essayez d'utiliser DBMS_MVIEW.REFRESH avec le paramètre atomic_refresh à TRUE:
Citation:
PS: non testé. |
|
|
|
00
|
|
|
#7 |
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 122 ![]() |
Ha merci je ne trouvais cet info null part... je suis en 9i en passant.
Avez-vous une idée pour ce que j'expliquais un peu plus haut pour les logs... est-ce une table de log par vue matérialisé ou une table de log pour toute les tables du schéma... et est-ce que vous croyez que c'est une bonne idée de faire du traitement sur des materialized view? merci |
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
En général, il y un a materialized view log par table mais le materialized view log n'est pas indispensable: il est nécessaire si on veut faire un refresh fast.
L'utilisation de vues matérialisées (MV) est une bonne idée .. si elle correspond à vos besoins et que l'on prend en compte les avantages et les inconvénients de l'approche: les requêtes peuvent être nettement plus rapides sur les MV à condition d'accepter les coûts nécessaires de création et de rafraîchissement (espace disque, temps machine). |
|
|
00
|
|
|
#9 | |
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 122 ![]() |
Citation:
merci |
|
|
|
00
|
|
|
#10 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
un MV stocke le résultat de la vue quand la vue exécute la requête à chaque interrogation, en ce sens la MV est plus performante qu'une vue si tant est que la requête soit un minimum complexe (sur SELECT * FROM TABLE par exemple, ça n'a aucun intérêt). Ceci dit, une MV se rafraichira moins vite que l'exécution de la vue.
Donc la MV est plus rapide à l'interrogation mais pour optimiser le refresh là faudra d'orienter peut-être vers les MV logs pour faire un FAST REFRESH. |
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : mars 2004 Messages : 122 ![]() |
ok je comprend le point, c'est ce que je pensais d'ailleurs...
J'aimerais ca avoir votre avis maintenant sur ce que j'ai à faire. Je dois convertir une application qui extrait des tables en flat_file. Actuellement, je fais un create table as select .... une fois créé cette table est extraite. Le problème c'est qu'à chaque semaine, je drop les table, je fais un create table as select... (parfois assez complexe) et je l'extrais. Maintenant, avec les Materialized view, je voyais l'opportunité d'utilisé les nouvelles fonctionnalité d'oracle. Avec les MV, j'éviterais toute la partie script de creation de table et je cédulerais un refresh à la place. Ca serait sans doute moins couteux non? À moins qu'il y ait une subtilité que je ne vois pas... En cas de problème lors du rafraichissement des vue... est-ce que c'est facilement identifiable qu'il y a eu une erreur... il faut que je puisse évidemment le trapper... J'imagine qu'avec les tables log je pourrais voir ca... mais je me demandais si c'était facile et surtout si ca trappe tout les genre d'erreur autant data que physique. merci encore |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com