Der SESAM/SQL-DBH reserviert einen Bereich des Hauptspeichers eigens für die Speicherung von SQL-Zugriffsplänen.
SQL-Zugriffsplan
Ein SQL-Zugriffsplan ist eine Auswertungsvorschrift für eine SQL-Anweisung.
Für eine statische SQL-Anweisung wird bei der ersten Ausführung ein SQL-Zugriffsplan erzeugt. Nach erfolgreicher Ausführung wird dieser Plan nicht sofort gelöscht, sondern im Planpuffer abgelegt. Wird die gleiche SQL-Anweisung erneut ausgeführt, steht der zugehörige Plan bereits zur Verfügung und muss nicht nochmals erzeugt werden, was einen erheblichen Performance-Gewinn bedeutet.
Eine dynamische SQL-Anweisung erzeugt einen SQL-Zugriffsplan jeweils bei den Anweisungen EXECUTE IMMEDIATE oder PREPARE (siehe Handbuch „ SQL-Sprachbeschreibung Teil 1: SQL-Anweisungen“). Bei der Anweisung EXECUTE IMMEDIATE wird der zugehörige Plan unmittelbar erzeugt und sofort ausgeführt. Bei der Anweisung PREPARE bleibt der Plan mindestens bis Transaktionsende im Planpuffer, so dass Folgeanweisungen auf ihn zugreifen können (siehe auch Handbuch „ Performance“).
Wird in einer Folgetransaktion dieselbe dynamische SQL-Anweisung mit EXEC, IMMEDIATE oder PREPARE bearbeitet, wird der zugehörige Plan wiederverwendet, sofern er noch im Planpuffer vorhanden ist.
Größe des Planpuffers
Der Planpuffer ist aufgeteilt in einen Primärpuffer, in dem der DBH die SQL-Zugriffspläne speichert und einen Sekundärpuffer, der die zugehörige Verwaltungsinformation enthält. Die Größe des Planpuffers ist abhängig von zwei Faktoren:
der DBH-Option SQL-SUPPORT mit ihrem Operanden PLANS, der die Mindestanzahl paralleler SQL-Zugriffspläne festlegt
der DBH-Option COLUMNS, welche die Bereichsgröße für Wiedergewinnungsanweisungen festlegt
Beide Werte kann der Systemverwalter den Bedürfnissen der aktuellen Session anpassen (siehe Handbuch „ Datenbankbetrieb“).
Reicht die Größe des Planpuffers nicht aus, so werden die SQL-Zugriffspläne nach dem LRU-Prinzip verdrängt: derjenige Plan, der am längsten nicht mehr verwendet wurde, wird von einem neuen Plan überschrieben.
Informationen über den Planpuffer liefert die Betriebsstatistik des SESAM/SQL-Dienstprogramms SESMON. In der Maske „SQL-INFORMATION“ sind u.a. die Größe des Planpuffers und seine aktuelle Belegung ablesbar.