Meine Abfrage läuft schneller, das zweite mal herum, wie kann ich das stoppen?
ich bin beim ausführen einer Abfrage in oracle 10 select A from B where C = D
B hat Millionen von Datensätzen, und es gibt keinen index auf C
Als ich das erste mal ausführen, dauert es etwa 30 Sekunden, das zweite mal, dass ich die Abfrage ausgeführt dauert es etwa 1 Sekunde.
Ist es natürlich, caching etwas und ich will es zu stoppen, jedes mal, wenn ich die Abfrage ausführen will ich es nehmen 30s - so wie es war, zum ersten mal ausgeführt.
- bin ich über die-vereinfacht das Problem, dass ich aus Gründen der Herstellung, die Frage der Lesbarkeit.
Dank
- Tun Sie etwas dagegen, zu erklären, warum Sie wollen es ständig zu langsam läuft?
- Wahrscheinlich Antwort : Performance-tuning und Test
- Wie zu zwingen, einen hard-parse: oracle-randolf.blogspot.com/2009/02/...
- ich brauche eine konsistente Art und Weise testen, ob die Indexe erstelle ich tun jedem gut, und es ist schwer, wissenschaftlich über es, wenn meine Fragen nehmen Sie nicht die gleiche Zeit für den gleichen Satz von Daten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Löschen des caches, um die Leistung zu Messen, ist möglich, aber sehr unhandlich.
Eine sehr gute Maßnahme für die Verfolgung erreicht performance-tuning-Anstrengungen ist das zählen der Anzahl der zu lesenden Blöcke während der Ausführung der Abfrage. Einer der einfachste Weg, dies zu tun ist mit sqlplus mit autotrace, etwa so:
Ausgänge
Die Anzahl von Blöcken, die gelesen wurden, werden Sie aus dem cache oder von der Festplatte, ist
consistent gets
.Andere Möglichkeit ist das ausführen der Abfrage mit erhöhter Statistik, d.h. mit dem Hinweis
gather_plan_statistics
betrachtet und dann die Abfrage-plan aus dem cursor cache:Die Anzahl der Blöcke, die gelesen wird, die Ausgabe in Spalte
buffers
.Sehen diese Frage...
Es zeigt, wie klar-caches für Daten und Ausführungsplänen, aber auch erweitert auf, ob es eine gute Idee ist oder nicht.
Die offensichtliche Antwort ist, für jeden Testfall, um die Abfrage auszuführen, die mehrere Male, und werfen aus der ersten Folge.
Nicht leicht vollständig repliziert die Bedingungen der ersten Abfrage ausgeführt werden, da die verschiedenen caches beteiligt: einige Oracle-caches (cursor, Puffer, etc.); einige sind OS (Festplatten-cache, je nach Oracle-config); einige sind hardware (SAN, RAID, Festplatte).
Neustart der Datenbank-server vor jeder Prüfung wird wohl kommen ziemlich nah an Konstante Bedingungen.
Könnte es helfen, Sie
http://www.mssqltips.com/tip.asp?tip=1360
CHECKPOINT;
GO DBCC DROPCLEANBUFFERS;
GEHEN