Mysql não aguentando muitas querys

9 respostas
S

Me deparei com um problema aqui, preciso inserir no mysql 14000 objetos, funciona normal, mas quando chega lá pela 4000 query

Communications link failure

The last packet successfully received from the server was 1.252.073.447.343 milliseconds ago. The last packet sent successfully to the server was 0 milliseconds ago.

Parece que ta fechando a conexão, ou ela não tá aguentando tanta query!

Como proceder?

9 Respostas

WRYEL

já tento inserir de 500 em 500 e dar um tempo pra ele pensar ?

conforme você inserir a primeira remessa, vai no terminal do mysql e faz:

show full processlist;

e veja a quantidade de processos que ele tem na pilha :slight_smile:

S

WRYEL:
já tento inserir de 500 em 500 e dar um tempo pra ele pensar ?

conforme você inserir a primeira remessa, vai no terminal do mysql e faz:

show full processlist;

e veja a quantidade de processos que ele tem na pilha :slight_smile:

Como eu daria esse tempo? Sou iniciante no mysql
EU to inserindo num for de lista…

robinsonbsilva

Jovem,

Esse controle de inserção pode ser configurado no próprio Mysql.
A maioria dos SGBD possuem parametros para configurar cursores, time out…etc!
Especificamente no Mysql não sei…mas dá uma “googleda”

J

pelo seu post, provavelmente você precisa alterar o valor padrão de alguma variável de timeout.

Tente fazer novamente a inserção, e verifique em quantos segundos ele para. Tente identificar qual variável é.

no mysql, para ver os valores default, digite:

SHOW VARIABLES LIKE '%timeout%';
S

O tempo em media é 90 segundos mas nenhuma das variaveis tem esse valor no minimo 60, as outras são muito altas

S

Esqueci de dizer que também tá dando nullpointer na variavel da query…

S

robinsonbsilva:
Jovem,

Esse controle de inserção pode ser configurado no próprio Mysql.
A maioria dos SGBD possuem parametros para configurar cursores, time out…etc!
Especificamente no Mysql não sei…mas dá uma “googleda”

Ja mudei diversas variaveis que poderiam estar causando isso incluindo as timeout, mas não foi…

WRYEL

para da uma pausa de 5 segundos:

try{
    Thread.sleep(5000);
}catch(Exception e){ }

Seu mysql está aonde ? na sua maquina ou na internet ? instalou sozinho ou veio naqueles pacote pré montados com apache ? posta seu código pra gente ver :slight_smile:

S
WRYEL:
para da uma pausa de 5 segundos:
try{
    Thread.sleep(5000);
}catch(Exception e){ }

Seu mysql está aonde ? na sua maquina ou na internet ? instalou sozinho ou veio naqueles pacote pré montados com apache ? posta seu código pra gente ver :)

Instalei sozinho na própia maquina...

for (FACDT facdt : planilha.factd) {
                    FACDTDao dao = new FACDTDao();
                    if (dao.salvar(facdt)) {
                        System.out.println("salvou");
                    } else {
                        System.out.println("erro ao salvar");
                    }

                }
            } catch (IOException ex) {
                Logger.getLogger(JanelaTabela.class.getName()).log(Level.SEVERE, null, ex);
            }

dao

public class FACDTDao {

    public boolean salvar(FACDT facdt) {
        String sql = "INSERT INTO FACDT VALUES(0, ?, ?)";
        boolean salvou = false;
        Connection con = SGBD.conectar();
        try {
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setDate(1, new Date(facdt.getData().getTime()));
            ps.setDouble(2, facdt.getValor());
            salvou = ps.executeUpdate() > 0;
            SGBD.desconectar(con);
        } catch (SQLException ex) {
        }

        return salvou;
    }
}

metodo de conexão da classe que conecta ao banco

public static Connection conectar() {
        Connection con = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");

            con = DriverManager.getConnection("jdbc:mysql://localhost/calcagno", "root", "");
        } catch(ClassNotFoundException e) {
            System.out.println("Não foi possivel localizar o driver" + e.getMessage());

        } catch(SQLException e) {
            System.out.println("Não foi possivel conectar ao SGBD" + e.getMessage());

        }
        return con;
    }

Valeu :wink: vou tentar faz o que voce disse amigo

Criado 4 de setembro de 2009
Ultima resposta 4 de set. de 2009
Respostas 9
Participantes 4