7 votos

¿Un número elevado de SDE_state_lineages reduce el rendimiento?

En nuestra base de datos SDE, la tabla SDE_state_lineages tiene unos 200.000 registros, la SDE_states tiene unos 900, y nuestra tabla SDE_versions tiene unos 1.300 registros.

Últimamente hemos tenido problemas de rendimiento. Las capas son muy lentas de dibujar. Comprimimos a diario, pero no somos capaces de conciliar las versiones existentes.

¿Es este elevado número de registros en SDE_state_lineages la causa del bajo rendimiento?

1 votos

La respuesta corta es sí. Cada vez que alguien solicita datos hay que sondear también cada uno de los estados para ver si se han hecho cambios. Creo que es hora de comprimir su base de datos. ¿Estás editando mucho estos datos?

0 votos

¿Qué quiere decir que cada vez que alguien solicita datos hay que sondear cada uno de los estados?

0 votos

Los datos de la tabla son los base Cuando se solicitan datos, el base se lee y luego cada uno de los estados a su vez es interrogado (encuestado) para ver si tiene una actualización de cualquiera de las filas en las tablas de adiciones y eliminaciones, cuantos más estados más tiempo toman las solicitudes de datos; es fracciones de un segundo para cada estado, pero obviamente cuantos más estados más tiempo se necesita. Eso es lo que yo entiendo de la parte de la base de datos de SDE. ¿Por qué no se pueden conciliar las versiones?

7voto

mbamb19s Puntos 18

La respuesta es que sí, que el número de filas en la tabla sde_state_lineages afecta directamente al rendimiento de la geodatabase. 200k filas no se considera "mucho" pero eso es relativo a tus recursos disponibles y asumiendo que no hay problemas de versiones que requieran un diagnóstico/reparación. Continúe comprimiendo con frecuencia.

Por sus convenciones de nomenclatura parece que está usando SQL Server como su DBMS subyacente. Los siguientes artículos se aplican a todas las plataformas RDBMS pero las consultas son para Oracle. Se pueden ajustar para SQL Server, se aplica la misma arquitectura. Yo lo he hecho para el primero.

La razón oficial es:

Cuando ArcGIS consulta una tabla versionada para una versión determinada, el versión se utiliza para derivar la representación versionada de la tabla de la tabla versionada (uniendo las adiciones, eliminaciones y sde.state_lineages). El rendimiento puede verse afectado por la longitud del linaje de la versión, debido al número de estados que deben ser entre la tabla sde.state_lineages y las tablas delta.

Cómo hacerlo: Informar de la longitud de un linaje de versión en Oracle http://support.esri.com/fr/knowledgebase/techarticles/detail/35500

Aquí está la consulta de esa página reescrita para SQL Server:

SELECT v.owner +'.'+v.name "VERSION NAME", COUNT(sl.lineage_id) "LINEAGE LENGTH"
FROM sde.sde_states s, sde.sde_state_lineages sl, sde.sde_versions v
WHERE s.lineage_name = sl.lineage_name
AND sl.lineage_id <= s.state_id
AND v.state_id = s.state_id
GROUP BY v.owner, v.name, sl.lineage_name
ORDER BY "LINEAGE LENGTH";

Esto le dirá exactamente cuántos estados contiene el linaje de cada versión. Esto se aplica tanto a las versiones transaccionales como a las versiones del sistema de réplica. También puede ajustar esta consulta para encontrar versiones que apunten al mismo estado que otras versiones; véase #1.

Puntos clave

  • Versiones

A partir de su recuento de estados de 900 y el recuento de versiones de 1300, y su declaración de que nunca se reconcilia, tiene 400 versiones que nunca han sido editadas. Una versión es una etiqueta que apunta a un estado, y la única vez que varias versiones apuntan al mismo estado es justo después de haber sido reconciliadas o justo después de haber sido creadas. Yo miraría en la eliminación de esos si su sistema de orden de trabajo lo permite, como ArcGIS explorará la tabla de versiones para muchas funciones. Su recuento de versiones de 1300 podría ser más caro que su recuento de linaje de estado de 200k; depende de lo que esté haciendo cuando note un golpe de rendimiento.

  • Índices

Mantener los índices en la tabla sde_state_lineages, que en SQL Server son state_lineages_pk y lineage_id_idx2. La mayoría de las consultas a ArcSDE realizarán un escaneo de índice completo o de rango. Mantener estos índices actualizados después de sus operaciones diarias de compresión puede ayudar al rendimiento. Aquí hay un artículo sobre el tema:

Crecimiento del índice de la tabla SDE.STATE_LINEAGES http://support.esri.com/en/knowledgebase/techarticles/detail/20596

  • Identificación del Estado

También puede consultar a qué versión pertenece un estado, así como cuántos estados pertenecen a un objeto específico editado por una versión específica, utilizando el siguiente artículo:

Cómo hacerlo: Descubrir el número de filas en la tabla de adiciones para el linaje de la versión DEFAULT para una clase de objeto específica

http://support.esri.com/fr/knowledgebase/techarticles/detail/35030

  • Seguimiento de objetos por versión y tabla delta

-Aquí tienes una consulta para SQL Server que te dará el id de estado actual de cada objeto versionado junto con qué versión es la responsable y en qué tabla delta se puede encontrar:

SELECT v.owner version_owner,
         v.name version_name,
         v.state_id,
         mm.state_id as modified_id,
         mm.registration_id,
         tr.owner layer_owner,
         TR.TABLE_NAME layer_name
FROM sde.sde_versions v
         FULL JOIN sde.sde_mvtables_modified mm ON (v.state_id = MM.STATE_ID)
         LEFT JOIN sde.sde_table_registry tr
            ON (tr.registration_id = mm.registration_id)
ORDER BY tr.owner, TR.TABLE_NAME;

Espero que esto ayude.

0 votos

Entonces, ¿qué significaría una longitud de linaje de 399?

0 votos

Una longitud de linaje de 399 indica que 399 estados participan en ese linaje. Si esto ocurre después de una operación de compresión, indica que hay 399 estados que no pueden comprimirse juntos para colapsar ese linaje sin afectar a la estructura de la tabla versionada. Una causa probable de esto en tu escenario es que hay versiones que hacen referencia directa a esos estados. Puede ver a qué estado apunta actualmente una versión en la tabla sde_versions.

0 votos

Hey, acabo de ver esto y de hecho hice otra pregunta aquí: gis.stackexchange.com/questions/113581/

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X