Importar BD via Script?

Fala galerinha joia?
Meu problema é o seguinte, estou fazendo um sistema com conexão a um banco em um servidor web, só que a conexão está muito demorada, causionando muita lentidão, eu conecto no início e desconecto no fim de todos os métodos de conferência e consulta, demorando cerca de 4 seg para cada conexão, juntando todos os metodos da maior classe demora mais de 1 min para fazer a consulta e compilar a tabela.

Estava pensando em uma solução, a minha ideia foi a seguinte, baixar(ou atualizar) o banco ao iniciar o progrma, essa atualização iria para um banco no localhost da máquina, na qual o processo é instantâneo.
Alguém save se é possivel de criar um banco temporário no localhost e passar essas atualizações??
Ou importar um banco via script sql?

agradeço a ajuda!!

Oi.

Supondo que o seu código esteja muito bem implementando, fechando todos os ResultSet, PreparedStatement, Connection e usando um pool de conexões.
Pensando nesse cenário e existe uma lentidão, devemos considerar que há um tráfego de rede envolvido no processo e dependendo do tamanho de cada pacote enviado, é normal que haja uma demora superior a realizada quando a consulta é local.

Justamente pensando nisso, muitos servidores Web realizam a conexão ao banco de dados localmente, de modo que o processo ocorra de forma mais rápida. É lógico que existem outras saídas e nem vou entrar em detalhes, mas é uma observação, apenas. Acho que tu vai fazer bobagem ao fazer um dump da base de dados para a máquina local. Começa pelo fato de tu não saber o tamanho desse dump e muito menos se o seu disco rígido (do cliente) terá espaço para fazer isso. Outro ponto a ser observado, é o tempo em que o sistema levará para realizar um dump automático das informações. Se tiver 10 registro em 5 tabelas, é tranquilo. Como fica se tiver 300 mil registros em 15 tabelas?

Meu conselho é você revisar o seu código, verificar se está usando uma boa arquitetura, se está dividindo os processos em camadas, se está usando um pool de conexões adequados, senão está deixando nenhuma conexão aberta, a máquina em que está executando a aplicação e etc. O Java é excelente mas não faz milagre e há algoritmos, que por mais que você busque usar os melhores padrões de projetos em seu desenvolvimento, são por si só, demorados ou exigem um alto nível de processamento e se levarmos em conta que há influência da rede na comunicação entre os dados, isso pode aumentar de forma exponencial.

Fala brother blz?

Pensei no mesmo que você
Os meus métodos são assim:

public void insere(Servico servico){ conectar(); //método de conexão try { comando.executeUpdate(" ...."); System.out.println("Inserida!"); } catch (SQLException e) { imprimeErro("Erro ao inserir Servico ", e.getMessage()); /// método que imprime os erros } finally { fechar(); //fecha a conexão } }

Método de conexão:

private void conectar() { try { con = ConFactory.conexao(URL, NOME, SENHA, ConFactory.MYSQL); comando = con.createStatement(); System.out.println("Sistema OK! - Conectado"); } catch (ClassNotFoundException e) { imprimeErro("Erro ao carregar o driver", e.getMessage()); } catch (SQLException e) { imprimeErro("Erro ao conectar", e.getMessage()); } }

método de finalizar conexão private void fechar() { try { comando.close(); con.close(); System.out.println("Conexão Fechada"); } catch (SQLException e) { imprimeErro("Erro ao fechar conexão", e.getMessage()); } }

o que seria esse pool de conexão?

Aqui tem dois links interessantes, dá uma olhada

http://www.devmedia.com.br/post-5869-Connection-Pool.html

http://www.guj.com.br/java/22-connection-pool-para-jdbc

Basicamente, o objetivo é que se já existe uma conexão aberta não haja necessidade de abrir outra, simplesmente a usa.
Mas claro que tem outros conceitos envolvidos e etc, mas já existem implementações prontas para JDBC, JAR, no caso. Basta dar uma pesquisada.

Abraços.

Eu cheguei a dar uma lida nesse Pool
mas pelo que vi serve para evitar de abrir conexão para vários usuários ao mesmo tempo neh, o meu problema não é bem esse, não tem nenhum tráfego aqui, e é só eu que conecto, esse pool serviria para minhas conexões também? pois faço várias numa mesma classe:

As operações de uma classe fica assim na console:

Sistema OK! - Conectado
Tempo: 3545
Tempo da query: 256
Sistema OK! - Conectado
Tempo: 2779
Conexão Fechada
Sistema OK! - Conectado
Tempo: 2753
Conexão Fechada
Sistema OK! - Conectado
Tempo: 2899
Conexão Fechada
Sistema OK! - Conectado
Tempo: 2629
Conexão Fechada
Sistema OK! - Conectado
Tempo: 2800
Conexão Fechada
Conexão Fechada
INSERT: 0-5, -1
Sistema OK! - Conectado
Tempo: 2822
Conexão Fechada

Sim, você viu quantos conexões abriu e fechou?
O Pool iria gerenciar isso para você e provavelmente, não teria aberta tantas conexões quanto você fez.
Ele consegue gerenciar facilmente isso para você, sem que tu tenha esse tipo de preocupação.

Mas como eu disse, se é conexão remota envolve questões de rede, envio de pacote, TCP, tamanho dos pacotes e bla bla bla.
Isso está influenciando diretamente no processamento do seu algoritmo.

Não acho nenhum exemplo na net… a maioria que fala do java desktop, só fala e fala e não mostra aplicações, só acho exemplos em java web.

Você tem um exemplo ai? o funcionamento entendi, mas a aplicação está foda.
Se tiver agradeço!