vue matérialisée création est rapide, mais l'actualisation prend des heures
Je suis l'aide d'une vue matérialisée, et je ne peux pas le définir de rafraîchissement rapide, car certaines tables de la base de données distante qui n'ont pas de vues matérialisées.
Quand j'ai créer la vue matérialisée, il a pris comme 20 à 30 secondes. cependant, quand j'essayais de les rafraîchir.
Il a fallu plus de 2 à 3 heures. et le nombre total d'enregistrements sont uniquement autour de 460 000.
Quelqu'un a une idée de comment cela allait se produire?
Grâce
À quoi ressemble le Code suivant
create materialized view MY_MV1
refresh force on demand
start with to_date('20-02-2013 22:00:00', 'dd-mm-yyyy hh24:mi:ss') next trunc(sysdate)+1+22/24
as
( SELECT Nvl(Cr.Sol_Chng_Num, ' ') AS Change_Request_Nbr,
Nvl(Sr.Sr_Num, ' ') AS Service_Request_Nbr,
Nvl(Sr.w_Org_Id, 0) AS Org_Id,
Fcr.rowid,
Cr.rowid,
Bsr.rowid,
Sr.rowid,
SYSDATE
FROM Dwadmin.f_S_Change@DateWarehouse.World Fcr
INNER JOIN Dwadmin.d_S_Change@DateWarehouse.World Cr
ON Fcr.w_Sol_Chng_Id = Cr.w_Sol_Chng_Id
INNER JOIN Dwadmin.b_S_Change_Obl@DateWarehouse.World Bsr
ON Fcr.w_Sol_Chng_Id = Bsr.w_Sol_Chng_Id
INNER JOIN Dwadmin.d_S_Rec@DateWarehouse.World Sr
ON Sr.w_Srv_Rec_Id = Bsr.w_Srv_Rec_Id
WHERE Sr.Sr_Num <> 'NS'
);
J'ai essayé d'utiliser dbms_mview.refresh('MY_MATVIEW', 'C', atomic_refresh=>false)
mais il a fallu 141 minutes pour l'exécuter... vs 159 minutes sans atomic_refresh=>false
J'ai télécharger mon code... Merci
Lorsque vous actualisez sur demande, vous pourriez envisager de passer en
atomic_refresh => false
en tant que paramètre à la force de la table pour être tronqué et puis rempli. Voir ce grande réponse.Il est logique.. je suis en train d'essayer cette commande... c'est de tranquillisation de course (6mins).. de la commande d'Origine a pris 160 minutes... je vais rester à jour sur le gain de performances de cette commande... merci beaucoup..
Il semble qu'il n'a pas été la cause de mon problème... il est toujours en cours d'exécution.... plus de 40 minutes maintenant
OriginalL'auteur Yili Li | 2013-02-20
Vous devez vous connecter pour publier un commentaire.
Personnellement, je ne PAS utiliser le planificateur intégré dans le tapis, en vue de CRÉER de la déclaration (démarrer avec ... à côté de la clause).
La principale raison (pour moi) est que vous ne pouvez pas déclarer l'actualisation de non-ATOMIQUE de cette façon (au moins je n'ai pas trouvé la syntaxe de cette à CRÉER des temps). En fonction de votre actualisation des besoins et de la taille, cela peut vous faire économiser BEAUCOUP de temps.
Je voudrais utiliser dbms_mview.refresh('MY_MATVIEW', 'C', atomic_refresh=>false). Ce serait:
Si vous utilisez la clause qui suit dans l'instruction de création, il sera de configuration atomique de rafraîchissement, ce qui signifie:
Ce sera plus lent (parfois beaucoup plus lent), mais d'autres peuvent encore requête de MY_MATVIEW tandis que l'actualisation est en cours. Donc, dépend de votre situation et de vos besoins.
"créé le point de vue" du passé, quand d'autres trucs en cours d'exécution ou ne s'exécute pas sur la boîte, quand les données étaient différentes, cache de tampons différents, pourrait être de plusieurs facteurs, pas sûr. Si vous drop/create le tapis de vue aujourd'hui (à l'aide de construire immédiat), puis les rafraîchir complète à l'aide d'dbms_mview (atomic_refresh faux), voir ce qui se passe
oui... c'était la première chose qui me vint à l'esprit... j'ai essayé dans différents laps de temps a commencé depuis hier soir jusqu'à cet après-midi... mais à chaque fois que j'ai laissé tomber la vue matérialisée et recréé, il a fallu pas plus de 30 secondes... Et lorsque j'ai exécuté la commande pour actualiser tout de suite après, il a fallu des heures pour finir
OriginalL'auteur tbone
si elle ne prend que 20 à 30 secondes pour créer, pourquoi ne pas simplement supprimer et recréer la vue matérialisée au lieu d'actualiser?
OriginalL'auteur northpole
Vous pouvez le tester. Je l'exécuter manuellement et il travaille pour moi en ami 🙂
FIN;
/
Et alors u peut le détruire avec cette.
Vous pouvez créer matérialiser afficher le journal.
J'espère que cela peut vous aider. 🙂
OriginalL'auteur Anonymous