Em um geodatabase versionado, que impacto as tabelas delta e a árvore de estados têm no desempenho da consulta?

9

Temos um banco de dados de dados de versão do arcsde (arcgis 9.3.1 no oracle 10g) com um modelo de dados bastante complexo que inclui cerca de 100 classes de recurso e tabelas não espaciais, uma rede geométrica e muitas classes de relacionamento.

Os dados são editados diariamente por 5 ou 6 usuários do arcmap utilizando o versionamento sde. Além disso, as versões são criadas por serviços automáticos que fazem interface com outros sistemas de negócios para realizar edições no geodatabase. O desempenho da consulta diminui visivelmente durante o dia, por isso implementamos um script noturno para obter uma compactação completa. Nas ocasiões em que um número relativamente grande de edições é realizado, o sistema pode se tornar inutilizável até depois de uma compactação completa.

Foi sugerido que o oracle configurado não pode apresentar planos de execução decentes quando confrontado com essas tabelas delta voláteis. Esta é uma explicação razoável? Que abordagem deve ser adotada para resolvê-lo?

Atualização em resposta a comentários

  • No final do dia, a árvore de estados é muito linear, com apenas um pouco de ramificação.
  • Nós compactamos todas as noites (obtenha uma compactação completa excluindo todas as versões).
  • As tabelas de negócios são analisadas regularmente.
  • As tabelas delta não são analisadas. Eles estão bloqueados (a tentativa de analisar retorna o erro "as estatísticas do objeto ORA-20005 estão bloqueadas"). Nem as tabelas voláteis no esquema sde - STATES, STATE_LINEAGES.
nef001
fonte
Você examinou a árvore de estados usando o Geodatabase Toolkit (GDBT) ?
precisa saber é o seguinte
Não Kirk, o que devo procurar?
Nf001
você usa um fluxo de trabalho com versão específica?
Ragi Yaser Burhum
3
Sobre a sua pergunta Gdbt, você está procurando funk galhos de árvores estaduais que parecem mais linear e longe SDE.DEFAULT em oposição a "espessa"
Ragi Yaser Burhum
Todas as versões são criadas a partir do padrão e reconciliadas e postadas no padrão como julgar adequado por nossos usuários. Eles podem criar 3 ou 4 por dia cada. Processamos em lote as solicitações de serviço usando o código arcobjects em execução no contexto do servidor arcgis. Cada lote cria uma versão, executa as edições, reconcilia e lança como padrão e exclui a versão. Provavelmente cerca de uma dúzia de vezes por dia.
Nf001

Respostas:

7

As tabelas delta e a árvore de estados têm um impacto direto no desempenho de suas consultas.

Primeiro, você precisa entender o controle de versão; Fiz uma breve explicação sobre o relacionamento da árvore de estados e dos rótulos de versão em uma resposta diferente . Eu acho que ajudaria você a passar por isso.

Depois de ler essa resposta, você poderá perceber como um ramo de ID de estado longo (da raiz para o ID de estado referido por um rótulo afetaria o desempenho. Por quê? Porque você tem junções mais complexas para recriar a exibição "atual" da versão. Como a compactação está aparando a árvore, as junções internas ficam mais fáceis de processar pelo banco de dados subjacente e as sessões do ArcMap ficam mais rápidas.

Dê uma olhada no documento Versioning Workflows da ESRI, que ensinará como manter a árvore de estado da versão sob controle sensato. Use o GDBT para examinar a árvore de estados antes e depois para ver como um bom fluxo de trabalho afeta a árvore.

Segundo, se você pode se safar de não precisar usar a Rede Geométrica na maioria dos casos de uso, faça isso. Isso reduzirá a velocidade dos FeatureClasses envolvidos, pois utiliza mensagens complexas para todas as chamadas Row :: store (em vez de apenas armazenar a linha na tabela e concluir o processo).

Para atualizar estatísticas, use a função Analisar das Ferramentas de Gerenciamento de Dados (marque todas elas). Ele saberá como lidar com tabelas delta (e quaisquer outras tabelas) necessárias.

Ragi Yaser Burhum
fonte
4

[Desculpas da primeira postagem: isso deve ser um comentário, não uma resposta definitiva.] Se você possui versões de edição relativamente antigas e que não foram publicadas, elas devem ser excluídas, publicadas ou reconciliadas. Uma versão antiga não reconciliada mantém uma visão antiga do padrão, o que impede que registros delta pertencentes a versões mais recentes sejam compactados nas tabelas base. Pode haver um grande número desses registros delta descompactados fixados a uma versão antiga e o desempenho é afetado porque todas as versões são exibições nas tabelas delta e base. O desempenho do sistema está relacionado ao número de edições desde a última reconciliação (ou criação) de cada versão. Então, em resumo; se houver alguma versão que você não possa postar, reconcilie-a regularmente e compacte-a.

JamesL
fonte