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 » Systemobjekte » Systemprozeduren » Alphabetische Liste der Systemprozeduren

 

sa_materialized_view_info-Systemprozedur

Gibt Informationen über die angegebenen materialisierten Ansichten zurück

Syntax
sa_materialized_view_info( 
  [ Ansichtsname
  [, Eigentümername ] ]
)
Argumente
  • Ansichtsname   Verwenden Sie diesen optionalen CHAR(128)-Parameter, um den Namen der materialisierten Ansicht anzugeben, aus der Informationen zurückgegeben werden sollen.

  • Eigentümername   Verwenden Sie diesen optionalen CHAR(128)-Parameter, um den Eigentümer der materialisierten Ansicht anzugeben.

Bemerkungen

Wenn weder Ansichtsname noch Eigentümername angegeben sind, werden Informationen über alle materialisierten Ansichten in der Datenbank zurückgegeben.

Wenn der Eigentümername nicht angegeben wird, werden Informationen über alle materialisierten Ansichten namens Ansichtsname zurückgegeben.

Die Systemprozedur sa_materialized_view_info gibt für eine materialisierte Ansicht folgende Informationen zurück:

Spaltenname Datentyp Beschreibung
OwnerName CHAR(128) Der Eigentümer der Ansicht.
ViewName CHAR(128) Der Name der Ansicht
Status CHAR(1)

Statusinformationen über die Ansicht. Die möglichen Werte sind:

  • D   deaktiviert (disabled)

  • E   aktiviert (enabled)

DataStatus CHAR(1)

Statusinformationen über Daten in der Ansicht. Die möglichen Werte sind:

  • E   Ein Fehler ist während der letzten Aktualisierung aufgetreten. Die Ansicht ist aktiviert, aber nicht initialisiert.

  • F   Die Basistabellen wurden seit der letzten Aktualisierung nicht geändert und die Ansicht wird als aktuell angesehen. Die Ansicht ist aktiviert und initialisiert.

  • N   Die Ansicht ist nicht initialisiert. Dies tritt auf, wenn eine der folgenden Situationen zutrifft:

    • Die Ansicht wurde seit ihrer Erstellung nicht aktualisiert.

    • Die Daten wurden in der Ansicht gekürzt.

    • Die Ansicht ist deaktiviert.

  • S   Eine Basistabelle wurde seit der letzten Aktualisierung geändert und die Ansicht wird als veraltet eingestuft. Die Ansicht ist aktiviert und initialisiert.

ViewLastRefreshed TIMESTAMP

Die Uhrzeit der letzten Aktualisierung der Ansicht. Wenn der Wert von ViewLastRefreshed gleich NULL ist, wird die Ansicht deinitialisiert.

DataLastModified TIMESTAMP

Bei einer veralteten Ansicht der letzte Zeitpunkt, an dem die zugrunde liegenden Daten geändert wurden.

Der Wert ist NULL für Ansichten, die nicht initialisiert wurden, oder für Ansichten, die nicht als veraltet eingestuft werden.

AvailForOptimization CHAR(1)

Informationen über die Verfügbarkeit der Ansicht für die Verwendung durch den Optimierer. Die möglichen Werte sind:

  • D   Die Verwendung durch den Optimierer ist deaktiviert. Der Eigentümer der Ansicht lässt nicht zu, dass die Ansicht vom Optimierer benutzt wird.

  • I   Die Ansicht kann vom Optimierer aus internen Gründen nicht benutzt werden, zum Beispiel weil ihre Definition die vorgegebenen Bedingungen nicht erfüllt. Der Eigentümer hat aber die Verwendung durch den Optimierer nicht explizit verboten.

  • N   Die Ansicht enthält keine Daten, da keine Aktualisierung durchgeführt wurde oder sie fehlgeschlagen ist. Der Eigentümer der Ansicht hat erlaubt, dass die Ansicht durch den Optimierer verwendet wird, aber sie ist nicht initialisiert.

  • O   Ein mit der aktuellen Verbindung nicht kompatibler Optionswert ist vorhanden. Die Ansicht ist zur Verwendung durch den Optimierer zugelassen und ihre Definition erfüllt alle Bedingungen, aber die aktuellen Optionseinstellungen sind mit den Optionseinstellungen nicht kompatibel, die für die Erstellung der Ansicht verwendet wurden.

  • Y   Die Ansicht kann vom Optimierer verwendet werden. Der Eigentümer der Ansicht hat erlaubt, dass die Ansicht vom Optimierer verwendet wird und die Ansichtsdefinition erfüllt alle Bedingungen für die Verwendung durch den Optimierer.

Weitere Hinweise dazu, wie und wann eine materialisierte Ansicht vom Optimierer ausgewählt wird, finden Sie unter Performance durch materialisierte Ansichten verbessern.

RefreshType CHAR(1)

Der Aktualisierungstyp für die Ansicht. Die möglichen Werte sind:

  • I   Die Ansicht ist eine Sofortansicht. Sofortansichten werden sofort aktualisiert, wenn Änderungen an Daten in der Basistabelle die Daten in der materialisierten Ansicht betreffen.

  • M   Die Ansicht ist eine manuelle Ansicht. Manuelle Ansichten werden manuell aktualisiert, beispielsweise mit der Anweisung REFRESH MATERIALIZED VIEW oder der Systemprozedur sa_refresh_materialized_views.

Weitere Hinweise zu manuellen und Sofortansichten finden Sie unter Manuelle und sofortige materialisierte Ansichten.

Diese Prozedur kann nützlich sein, um die Liste der materialisierten Ansichten zu erhalten, die nie vom Optimierer in Betracht gezogen werden, weil es ein Problem bei der Ansichtsdefinition gibt. Der Wert von AvailForOptimization ist bei diesen materialisierten Ansichten "I". Weitere Hinweise über Einschränkungen bei der Definition von materialisierten Ansichten finden Sie unter Einschränkungen bei materialisierten Ansichten.

Die folgende Tabelle zeigt, wie die AvailForOptimization-Eigenschaft festgelegt wird. Beginnend mit der linken Spalte lesen Sie quer über die Zeile, um die Bedingungen zu ermitteln, die vorliegen müssen, damit als Ergebnis der Wert gezeigt wird, der in der AvailForOptimization-Spalte steht.

Erlaubt der Benutzer die Verwendung der Ansicht in der Optimierung? Erfüllt die Ansichtsdefinition alle Bedingungen für die Verwendung? Entsprechen die Verbindungsoptionen denjenigen, die für die Verwendung der Ansicht gefordert werden? Ist die Ansicht initialisiert? AvailForOptimization-Wert
Ja Ja Ja Ja Y
Nein k.A. k.A. k.A. D
Ja Nein k.A. Ja I
Ja k.A. k.A. Nein N
Ja Ja Nein Ja O

Eine initialisierte materialisierte Ansicht kann leer sein. Dies kommt vor, wenn in den Basistabellen keine Daten vorhanden sind, die zur Definition der materialisierten Ansicht passen. Eine leere Ansicht wird nicht als identisch mit einer nicht initialisierten materialisierten Ansicht angesehen, die ebenfalls keine Daten hat. Mit dem Wert der Eigenschaft ViewLastRefreshed können Sie ermitteln, ob die Ansicht nicht initialisiert (NULL) oder wegen nicht passender Daten in der Basistabelle leer ist (Nicht-Null).

Berechtigungen

DBA-Berechtigung oder Berechtigung zum Ausführen für dem DBO gehörende Prozeduren

Nebenwirkungen

Alle Metadaten für die angegebenen materialisierten Ansichten sowie alle Abhängigkeiten werden in den Cache des Datenbankservers geladen.

Siehe auch
Beispiel

Die folgende Anweisung gibt Informationen über alle materialisierten Ansichten in der Datenbank zurück:

SELECT *
   FROM sa_materialized_view_info();

Die Ergebnisse der sa_materialized_view_info-Systemprozedur können mit den Ergebnissen der sa_materialized_view_can_be_immediate-Systemprozedur kombiniert werden, um Statusinformationen darüber zurückzugeben, ob die Ansicht als Sofortansicht geeignet ist. Führen Sie die nachstehenden Anweisungen aus, um materialisierte Ansichten zu erstellen, die für dieses Beispiel geprüft werden:

CREATE MATERIALIZED VIEW view0 AS ( 
   SELECT ID, Name, Description, Size 
   FROM Products 
   WHERE Quantity > 0 );
CREATE UNIQUE INDEX u_view0 
   ON view0( ID );
ALTER MATERIALIZED VIEW view0 
   IMMEDIATE REFRESH;
CREATE MATERIALIZED VIEW view00 AS (
   SELECT ID, Name, Description, Size 
   FROM Products 
   WHERE Quantity <= 0 );
CREATE UNIQUE INDEX u_view00 
   ON view00( ID );
CREATE MATERIALIZED VIEW view1 AS (
   SELECT ID, Name, Description, Size 
   FROM Products 
   WHERE Quantity = 0 );
ALTER MATERIALIZED VIEW view1 
   DISABLE;
CREATE MATERIALIZED VIEW view100
   AS (SELECT C.ID, C.Surname, sum(P.UnitPrice) as revenue, C.CompanyName, SO.OrderDate
         FROM Customers C, SalesOrders SO, SalesOrderItems SOI, Products P
         WHERE C.ID = SO.CustomerID
         AND SO.ID = SOI.ID
         AND P.ID = SOI.ProductID
         GROUP BY C.ID, C.Surname, C.CompanyName, SO.OrderDate);
REFRESH MATERIALIZED VIEW view100;

Führen Sie die folgende Anweisung aus, um den Status und die Verwendbarkeitsinformationen für die gerade erstellten Ansichten zurückgeben:

SELECT ViewName, Status, ViewLastRefreshed, AvailForOptimization, RefreshType, CanBeImmediate 
FROM sa_materialized_view_info() AS V, 
   LATERAL( SELECT LIST( ErrorMessage ) 
            FROM sa_materialized_view_can_be_immediate( V.ViewName, V.OwnerName ) ) AS I( CanBeImmediate );
View-Name Status ViewLast-Refreshed AvailFor-Optimization RefreshType CanBeImmediate
view0 E (NULL) N I
view00 E (NULL) N M
view1 D (NULL) N M Verwendung von Ansicht 'view1' nicht möglich, weil sie deaktiviert wurde
view100 E 2008-02-12 16:47:00.000 Y M Die materialisierte Ansicht view10 kann nicht in eine Sofortansicht verwandelt werden, da sie bereits initialisiert wurde. Die materialisierte Ansicht view10 kann nicht in eine Sofortansicht verwandelt werden, weil sie keinen eindeutigen Index für nicht-nullwertfähige Spalten aufweist. Die materialisierte Ansicht kann nicht in eine Sofortansicht verwandelt werden, weil COUNT(*) Teil der SELECT-Liste sein muss. Die materialisierte Ansicht kann nicht in eine Sofortansicht geändert werden, da sie keinen eindeutigen Index für nicht-nullwertfähige Nicht-Aggregatspalten enthält.

Aus den Ergebnissen können Sie folgende Informationen ablesen:

  • view0 wurde nie aktualisiert und ist eine Sofortansicht.

  • view00 wurde nie aktualisiert und ist eine manuelle Ansicht.

  • view1 ist deaktiviert.

  • view100 ist eine manuelle Ansicht, die zuletzt am 2008-02-12 um 16:47:00.000 aktualisiert wurde.

  • view00 kann in eine Sofortansicht umgewandelt werden, weil in der Spalte CanBeImmediate keine Fehlermeldungen stehen.

  • view1 und view100 können aus den Gründen, die in der CanBeImmediate-Spalte stehen, nicht in Sofortansichten umgewandelt werden.