CÓMO

Descubrir el número de filas en la tabla de adiciones para el linaje de la versión DEFAULT correspondiente a una clase de objeto específica

Last Published: October 11, 2024

Descripción

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.

Solución o solución alternativa

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.

  1. Identifique el registration_id de la tabla versionada que se utiliza en el informe. Con SQL*Plus, es posible ejecutar una consulta en el table_registry de ArcSDE para obtener el valor de registration_id de una tabla.
SQL> SELECT registration_id
2 FROM sde.table_registry
3 WHERE owner = 'ADMIN' AND table_name = 'PRIMARYOH';

REGISTRATION_ID
---------------
67
  1. Defina y establezca las variables locales en SQL*Plus, que se utilizan como variables de enlace en la instrucción SQL para generar el informe.
    • Declare las variables y sus definiciones de tipo:
SQL> VARIABLE lineage_id NUMBER;
SQL> VARIABLE lineage_name NUMBER;
    • Establezca los valores de cada variable:
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.
  1. Ejecute la instrucción SQL para informar de las estadísticas de la tabla. Observe que el valor de registration_id, 67, de la tabla de la sobrecarga principal debe especificarse como la tabla de adiciones (a67) y la tabla de eliminaciones (d67) en la instrucción SQL.
    • Para detectar el número de cambios en la tabla de adiciones, ejecute la siguiente instrucción:
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
    • Para generar la misma información para la tabla de eliminaciones, ejecute la siguiente instrucción:
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

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga