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.
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.
Eine globale temporäre Tabelle verbleibt in der Datenbank, bis sie explizit durch eine DROP TABLE-Anweisung gelöscht wird. Durch die Bezeichnung "global" wird angegeben, dass mehrere Verbindungen von der gleichen oder von unterschiedlichen Anwendungen die Tabelle zur gleichen Zeit benutzen können. 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.
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.
Temporäre Tabellen erstellen
Temporäre Tabellen innerhalb von Prozeduren referenzieren
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |