069 / 58 80 436 10 info@dbaservices.de
DBA Background White

Performance Tuning

Wenn Datenbanken nach einiger Zeit nicht auf die Art und Weise funktionieren wie erwartet, dann sind es die Anwendungsnutzer, die primär damit konfrontiert sind.

Dieses technische Fehlverhalten eines Datenbanksystems beeinflusst direkt den Betriebsablauf und hat negative Auswirkungen auf ihre Produktivität. Benutzerzufriedenheit und die Anwendungsakzeptanz basieren auf eine kontinuierliche Datenbankoptimierung.

Performance Tuning kann hier Abhilfe schaffen, indem via SQL-Tuning, Tuning I/O, Tuning der Speicherstruktur, Tuning der Hintergrundprozesse und Load Balancing eine Optimierung stattfindet.

Das Ziel des Datenbank-Tunings ist unter anderem auch die Verbesserung des Ausführungsplans, damit die Ergebnismenge der SQL-Abfrage optimal mit der kleinsten Anzahl von logischen und physischen I/O-Zugriffen zurückgeliefert wird. Wenn die genutzten Ressourcen für die Ausführung einer SQL-Abfrage reduziert werden, können mit denselben Ressourcen die CPU, der Speicher und der Festplatten-I/O mehr Leistung erbringen. Das spart nicht nur Hardware, sondern auch Energie.

 

Problemlösungen aus Erfahrung

SQL-Tuning ist ein komplexes und umfangreiches Thema. Es ist nicht immer möglich Performance-Probleme vorauszusehen, weil sich Datenbanken ständig verändern. Eine permanente Überwachung ist zu empfehlen.

Es kann z.B. vorkommen, dass eine nicht getunte SQL-Anweisung erst mal ohne Problem und sehr schnell ausgeführt wird. Aber nach einer kurzen Zeit vergrößert sich der Tabelleninhalt, so dass die Ergebnismenge der SQL-Anweisung sehr träge zurückgeliefert wird. Ein solches Verhalten wird von den Anwendungsnutzern direkt bemerkt.

Dieses Problem kann aber auch bei getunten SQL-Anweisungen auftreten, z.B. bei dem Join von zwei Tabellen. Eine Regel des SQL-Tunings besagt, dass in der FROM-Klausel die größte Tabelle nach links und die kleinste nach rechts positioniert werden sollen. Wenn die Tabelle A größer als Tabelle B ist, soll Tabelle A links in der FROM-Klausel eingeordnet werden. Wegen der permanenten Änderungen innerhalb der Datenbank kann es aber passieren, dass die Tabelle B größer als Tabelle A wird. Dadurch ist die Ausführung der SQL-Anweisung nicht mehr optimal.

Diese beiden Beispiele verdeutlichen die Komplexität der Datenverteilung innerhalb der Datenbanken.

Sprechen Sie mit uns, wenn Ihre Datenbanken nicht auf die Art und Weise funktionieren, wie von Ihnen erwartet.

Haben Sie Fragen?

(erforderlich)
Dieses Feld dient zur Validierung und sollte nicht verändert werden.

NEUSTE BEITRÄGE

ORA-01460 – unimplemented or unreasonable conversion requested

1.) Texte aus oerr unter Linux 01460, 00000, „unimplemented or unreasonable conversion requested“ // *Cause: // *Action: 2.) Erklärung Dieser Fehler tritt auf, wenn eine Konversion von Daten mit den Funktionen TO_CHAR, TO_DATE oder TO_NUMBER durchgeführt werden soll,...

ORA-01461 – can bind a LONG value only for insert into a LONG column

1. Texte aus oerr unter Linux 01461, 00000, „can bind a LONG value only for insert into a LONG column“ // *Cause: // *Action:  2. Erklärung Es wurde versucht, Daten vom Typ LONG in ein Feld anderen Typs einzufügen. Dies ist jedoch nicht möglich. Stattdessen wird diese...

ORA-01465 – invalid hex number

1.) Texte aus oerr unter Linux 01465, 00000, „invalid hex number“ // *Cause: // *Action: 2.) Erklärung Es werden gültige Werte in Hex erwartet. In dem String befinden sich jedoch ungültige Werte. Dieser Fehler kann beim Füllen eines Feldes vom Typ BLOB auftreten. 3.)...

ORA-01728 – numeric scale specifier is out of range (-84 to 127)

1.) Texte aus oerr unter Linux 01728, 00000, „numeric scale specifier is out of range (-84 to 127)“ // *Cause: // *Action: 2.) Erklärung Beim Anlegen einer Tabelle ist die Anzahl der Nachkommastellen bei einem Feld vom Typ number außerhalb des gültigen Bereichs. 3.)...

ORA-02049 – timeout: distributed transaction waiting for lock

1.) Texte aus oerr unter Linux 02049, 00000, „timeout: distributed transaction waiting for lock“ // *Cause: exceeded INIT.ORA distributed_lock_timeout seconds waiting for lock. // *Action: treat as a deadlock 2.) Erklärung Eine Transaktion hatte darauf gewartet, ein...