DB2 10.5 for Linux, UNIX and Windows

Angeben von Zeilenblockung zur Verringerung des Systemaufwands

Die Zeilenblockung, die für alle Anweisungen und Datentypen (einschließlich LOB-Datentypen) unterstützt wird, verringert den Systemaufwand des Datenbankmanagers für Cursor durch Abrufen eines Blocks von Zeilen in einer einzigen Operation.

Informationen zu diesem Vorgang

Dieser Block von Zeilen stellt eine Anzahl von Seiten im Speicher dar. Dabei handelt es sich nicht um einen Block einer MDC-Tabelle (MDC = Multidimensional Clustering) oder einer ITC-Tabelle (ITC = Insert Time Clustering), der physisch einem EXTENTSIZE großen Speicherbereich auf dem Datenträger zugeordnet ist.

Die Zeilenblockung wird durch die folgenden Optionen im Befehl BIND oder PREP angegeben:
BLOCKING ALL
Cursor, die mit der Klausel FOR READ ONLY deklariert oder nicht mit FOR UPDATE angegeben sind, werden mit Blockung ausgeführt.
BLOCKING NO
Cursor werden nicht mit Blockung ausgeführt.
BLOCKING UNAMBIG
Cursor, die mit der Klausel FOR READ ONLY deklariert sind, werden mit Blockung ausgeführt. Cursor, die nicht mit der Klausel FOR READ ONLY oder FOR UPDATE deklariert sind und die nicht mehrdeutig sind oder die nur einen Lesezugriff ausführen, werden mit Blockung ausgeführt. Mehrdeutige Cursor werden nicht mit Blockung ausgeführt.
Die folgenden Konfigurationsparameter des Datenbankmanagers werden bei Blockgrößenberechnungen verwendet.
  • Der Parameter aslheapsz gibt die Größe des Zwischenspeichers für die Anwendungsunterstützungsebene für lokale Anwendungen an. Dieser Parameter wird verwendet, um die E/A-Blockgröße festzulegen, wenn ein Blockcursor geöffnet wird.
  • Der Parameter rqrioblk gibt die Größe des Kommunikationspuffers zwischen fernen Anwendungen und ihren Datenbankagenten auf dem Datenbankserver an. Dieser Parameter wird auch verwendet, um die E/A-Blockgröße auf dem Data Server Runtime Client festzulegen, wenn ein Blockcursor geöffnet wird.

Bevor Sie die Blockung von Zeilendaten für LOB-Datentypen aktivieren, müssen Sie verstehen, welche Auswirkungen dies auf die Systemressourcen hat. Es wird mehr gemeinsam genutzter Speicher auf dem Server benötigt, um die Verweise auf LOB-Werte in jedem Block von Daten zu speichern, wenn LOB-Spalten zurückgegeben werden. Die Anzahl solcher Verweise variiert entsprechend dem Wert des Konfigurationsparameters rqrioblk.

Zur Erhöhung der Speicherkapazität, die dem Zwischenspeicher zugeordnet wird, ändern Sie den Datenbankkonfigurationsparameter database_memory wie folgt:
  • Setzen Sie den Wert des Parameters auf AUTOMATIC.
  • Erhöhen Sie den Wert um 256 Seiten, wenn der Parameter gegenwärtig auf einen benutzerdefinierten numerischen Wert eingestellt ist.

Zur Erhöhung der Leistung einer vorhandenen Anwendung mit eingebettetem SQL, die auf LOB-Werte zugreift, binden Sie die Anwendung erneut, indem Sie im Befehl BIND entweder die Klausel BLOCKING ALL oder die Klausel BLOCKING UNAMBIG zur Anforderung der Zeilenblockung angeben. Anwendungen mit eingebettetem SQL rufen LOB-Werte jeweils zeilenweise ab, nachdem ein Block von Zeilen vom Server abgerufen wurde. Benutzerdefinierte Funktionen (UDFs), die große LOB-Ergebnisse zurückgeben, können den DB2-Server veranlassen, zum einzeiligen Abruf von LOB-Daten zurückzukehren, wenn große Mengen Speicher auf dem Server belegt werden.

Vorgehensweise

Gehen Sie wie folgt vor, um die Zeilenblockung anzugeben:

  1. Schätzen Sie mithilfe der Werte der Konfigurationsparameter aslheapsz und rqrioblk die Anzahl der Zeilen ab, die für jeden Block zurückgegeben werden. In den beiden folgenden Formeln steht azl jeweils für die Ausgabezeilenlänge in Byte.
    • Verwenden Sie die folgende Formel für lokale Anwendungen:
         Zeilen per Block = aslheapsz * 4096 / orl
      Die Anzahl von Byte pro Seite beträgt 4.096.
    • Verwenden Sie die folgende Formel für ferne Anwendungen:
         Zeilen per Block = rqrioblk / orl
  2. Zur Aktivierung der Zeilenblockung geben Sie einen entsprechenden Wert für die Option BLOCKING im Befehl BIND oder PREP an.

    Wenn Sie die Option BLOCKING nicht angeben, wird standardmäßig der Zeilenblockungstyp UNAMBIG verwendet. Bei Verwendung des Befehlszeilenprozessors (CLP) und von Call Level Interface (CLI) ist der Standardtyp der Zeilenblockung ALL.