Oracle JMS performance optimization

Oracle JMS verwendet polling (bei default 1 SQL Abfrage pro Sekunde) um neue Nachrichten in der Queue zu finden…

Dabei werden zwei system View’s abgefragt ALL_QUEUES und ALL_QUEUE_TABLES (sucht nach Queue Name und Queue Tabelle, die in JMS Konfiguration definiert wurden). Leider die Abfragen von System View’s mit Prefix ALL_ sind sehr langsam. Warum hat Oracle an dieser Stelle kein Namen Cache verwendet, ist mir nicht ganz klar, wahrscheinlich wird dadurch gewisse Dynamik ermöglicht …

Um die Abfragen zu beschleunigen, kann man lokale Tabellen mit gleichen Namen im User Schema anlegen (gecached). Dafür werden Administrator Rechte benötigt.

Man muss aber beachten, dass viele Datenbank-Tools (Reverse-Engineering Tools zum Beispiel) können auf die globale View’s zugreifen … Man soll auf die Benutzung von solchen Tools für diesen konkreten User verzichten, oder den Inhalt von lokalen Tabellen aktualisieren nach jeder Änderung von Queue Definitionen.

Vielen Dank an Maxim Bolshakov für den Tipp …

Veröffentlicht in Java, Oracle