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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Anweisungen » SQL-Anweisungen (P-Z)

 

REFRESH MATERIALIZED VIEW-Anweisung

Initialisiert oder aktualisiert die Daten in einer materialisierten Ansicht, indem ihre Abfragedefinition ausgeführt wird.

Syntax
REFRESH MATERIALIZED VIEW Ansichtenliste
 [ WITH { 
      ISOLATION LEVEL Isolationsstufe
      | { EXCLUSIVE | SHARE } MODE } ]
 [ FORCE BUILD ] 
Ansichtenliste :
[ Eigentümer.]Name_materialisierte_Ansicht [, ... ]
Isolationsstufe : 
READ UNCOMMITTED 
| READ COMMITTED 
| SERIALIZABLE 
| REPEATABLE READ 
| SNAPSHOT
Parameter
  • WITH-Klausel   Benutzen Sie die WITH-Klausel zur Angabe der Art der Sperre, die Sie während der Aktualisierung für die Basistabellen benutzen möchten. Der Sperrentyp bestimmt, wie die materialisierte Ansicht mit Daten gefüllt wird und wie die Gleichzeitigkeit von Transaktionen betroffen ist. Die Einstellung der WITH-Klausel beeinflusst nicht den Typ der Sperre, die für die materialisierte Ansicht selbst gesetzt wurde. Sie ist immer eine Exklusivsperre. Folgende Klauseln können Sie für Sperren angeben:

    • ISOLATION LEVEL Isolationsstufe   Verwenden Sie WITH ISOLATION LEVEL, um die Isolationsstufe für die Ausführung des Aktualisierungsvorgangs zu ändern. Die ursprüngliche Isolationsstufe wird für die Verbindung wieder hergestellt, nachdem die Anweisung ausgeführt wurde.

      Bei Sofortansichten kann die Isolationsstufe nur SERIALIZABLE sein.

      Für die Snapshot-Isolation wird nur die Snapshot-Stufe unterstützt (SNAPSHOT angeben). Anweisungsstufe und schreibgeschützte Anweisungs-Snapshots werden nicht unterstützt.

      Hinweise zu Isolationsstufen finden Sie unter Transaktionen und Isolationsstufen verwenden und Isolationsstufen und Konsistenz.

    • EXCLUSIVE MODE   Verwenden Sie WITH EXCLUSIVE MODE, wenn Sie die Isolationsstufe nicht ändern wollen, aber sicherstellen möchten, dass die Daten aktualisiert werden, um mit den festgeschriebenen Daten in den Basistabellen konsistent zu sein. Wenn Sie WITH EXCLUSIVE MODE verwenden, werden exklusive Tabellensperren in allen Basistabellen gesetzt und keine andere Transaktion kann Abfragen, Aktualisierungen oder andere Aktionen mit den Basistabellen durchführen, bis der Aktualisierungsvorgang abgeschlossen ist. Wenn keine exklusiven Tabellensperren erhalten werden können, schlägt die Aktualisierung fehl und es wird ein Fehler zurückgegeben. Weitere Hinweise finden Sie unter Tabellensperren.

    • SHARE MODE   Verwenden Sie WITH SHARE MODE, um anderen Transaktionen Schreibzugriff auf Basistabellen zu gewähren, während der Aktualisierungsvorgang läuft. Wenn diese Klausel angegeben wird, werden vor dem Ausführen des Aktualisierungsvorgangs gemeinsame Tabellensperren für alle Basistabellen eingerichtet, bis der Aktualisierungsvorgang abgeschlossen ist. Weitere Hinweise finden Sie unter Tabellensperren.

  • FORCE BUILD-Klausel   Standardmäßig gilt: Wenn Sie eine REFRESH MATERIALIZED VIEW-Anweisung ausführen, prüft der Datenbankserver, ob die materialisierte Ansicht veraltet ist (d.h. ob die Basistabellen geändert wurden, seit die materialisierte Ansicht aktualisiert wurde). Wenn sie nicht veraltet ist, wird die Aktualisierung nicht durchgeführt. Verwenden Sie die FORCE BUILD-Klausel, um eine Aktualisierung der materialisierten Ansicht unabhängig davon vorzunehmen, ob die materialisierte Ansicht veraltet ist oder nicht.

Bemerkungen

Benutzen Sie die Anweisung, um die materialisierten Ansichten zu initialisieren oder zu aktualisieren, die in der Ansichtsliste enthalten sind.

Wenn eine REFRESH MATERIALIZED VIEW-Anweisung für eine materialisierte Ansicht ausgeführt wird, die nicht veraltet ist, wird keine Aktualisierung vorgenommen, wenn nicht die Klausel FORCE BUILD angegeben ist.

Das Standardaktualisierungsverhalten für Sperren und gleichzeitigen Zugriff auf Daten ist wie folgt:

  • Bei einer Sofortansicht ist das Standardaktualisierungsverhalten WITH SHARE MODE, gleichgültig ob die Snapshot-Isolation aktiviert ist oder nicht.

  • Bei einer manuellen Ansicht und aktiver Snapshot-Isolation ist das Standardverhalten WITH ISOLATION LEVEL SNAPSHOT.

  • Bei einer manuellen Ansicht und nicht aktiver Snapshot-Isolation ist das Standardverhalten WITH SHARE MODE.

Weitere Hinweise zu Isolationsstufen und zur Aktivierung der Snapshot-Isolation finden Sie unter Isolationsstufen und Konsistenz und allow_snapshot_isolation-Option [Datenbank].

Für verschiedene Optionen müssen bestimmte Werte eingestellt werden, damit eine REFRESH MATERIALIZED VIEW-Anweisung erfolgreich verläuft und die Ansicht für die Optimierung verwendet werden kann. Außerdem werden Optionseinstellungen für jede materialisierte Ansicht gespeichert, wenn sie erstellt wird. Um die Ansicht zu aktualisieren oder die Ansicht in der Optimierung zu verwenden, müssen diese Optionseinstellungen zu den aktuellen Optionen passen. Weitere Hinweise finden Sie unter Einschränkungen bei materialisierten Ansichten.

Wenn eine Aktualisierung nach einer teilweisen Verarbeitung fehlschlägt, verbleibt die Ansicht in einem nicht initialisierten Status und die Daten können nicht mehr in das Stadium zurückversetzt werden, das vor dem Start der Aktualisierung aktiv war. Prüfen Sie den beim Fehlschlag der Aktualisierung aufgetretenen Fehler, beheben Sie die Ursache des Fehlers und führen Sie die REFRESH MATERIALIZED VIEW-Anweisung nochmals aus.

Sie können auch die IMMEDIATE REFRESH-Klausel der ALTER MATERIALIZED VIEW-Anweisung verwenden, um die Ansicht so zu ändern, dass sie sofort aktualisiert wird, wenn die Basisdaten verändert werden. Weitere Hinweise finden Sie unter ALTER MATERIALIZED VIEW-Anweisung.

Diese Anweisung kann nicht ausgeführt werden, wenn mit der WITH HOLD-Klausel geöffnete Cursor vorhanden sind, die entweder Anweisungs- oder Transaktions-Snapshots verwenden. Weitere Hinweise finden Sie unter Snapshot-Isolation.

Berechtigungen

INSERT-Berechtigung für die materialisierte Ansicht und SELECT-Berechtigung für die Tabellen in der Definition der materialisierten Ansicht erforderlich

Nebenwirkungen

Geöffnete Cursor, die die materialisierte Ansicht referenzieren, werden geschlossen.

Ein Checkpoint wird am Anfang der Ausführung durchgeführt.

Automatische Festschreibungen werden am Anfang und am Ende der Ausführung durchgeführt.

Während der Ausführung wird eine exklusive Sperre für die zu aktualisierende materialisierte Ansicht unter Verwendung der BLOCKING-Verbindungsoption gesetzt, und gemeinsame Tabellensperren, ohne Blockierung, werden für alle Tabellen eingerichtet, die von der materialisierten Ansicht referenziert werden. Wenn die WITH-Klausel angegeben ist, können zusätzliche Sperren in der Basistabelle gesetzt werden. Überdies ist die materialisierte Ansicht bis zum Abschluss der Aktualisierung in einem nicht-initialisiertem Status, wodurch sie dem Datenbankserver und dem Optimierer nicht zur Verfügung steht.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Gesetzt den Fall, Sie erstellen eine materialisierte Ansicht EmployeeConfid99 und füllen sie mit Daten unter Verwendung der folgenden Anweisungen:

CREATE MATERIALIZED VIEW EmployeeConfid99 AS
   SELECT EmployeeID, Employees.DepartmentID, SocialSecurityNumber, Salary, ManagerID,
      Departments.DepartmentName, Departments.DepartmentHeadID
   FROM Employees, Departments
   WHERE Employees.DepartmentID=Departments.DepartmentID;
REFRESH MATERIALIZED VIEW EmployeeConfid99;

Später, nachdem die Ansicht benutzt wurde, möchten Sie die Ansicht mit der Isolationsstufe READ COMMITTED aktualisieren (Isolationsstufe 1) und die Ansicht neu aufbauen. Sie könnten die folgende Anweisung ausführen:

REFRESH MATERIALIZED VIEW EmployeeConfid99
   WITH ISOLATION LEVEL READ COMMITTED
   FORCE BUILD;
Achtung

Wenn Sie dieses Beispiel durchgeführt haben, löschen Sie die von Ihnen erstellte materialisierte Ansicht. Andernfalls können Sie keine Schemaänderungen an ihren Basistabellen Employees und Departments durchführen, wenn Sie andere Beispiele ausprobieren. Sie können das Schema einer Tabelle nicht ändern, die aktivierte, materialisierte Ansichten haben. Weitere Hinweise finden Sie unter Materialisierte Ansichten löschen.