Instrução

Descubra o número de linhas na tabela de adição para a linhagem da versão DEFAULT para uma classe de objeto específica

Last Published: October 11, 2024

Descrição

O desempenho (tempo de resposta) de uma consulta com controle de versão pode ser afetado pelo número de linhas que devem ser filtradas das tabelas de adições e exclusões.

Não há um número definido que represente o número de linhas nas tabelas de adições ou exclusões que indicam quando o desempenho de uma consulta com controle de versão é afetado. Logicamente, o custo de filtrar linhas nas tabelas delta durante a execução da consulta de versão afeta o desempenho.

Este artigo fornece um mecanismo de relatório para o administrador executar um relatório que mostra quantas linhas estão presentes na linhagem da versão DEFAULT para uma classe de objeto específica.

Se o desempenho da consulta de versão estiver sendo afetado pelo número de linhas nas tabelas delta, a solução será reconciliar todas as versões com a versão DEFAULT ou usar a ordem de reconciliação recomendada do método ArcObjects para reconciliar apenas as versões, que estão impedindo que a versão DEFAULT seja compactada e compactar o banco de dados. Ao permitir que as linhas nas tabelas delta sejam compactadas de volta para a tabela base da classe de objeto, menos trabalho deve ser executado pela consulta de versão quando ela é executada, melhorando o desempenho.

Solução ou Solução Provisória

As instruções fornecidas demonstram como obter o registration_id de uma tabela versionada, definir variáveis locais no SQL*Plus, definir os valores das variáveis de uma instrução SQL e executar uma instrução para retornar o número de linhas nas tabelas delta para a linhagem da versão DEFAULT, a porcentagem de linhas nas tabelas de adição e exclusão para a linhagem da versão DEFAULT, e o número total de linhas na tabela Adições e exclusões.

No exemplo a seguir, o objetivo é entender quantas linhas estão presentes na linhagem da versão DEFAULT para a classe de feição, Sobrecarga Primária, tabelas delta.

  1. Identifique o registration_id da tabela com controle de versão que está sendo usada no relatório. Com a utilização do SQL*Plus, é possível executar uma consulta no table_registry ArcSDE para obter o valor registration_id de uma tabela.
SQL> SELECT registration_id
2 FROM sde.table_registry
3 WHERE owner = 'ADMIN' AND table_name = 'PRIMARYOH';

REGISTRATION_ID
---------------
67
  1. Defina e defina as variáveis locais no SQL*Plus, que são usadas como variáveis de ligação na instrução SQL para gerar o relatório.
    • Declare as variáveis e suas definições de tipo:
SQL> VARIABLE lineage_id NUMBER;
SQL> VARIABLE lineage_name NUMBER;
    • Defina os valores de cada variável:
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. Execute a instrução SQL para relatar as estatísticas da tabela. Observe que o valor de registration_id da tabela da Sobrecarga Primária, 67, deve ser especificado como a tabela de adições (a67) e a tabela de exclusões (d67) na instrução SQL.
    • Para descobrir o número de alterações na tabela de adições, execute a seguinte instrução:
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 gerar as mesmas informações para a tabela de exclusões, execute a seguinte instrução:
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 do Artigo: 000010102

Obtenha suporte com IA

Resolva seu problema rapidamente com o chatbot de IA de suporte da Esri.

Comece a conversar agora

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Comece a conversar agora

Ir para as opções de download