Instruçã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.
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.
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 do Artigo: 000010102
Obtenha ajuda de especialistas do ArcGIS
Comece a conversar agora