HOW TO
Die Performance (Antwortzeit) einer versionierten Abfrage kann durch die Anzahl der Zeilen, die aus der Adds- und der Deletes-Tabelle gefiltert werden müssen, beeinträchtigt werden.
Es gibt keine festgelegte Anzahl von Zeilen in der Adds- oder Deletes-Tabelle, ab der die Performance einer versionierten Abfrage beeinträchtigt wird. Logischerweise wirkt sich das Filtern von Zeilen in den Delta-Tabellen während der Ausführung der Versionsabfrage nachteilig auf die Performance aus.
In diesem Artikel wird ein Berichtsmechanismus beschrieben, mit dem der Administrator einen Bericht ausführen kann, der anzeigt, wie viele Zeilen in der Lineage der DEFAULT-Version für eine bestimmte Objektklasse vorhanden sind.
Wenn die Performance der Versionsabfrage durch die Anzahl der Zeilen in den Delta-Tabellen beeinträchtigt wird, besteht die Lösung darin, alle Versionen mit der DEFAULT-Version abzugleichen. Alternativ kann die ArcObjects-Methode für die empfohlene Abgleichreihenfolge verwendet werden, um nur die Versionen, die die Komprimierung der DEFAULT-Version verhindern, abzugleichen und die Datenbank zu komprimieren. Dadurch, dass die Zeilen in den Delta-Tabellen zurück in die Basistabelle der Objektklasse komprimiert werden können, ist die Ausführung der Versionsabfrage weniger aufwändig, wodurch sich die Performance verbessert.
In den Anweisungen wird beschrieben, wie Sie die "registration_id" einer versionierten Tabelle abrufen, lokale Variablen in SQL*Plus definieren, die Variablenwerte aus einer SQL-Anweisung festlegen und eine Anweisung ausführen, um die Anzahl der Zeilen in den Delta-Tabellen für die Lineage der DEFAULT-Version, den Prozentsatz der Zeilen in der Adds- und der Deletes-Tabelle für die Lineage der DEFAULT-Version und die Gesamtzahl der Zeilen in der Adds- und der Deletes-Tabelle zurückzugeben.
Im folgenden Beispiel soll ermittelt werden, wie viele Zeilen in der Lineage der DEFAULT-Version für die Delta-Tabellen der Feature-Class "Primary Overhead" vorhanden sind.
SQL> SELECT registration_id
2 FROM sde.table_registry
3 WHERE owner = 'ADMIN' AND table_name = 'PRIMARYOH';
REGISTRATION_ID
---------------
67
SQL> VARIABLE lineage_id NUMBER;
SQL> VARIABLE lineage_name NUMBER;
SQL> BEGIN
2 SELECT state_id INTO :lineage_id FROM sde.versions WHERE owner = 'SDE' AND name = 'DEFAULT';
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> BEGIN
2 SELECT lineage_name INTO :lineage_name FROM sde.states WHERE state_id = :lineage_id;
3 END;
4 /
PL/SQL procedure successfully completed.
SQL> SELECT
2 (SELECT COUNT(*) FROM admin.a67
3 WHERE sde_state_id IN
4 (SELECT lineage_id FROM sde.state_lineages
5 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id)) AS "NUMBER OF ROWS",
6 ROUND((SELECT COUNT(*) FROM admin.a67
7 WHERE sde_state_id IN
8 (SELECT lineage_id FROM sde.state_lineages
9 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id))
10 /(SELECT COUNT(*) FROM admin.a67) * 100, 2) AS "PERCENTAGE OF ROWS",
11 (SELECT COUNT(*) FROM admin.a67) AS "TOTAL ROWS"
12 FROM dual;
NUMBER OF ROWS PERCENTAGE OF ROWS TOTAL ROWS
-------------- ------------------ ----------
17413 26.78 65032
SQL> SELECT
2 (SELECT COUNT(*) FROM admin.d67
3 WHERE deleted_at IN
4 (SELECT lineage_id FROM sde.state_lineages
5 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id)) AS "NUMBER OF ROWS",
6 ROUND((SELECT COUNT(*) FROM admin.d67
7 WHERE deleted_at IN
8 (SELECT lineage_id FROM sde.state_lineages
9 WHERE lineage_name = :lineage_name AND lineage_id <= :lineage_id))
10 /(SELECT COUNT(*) FROM admin.d67) * 100, 2) AS "PERCENTAGE OF ROWS",
11 (SELECT COUNT(*) FROM admin.d67) AS "TOTAL ROWS"
12 FROM dual;
NUMBER OF ROWS PERCENTAGE OF ROWS TOTAL ROWS
-------------- ------------------ ----------
16361 27.09 60384
Artikel-ID: 000010102
Unterstützung durch ArcGIS-Experten anfordern
Beginnen Sie jetzt mit dem Chatten