Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Tabellen, Ansichten und Indizes

 

Temporäre Tabellen

Temporäre Tabellen werden in der temporären Datei gespeichert. Seiten der temporären Datei können im Cache abgelegt werden, ebenso wie Seiten jedes anderen DBspace. Vorgänge in temporären Tabellen werden nie in das Transaktionslog geschrieben. Es gibt zwei Arten von Tabellen: lokale temporäre Tabellen und globale temporäre Tabellen.

  • Lokale temporäre Tabellen   Eine lokale temporäre Tabelle existiert nur für die Dauer einer Verbindung bzw. (wenn sie für eine zusammengesetzte Anweisung definiert wurde) für die Dauer der zusammengesetzten Anweisung.

    Zwei lokale temporäre Tabellen in demselben Geltungsbereich können nicht den gleichen Namen haben. Falls Sie eine temporäre Tabelle mit demselben Namen wie eine Basistabelle erstellen, wird die Basistabelle innerhalb der Verbindung erst sichtbar, wenn der Bereich der lokalen temporären Tabelle endet. Eine Verbindung kann keine Basistabelle mit dem Namen einer vorhandenen temporären Tabelle erstellen.

    Wenn Sie einen Index für eine lokale temporäre Tabelle erstellen und die Option auto_commit_on_create_local_temp_index deaktiviert ist, wird kein Festschreiben durchgeführt, bevor ein Index für die Tabelle erstellt wird.

  • Globale temporäre Tabellen   Eine globale temporäre Tabelle verbleibt in der Datenbank, bis sie explizit durch eine DROP TABLE-Anweisung gelöscht wird. Mehrere Verbindung von derselben oder von verschiedenen Anwendungen können eine globale temporäre Tabelle gleichzeitig verwenden. Globale temporäre Tabellen haben folgende Merkmale:

    • Die Definition der Tabelle wird im Katalog aufgezeichnet und bleibt bestehen, bis die Tabelle explizit gelöscht wird.

    • Einfügungen, Aktualisierungen und Löschungen in der Tabelle werden nicht im Transaktionslog aufgezeichnet.

    • Spaltenstatistiken für die Tabelle werden vom Datenbankserver im Speicher geführt.

    Es gibt zwei Arten von globalen temporären Tabellen: nicht gemeinsam genutzte Tabellen und gemeinsam genutzte Tabellen. Normalerweise wird eine globale temporäre Tabelle nicht gemeinsam genutzt, d.h., jede Verbindung sieht nur die eigenen Zeilen in der Tabelle. Wenn eine Verbindung beendet wird, werden die Zeilen für diese Verbindung aus der Tabelle gelöscht.

    Wenn eine globale temporäre Tabelle gemeinsam genutzt wird, werden alle Daten der Tabelle von allen Verbindungen gemeinsam genutzt. Um eine gemeinsam genutzte globale temporäre Tabelle zu erstellen, geben Sie beim Erstellen die Klausel SHARE BY ALL an. Für gemeinsam genutzte globale temporäre Tabellen gelten, zusätzlich zu den allgemeinen Merkmalen globaler temporärer Tabellen, die folgenden Merkmale:

    • Der Inhalt der Tabelle bleibt bestehen, bis sie explizit gelöscht wird oder bis die Datenbank heruntergefahren wird.

    • Beim Start der Datenbank ist die Tabelle leer.

    • Zeilensperren funktionieren bei der Tabelle genau so wie bei einer Basistabelle.

  • Nicht-transaktionale temporäre Tabellen   Temporäre Tabellen können mit der Klausel NOT TRANSACTIONAL in der Anweisung CREATE TABLE als nicht-transaktional deklariert werden. Die NOT TRANSACTIONAL-Klausel bietet Performanceverbesserungen unter bestimmten Umständen, da Vorgänge in nicht-transaktionalen temporären Tabellen keine Einträge im Rollback-Log bewirken. Beispiel: NOT TRANSACTIONAL kann sinnvoll sein, wenn Prozeduren, die die temporäre Tabelle verwenden, wiederholt ohne dazwischenliegende COMMITs oder ROLLBACKs aufgerufen werden oder wenn die Tabelle viele Zeilen enthält. Änderungen nicht-transaktionaler temporärer Tabellen werden durch COMMIT oder ROLLBACK nicht beeinflusst.

 Siehe auch

Erstellen einer globalen temporären Tabelle
Referenzen auf temporäre Tabellen innerhalb von Prozeduren