stmtheap - Größe des Anweisungszwischenspeichers (Konfigurationsparameter)

Dieser Parameter legt den Grenzwert für den Anweisungszwischenspeicher fest, der als Arbeitsbereich für den SQL- oder XQuery-Compiler während der Kompilierung einer SQL- oder XQuery-Anweisung verwendet wird.

Konfigurationstyp
Datenbank
Parametertyp
Online konfigurierbar
Konfigurierbar durch Mitglied in einer Db2 pureScale® umgebung
Weitergabeklasse
Anweisungsgrenzwert
Standardwert [Bereich]
Für 32-Bit-Plattformen
AUTOMATISCH [128 - 524288 ]
  • Datenbankserver mit lokalen und fernen Clients: Die Standardeinstellung ist AUTOMATIC mit einem zugrunde liegenden Wert von 2048.
  • Es ist auch möglich, ohne das Attribut AUTOMATIC für diesen Parameter nur einen festen Wert zu definieren.
Für 64-Bit-Plattformen
AUTOMATISCH [128 - 2 147 483 647 ]
  • Datenbankserver mit lokalen und fernen Clients: Die Standardeinstellung ist AUTOMATIC mit einem zugrunde liegenden Wert von 8192.
  • Dieser Parameter kann nur ohne das Attribut AUTOMATIC mit einem festen Wert definiert werden.
Hinweis: Der Standardwert kann durch den Db2® Configuration Advisor nach der ersten Erstellung der Datenbank geändert werden.
Maßeinheit
Seiten (4 KB)
Zuordnung
Wie für jede Anweisung während des Vorkompilierens oder des Bindens erforderlich.
Freigabe
Wenn das Vorkompilieren oder Binden einer Anweisung abgeschlossen ist.

Der Anweisungszwischenspeicher bleibt nicht permanent zugeordnet. Der Speicher wird für die Verarbeitung jeder SQL- oder XQuery-Anweisung einzeln zugeordnet und anschließend wieder freigegeben. Bei dynamischen SQL- oder XQuery-Anweisungen wird der Anweisungszwischenspeicher während der Ausführung Ihres Programms verwendet. Bei statischen SQL- oder XQuery-Anweisungen wird der Anweisungszwischenspeicher während des Bindeprozesses verwendet, nicht während der Programmausführung.

Für den Parameter stmtheap kann die Einstellung AUTOMATIC mit einem zugrunde liegenden Wert definiert werden oder ein fester Wert.

Wird der Parameter stmtheap mit AUTOMATIC definiert, erzwingt der zugrunde liegende Wert eine Begrenzung der Speichermenge, die für eine einzelne Kompilierung mit dynamischer Joinaufzählung zugeordnet wird. Wird eine Speicherbegrenzung festgestellt, wird die Anweisungskompilierung mit einer schnellen Joinaufzählung (Greedy Join Enumeration) und einem uneingeschränkten Anweisungszwischenspeicher erneut gestartet. Mit der Option AUTOMATIC wird die Anweisungskompilierung während der Ausführung der schnellen Joinaufzählung nur durch die Größe des verbleibenden Anwendungsspeichers (APPL_MEMORY), des Instanzspeichers (INSTANCE_MEMORY) oder des Systemspeichers begrenzt. Wird die schnelle Joinaufzählung erfolgreich abgeschlossen, wird die Warnung SQL0437W an die Anwendung zurückgegeben. Wird von der schnellen Joinaufzählung eine Speicherbegrenzung festgestellt, schlägt die Anweisungsvorbereitung mit dem Fehler SQL0101N fehl.

Beispiel: db2 update db cfg for SAMPLE using STMTHEAP 8192 AUTOMATIC erstellt eine Anweisungszwischenspeicherbegrenzung von 8192 * 4 KB (32 MB) für dynamische Joinaufzählungen und keine Begrenzung für schnelle Joinaufzählungen.

Wenn für den Parameter stmtheap ein fester Wert definiert wird, gilt die Begrenzung sowohl für die dynamische als auch für die schnelle Joinaufzählung. Stellt die dynamische Joinaufzählung eine Speicherbegrenzung fest, wird eine schnelle Joinaufzählung versucht, wobei dieselbe feste Anweisungszwischenspeicherbegrenzung verwendet wird. Wird die schnelle Joinaufzählung erfolgreich abgeschlossen, wird die Warnung SQL0437W an die Anwendung zurückgegeben. Wird von der schnellen Joinaufzählung eine Speicherbegrenzung festgestellt, schlägt die Anweisungsvorbereitung mit dem Fehler SQL0101N fehl.

Beispiel: db2 update db cfg for SAMPLE using STMTHEAP 8192 erstellt eine Anweisungszwischenspeicherbegrenzung von 8192 * 4 KB (32 MB) für dynamische und schnelle Joinaufzählungen.

Wenn die Laufzeitleistung Ihrer Abfrage nicht ausreicht, können Sie erwägen, den Wert des Konfigurationsparameters stmtheap (entweder den der Einstellung AUTOMATIC zugrunde liegenden Wert oder einen festen Wert) zu erhöhen, um sicherzustellen, dass die dynamisch programmierte Joinaufzählung (Dynamic Programming Join Enumeration) erfolgreich ist. Erzwingen Sie eine erneute Kompilierung der Anweisung, wenn Sie den Konfigurationsparameter stmtheap aktualisieren, um die Leistungsdaten für eine Abfrage zu verbessern. Dadurch, dass Sie eine erneute Kompilierung der Anweisung erzwingen, wird das Abfrageoptimierungsprogramm möglicherweise dazu veranlasst, einen neuen Zugriffsplan zu erstellen, der von der neuen Größe des Anweisungszwischenspeichers profitiert.

Hinweis: Die Joinaufzählung für die dynamische Programmierung tritt nur bei Optimierungsklassen 3 und höher auf. Die Standardoptimierungsklasse ist 5.