ZHAW-Logo OAPA-Logo TAT-Logo
zurück  
Diplomarbeit 2004 (DA04): Arbeits-Archiv
 
DA Adr 04/2 - Optimierung (Tuning) von DB-Abfragen
Studierende: Lukas Felder, feldeluk
  Thomas Mattmuller, mattmtho

Betreuer: Arnold Aders, adrs

Im Rahmen einer Diplomarbeit an der Zurcher Hochschule Winterthur haben wir uns mit dem Optimieren von Datenbankabfragen befasst. In einem Theorieteil werden die Vorgange beim Optimieren beschrieben und die verschiedenen Arten von Indizes erklart. Im praktischen Teil wurden die Ausfuhrungszeiten verschiedener Abfragen gemessen und interpretiert. Als Datenbankssysteme kamen Oracle 9i und IBM DB2 v7 zum Einsatz. Die Testdatenbank bestand zuerst aus drei gleich grossen Tabellen und anschliessend aus verschieden grossen Tabellen. Die Werte in der DB sind zufallig erzeugte ganze Zahlen und es existieren keine Schlussel-Fremdschlusselbeziehungen. Durch eine Abfrage werden die drei Tabellen miteinander gejoint. Mit Hilfe von Indizes und verschiedenen Optimizermodi wurde versucht, die Abfragen zu beschleunigen. Dabei sind wir auf einige interessante Erkenntnisse gestossen.

Oracle: In Oracle gibt es zwei Arten von Optimizer: Kostenbasiert und regelbasiert. Der kostenbasierte Optimizer ist besonders bei grossen Tabellen mit Indizes nicht unbedingt schneller als der regelbasierte, der nicht auf Statistiken zugreift. Beim regelbasierten Optimizer muss auf die Reihenfolge der Abfrage geachtet werden, obwohl dies den Gesetzen der relationalen Algebra widerspricht.

IBM DB2: In DB2 gibt es sieben Optimierungsklassen, wobei jede Klasse einen anderen Grad der Optimierung hat. Es ist schwierig zu beurteilen, welche Klasse fur eine bestimmte Abfrage am besten ist. Im Allgemeinen ist jedoch die Optimierungsklasse 5 (Default) am schnellsten, solange keine Statistiken oder Indizes verwendet werden.

Bei den Explain Planen beider Datenbanken bestand kein Zusammenhang zwischen Kosten und tatsachlicher Ausfuhrungszeit. Meistens war der Explain Plan mit den hoheren Kosten sogar schneller.

zurück