2010-04-13 3 views
1

J'ai une certaine application web qui fait plus de ~ 100 mises à jour d'une base de données Oracle successivement. Cela peut prendre entre 3 et 5 minutes, ce qui entraîne parfois une expiration de la page Web. Une re-conception de l'application est prévue bientôt mais quelqu'un m'a dit qu'il y a un moyen de configurer un "fichier loader" qui charge le schéma en mémoire et exécute les transactions au lieu du disque dur, supposément améliorer la vitesse de plusieurs ordres de magnitude. J'ai essayé de rechercher ce "fichier de chargeur" ​​mais tout ce que je peux trouver est des informations sur le chargeur de données en bloc SQL *. Est-ce que quelqu'un sait de quoi il parle? Est-ce vraiment possible et est-ce une solution rapide réalisable ou devrais-je attendre jusqu'à ce que l'application soit re-conçue?Comment charger le schéma Oracle en mémoire au lieu du disque dur?

+0

Je pense que 'loader' est le mauvais terme de recherche. Essayez de «mémoire cache» ou «écriture différée» ou une autre. – lexu

+2

J'ai entendu parler de personnes essayant de mettre en cache des tables en y accédant quand leur application commence, mais je suggérerais de travailler sur la détermination de ce qui est lent et de corriger le problème. Oracle a déjà consacré beaucoup de temps et d'efforts aux algorithmes qui mettent en cache les données les plus récentes et les plus fréquemment utilisées. Êtes-vous sûr qu'il va sur disque pour ces opérations? Connaissez-vous les frais généraux de chaque aller-retour entre votre application Web et la base de données? Les mises à jour peuvent-elles être mises en lots de quelque manière que ce soit? Avez-vous vérifié les rapports StatsPack ou AWR pour les meilleurs événements d'attente? –

+0

lexu: Merci pour les têtes ces termes de recherche ont été beaucoup plus utiles. – Andrew

Répondre

2

Oracle travaille déjà en mémoire - les E/S disque sont gérées en coulisses. Les données fréquemment consultées restent en mémoire dans le cache tampon. Peut-être que votre informateur faisait référence à "épingler" un objet en mémoire, mais ce n'est vraiment pas efficace dans les versions modernes d'Oracle (depuis la version 8), en particulier pour les données de table. Laisser Oracle faire son travail - c'est en fait très bon (probablement mieux que nous). Face it - 100K mises à jour va prendre un certain temps.

+0

+1 ... aimé "laissez Oracle faire son travail" – dpbradley

Questions connexes