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.
Respostas:
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.
fonte
[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.
fonte