Bei größeren Datenbankanwendungen kann das I/O-Verhalten eine entscheidende Rolle für die Performance der Anwendung spielen. Im Folgenden wird beschrieben, bei welchen UDS/SQL-Dateien es zu I/O-Engpässen kommen kann, und wie diese beseitigt werden können.
Session-Log-File (SLF)
Bei der SLF kann kein I/O-Engpass auftreten.
Status-Datei
Bei der Status-Datei kann kein I/O-Engpass auftreten.
Realms
Wenn ein I/O-Engpass bei Realms auftritt, gibt es mehrere Lösungsmöglichkeiten:
Datenbankpuffer vergrößern
Durch eine Vergrößerung des Datenbankpuffers lässt sich die Zahl der I/Os reduzieren, sodass der Engpass beseitigt werden kann. Allerdings müssen Sie dabei die Größe des Hauptspeichers berücksichtigen, damit die Paging-Rate nicht zu hoch wird.
Wichtig ist auch, dass der richtige Datenbankpuffer (2-Kbyte, 4-Kbyte bzw. 8-Kbyte) vergrößert wird. Sie müssen also vorher feststellen, welche Seitengröße die entsprechenden Datenbanken haben.
Mit dem UDS/SQL-Monitor können Sie ermitteln, ob die Vergrößerung des Datenbankpuffers eine Verringerung der physischen I/Os bewirkt hat.
Eigenen Datenbankpuffer für eine Datenbank anlegen
Wenn eine bestimmte Datenbank besonders performancekritisch ist, können Sie für diese Datenbank einen eigenen Datenbankpuffer anlegen. Der Vorteil ist, dass Seiten dieser Datenbank nicht durch I/Os auf andere Datenbanken verdrängt werden können. Der Nachteil ist, dass dieser Datenbankpuffer nicht für I/Os auf andere Datenbanken genutzt werden kann.
Realms auf unterschiedliche Platten verteilen
Wenn eine Vergrößerung des Datenbankpuffers nicht zum Erfolg führt, können Sie durch Verteilung der Realms auf unterschiedliche Platten die Zahl der I/Os auf eine Platte reduzieren und damit den I/O-Engpass beseitigen.
Einen Platten-Cache bzw. eine Solid State Disk (SSD) einsetzen
Wenn der I/O-Engpass sich weder durch eine Vergrößerung des Datenbankpuffers noch durch die Verteilung der Realms auf unterschiedliche Platten beseitigen lässt, so können Sie zur Beschleunigung der I/Os einen Platten-Cache oder, bei noch höheren Anforderungen, einen externen Schnellspeicher einsetzen.
Anwendung ändern
Manchmal tritt ein I/O-Engpass dadurch auf, dass in der Anwendung die Datenbankaufrufe in einer ungünstigen Folge durchgeführt werden. Eine diesbezügliche Änderung kann zu einer starken Reduzierung der I/Os führen. Dies erfordert jedoch eine detaillierte Analyse der Anwendung.
RLOG-Datei
Jede Änderungstransaktion erfordert einen Schreibvorgang auf die RLOG-Datei. Obwohl mit einem I/O mehrere Transaktionen beendet werden können (Group Commit), kann bei Anwendungen mit sehr vielen ändernden Transaktionen die RLOG-Datei zum Engpass werden. In diesem Fall gibt es folgende Lösungsmöglichkeiten:
RLOG-Datei auf eigene Platte legen
Die RLOG-Datei wird sequenziell geschrieben. Die RLOG-Datei sollten Sie so anlegen, daß das Schreiben möglichst schnell und ohne Beeinflussung durch andere Aktivitäten auf dem System erfolgen kann.
Einen Platten-Cache bzw. eine SSD einsetzen
Wenn der Engpass sich mit der vorhergenannten Maßnahme nicht beseitigen lässt, so ist der Einsatz eines Platten-Cache bzw. eines externen Schnellspeichers zu empfehlen.
Einen Globalspeicher (GS) einsetzen
Wenn eine SSD auch nicht hilft den Engpass zu beseitigen, so kann das Pubset, auf dem die RLOG-Datei liegt, über einen Globalspeicher gepuffert werden. Wird die RLOG-Datei doppelt geführt, so müssen zwei Availability-Units des Globalspeichers zur Verfügung stehen, um die Ausfallunabhängigkeit der beiden RLOG-Dateien zu gewährleisten.
ALOG-Datei
Die ALOG-Datei ist im Allgemeinen nicht performancekritisch, da nur dann auf die ALOG-Datei geschrieben wird, wenn der ALOG-Puffer voll ist.
Wenn die ALOG-Datei trotzdem zu einem Engpass werden sollte, empfiehlt es sich, sie auf eine Platte zu legen, auf die keine anderen Zugriffe erfolgen. Die ALOG-Datei sollten Sie dann so anlegen, daß das Schreiben möglichst schnell und ohne Beeinflussung durch andere Aktivitäten auf dem System erfolgen kann.
Temporäre Realms
Temporäre Realms sind im Allgemeinen nicht performancekritisch.
Wenn sie es trotzdem sein sollten, hilft eine Vergrößerung des 4-Kbyte-Systempuffers (Temporäre Realms haben immer eine Seitengröße von 4-Kbyte). Wenn dies auch nicht ausreicht, müssen Sie die Temporären Realms auf mehrere Platten verteilen.