CÓMO
El rendimiento de una consulta versionada (tiempo de respuesta) puede verse afectado por el número de filas que se deben filtrar de las tablas de adiciones y eliminaciones.
No hay ningún número establecido que represente el número de filas de las tablas de adiciones o eliminaciones que indiquen cuándo se ve afectado el rendimiento de una consulta versionada. Lógicamente, el coste de filtrar las filas de las tablas delta durante la ejecución de la consulta de versión afecta al rendimiento.
En este artículo se proporciona un mecanismo de informes para que el administrador ejecute un informe que muestre cuántas filas están presentes en el linaje de la versión DEFAULT correspondiente a una clase de objeto específica.
Si el rendimiento de la consulta de versión se ve afectado por el número de filas de las tablas delta, la solución es conciliar todas las versiones con la versión DEFAULT o utilizar el orden de conciliación recomendado por el método ArcObjects para conciliar solo las versiones, que impiden que se comprima la versión DEFAULT, y comprimir la base de datos. Al permitir que las filas de las tablas delta se compriman de nuevo en la tabla base de la clase de objeto, la consulta de versión debe realizar menos trabajo cuando se ejecuta, lo que mejora el rendimiento.
Las instrucciones proporcionadas demuestran cómo obtener el registration_id de una tabla versionada, definir variables locales en SQL*Plus, establecer los valores de las variables a partir de una instrucción SQL y ejecutar una instrucción para devolver el número de filas en las tablas delta para el linaje de la versión DEFAULT, el porcentaje de filas en las tablas de adiciones y eliminaciones para el linaje de la versión DEFAULT y el número total de filas de la tabla de adiciones y eliminaciones.
En el siguiente ejemplo, el objetivo es comprender cuántas filas están presentes en el linaje de la versión DEFAULT para las tablas delta de la clase de entidad, Sobrecarga principal.
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
Id. de artículo: 000010102
Obtener ayuda de expertos en ArcGIS
Empieza a chatear ahora