Aprimore o desempenho do desenvolvedor SQL no construtor de consultas

5

Eu uso o Oracle SQL Developer (versão 17.3.1.279) no Windows 10 de 64 bits.
Ele está conectado a um banco de dados Oracle na rede por meio do TNS.

Sempre que eu abro o "construtor de consultas" pela primeira vez para uma consulta, ou após algumas alterações no código SQL, leva muito tempo (30-60 s) para carregar.

Também "insights de conclusão" aparecem muito lentos (3-4 s), então eu geralmente acabo de digitar os nomes de tabelas e colunas antes deles aparecerem (a configuração é de 0.6 s para eles aparecerem).

Com base nos problemas acima, suspeito que o desenvolvedor SQL sempre leia informações do banco de dados. Existe uma maneira de torná-lo armazenar informações localmente? (estrutura do banco de dados é bastante permanente, muda menos de uma vez por ano)


Eu também tive uma olhada no gerenciador de tarefas, e o que é estranho é que, mesmo que o desenvolvedor SQL não responda ao preparar o "construtor de consultas", ele não usa muitos recursos

Recursos utilizados pelo desenvolvedor do SQL durante a preparação da exibição:

  • 0-1,5% da minha CPU (pulando até 7% por alguns segundos)
  • 600 - 650 MB de RAM (eu tenho um total de 16 GB, dos quais 9 GB são gratuitos, então eu não acho que seria um gargalo).
  • 0 MB / s de disco e 0% de rede

Em geral, o desempenho não é afetado

  • Uso da CPU 10-30%
  • memória: 7-8 GB usados, 8-10 GB comprometidos, 8-9 GB livres
  • uso de disco: 0-5%
Máté Juhász
fonte
Qualquer consulta faz isso?
Ramhound
O problema é o mesmo para todas as consultas que eu executo, mesmo as mais simples ( select * from MyTable) se comportam da mesma forma.
Máté Juhász
Você verificou o menu de opções para qualquer recurso óbvio ativado que possa explicar o comportamento?
Ramhound
Sim, verifiquei, mas não consegui encontrar nada.
Máté Juhász

Respostas:

2

Uma possível explicação é que o construtor de consultas precisa obter todas as tabelas do banco de dados e todas as informações de coluna antes de permitir acesso ao próprio criador de consultas, e que o carregamento de todos esses dados é o que leva tempo. Para esse problema, posso pensar apenas na solução alternativa de uso de um esquema de fonte de dados customizado, em que apenas as informações da tabela necessárias são incluídas, se isso for possível no seu caso.

Para sua pergunta sobre um cache local, aqui estão algumas referências, embora pareça que elas afetam apenas as consultas, e seu problema pode estar no carregamento dos metadados das tabelas:

Você também pode usar o comando Alter Table para alterar a residência das tabelas que você usa para Cache. Isso só é adequado se você tiver RAM suficiente para manter as tabelas na memória, onde elas serão lidas bit a bit e mantidas quando acessadas. Mas eu realmente não sei se os metadados das tabelas dos catálogos do sistema também são lidos e mantidos na memória.

Abaixo estão listadas outras dicas gerais que também podem ajudar:

  • Desativar recursos não utilizados em Ferramentas / Recursos

  • Desativar extensões
    Em Preferências, desative todas as extensões desnecessárias, exceto talvez a Barra de Pesquisa (é necessário reiniciar o SQL Developer). Isso também limpará o menu principal de itens não usados.

  • Definir preferência de aparência para o sistema operacional host
    Isso ajudará a farm-out a GUI para o host, em vez de desenhar tudo via Java. Outros parâmetros Java poderiam ser ajustados, mas isso é apenas para os aventureiros.

  • Feche grades e arquivos quando terminar

  • Definir limite de histórico do SQL para um valor baixo

  • Se estiver executando via Remote Desktop, ajuste as configurações gráficas

  • Otimize o verificador de vírus O
    SQL-Developer é um programa Java que consiste em .jararquivos grandes , que são apenas .ziparquivos, portanto não faz sentido examinar todo o arquivo apenas para alguns arquivos. Você pode excluir a pasta SQL-Developer das verificações de vírus.

  • Executar o SQL-Developer como administrador

  • Se tudo mais falhar, existem Alternativas Livres para o Oracle SQL Developer .

harrymc
fonte
Parece que o mate quer explicitamente armazenar em cache as informações do banco de dados - isso parece apenas uma lista de dicas não relacionadas que podem "acelerar" o programa. Não tenho certeza se ele atende a intenção da pergunta ou o que a companheira está esperando para colocar a recompensa como está.
Journeyman Geek
@JourneymanGeek Ainda estou tentando as sugestões. Embora nenhum dos dois ofereça uma solução rápida, eles parecem promissores. E é uma resposta legítima, definitivamente não vale a pena votar.
Máté Juhász
@ MátéJuhász: Se isso não melhorar o desempenho, será útil reunir algumas medidas de desempenho para identificar melhor a área do problema. Como você está tendo lentidões de 30 a 60 segundos, isso é tempo suficiente para observar no Gerenciador de Tarefas ou no Monitor de Recursos, se se trata de CPU, disco ou rede.
harrymc
@harrymc: Eu tive exatamente o mesmo pensamento, por favor dê uma olhada na minha atualização
Máté Juhász
Você já olhou para as estatísticas gerais do computador ou apenas para o SQL-Developer? Alguns desses grandes produtos são feitos de vários processos. Esperas de rede também são imensuráveis.
harrymc
0

Depois de várias tentativas sem sucesso eu entrei em contato com o gerente de Oracle da minha empresa, que mencionou o problema para a Oracle.

Eles reconheceram que é de fato lento, e agora na versão 3.2.20.10 o problema está resolvido, é muito rápido!

Máté Juhász
fonte