Java vs pl/sql (rapidez na rotina de inserts/updates)

9 respostas
J

Pessoal,

Estou fazendo uma rotina para preencher algumas tabelas com dados de outras tabelas (de bancos diferentes). E gostaria de saber se o java (jdbc puro) ficara muito mais lento que um script pl/sql. Lembrando que existem loops dentro de loops nessa rotina.

9 Respostas

N

Teoricamente sim.

Mas nem sempre, tem até um artigo aqui no GUJ que retrata um caso desses onde o java foi mais rápido.

Teria que analisar com mais calma para poder ter certeza.

Os dois “bancos” que vc diz representam dois bancos mesmo? Ou dois usuários diferentes ?
Dois bancos em mesma máquina, ou maquina remota ?

Tudo depende, tem até estratégias para poder relacionar tabelas de diferentes bancos remotos com maior performance.

J

nbluis:
Teoricamente sim.

Mas nem sempre, tem até um artigo aqui no GUJ que retrata um caso desses onde o java foi mais rápido.

Teria que analisar com mais calma para poder ter certeza.

Os dois “bancos” que vc diz representam dois bancos mesmo? Ou dois usuários diferentes ?
Dois bancos em mesma máquina, ou maquina remota ?

Tudo depende, tem até estratégias para poder relacionar tabelas de diferentes bancos remotos com maior performance.

são 2 bancos diferentes…o de origem e o de destino…estou fazendo alguns testes e ele esta demorando bem mais que um script pl/sql…e estou usando somente DAO e jdbc puro. Eu já verifiquei e não estou instanciando classes desnecessáriamente. A parte onde demora muito é onde tem um loop dentro de outro loop, q por sua vez, tem outro loop dentro. O estranho é que no pl/sql não demora muito para fazer a mesma lógica.

A

Ola,

Muitas vezes, de acordo com as maquinas fisicas, o job pl/sql fica mais rapido prq ele evita comunicação via socket entre a rede. Já que este estara na mesma maquina do banco de dados.

N

Na verdade a criação de um, dois três objetos a mais não não ter qualquer diferença significativa para seu processo.

O que conta realmente é a quantidade de I/O executada tanto no processo de busca nos bancos de dados (busca feito em disco físico pelo oracle - dados que não estão em memória), quanto no transporte de dados entre o banco e o cliente.
O oracle tentará ao máximo diminuir esses I/Os em um pl/sql, enquanto em um processo java isso é ditado pelo desenvolvedor.

J

ovelha:
Ola,

Muitas vezes, de acordo com as maquinas fisicas, o job pl/sql fica mais rapido prq ele evita comunicação via socket entre a rede. Já que este estara na mesma maquina do banco de dados.

Acho que talvez seja isso, pois estou na minha máquina testanto através de um conexão via nat e talvez pelo pl/sql seja mais inteligente nesse sentido.

A

Aqui, em um das maiores companias de telecom do Brasil, o pl/sql é nosso padrão de desenvolvimento para jobs do tipo ETL, justamente por já estar comprovado a diferença de performance pela comunicação via socket. Obviamente o comentario do nbluis é bem valido, pois otimizações utilizando as funções use_order, use_hash do oracle são sempre bem vindas, ou mesmo a troca de possições das clausulas where pode aumentar consideravelmente a performance, pois uma query no oracle é lida de baixo para cima, logo o que for gerar um full scan deve ficar por como as primeiras clausulas para que o scan seja feito em dados filtrados.

N

Registrando.
Com o Oracle trabalhando por análise de custo, é indiferente a ordenação das colunas, junções e filtros de um comando sql.
Esta opção é a default a partir da versão Oracle 9i(se não me engano).

S

Cara to querendo fazer uma aplicação que capture e exiba o nivel de sunal wi-fi, vc sabe como posso fazer isso?

N

Thread errada não :?:

Criado 19 de novembro de 2007
Ultima resposta 19 de nov. de 2007
Respostas 9
Participantes 4