Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] MySQL muy lento (red local)

Estas en el tema de MySQL muy lento (red local) en el foro de Java en Foros del Web. Hola buenos dias, estoy usando java+mysql y la verdad que me anda muy lento, se tarda mucho en devolver los resultados. Tengo un problema similar ...
  #1 (permalink)  
Antiguo 09/09/2014, 07:47
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 14 años, 6 meses
Puntos: 0
MySQL muy lento (red local)

Hola buenos dias, estoy usando java+mysql y la verdad que me anda muy lento, se tarda mucho en devolver los resultados.


Tengo un problema similar a la de esta persona:

http://www.forosdelweb.com/f45/java-...suario-844640/

Probe de agregar las ip al archivo host asi (es un ejemplo):

Código:
127.0.0.1    192.168.1.61
Pero sigue igual, en java me conecto asi a mysql:

Código:
    private boolean conexion() {
        try {

            String server = "jdbc:mysql://" + ServidorMYSQL + "/" + bd;
            Class.forName("com.mysql.jdbc.Driver");
            conexion = DriverManager.getConnection(server, UsuarioMYSQL, PassMYSQL);
            return true;
        } catch (ClassNotFoundException | SQLException ex) {
            JOptionPane.showMessageDialog(
                    null,
                    "Base de datos desconectada, el programa se cerrara");
            System.exit(1);
            return false;
        }

    }

La ip del servidor la consigo asi:

Código:
    public static String getIpServidor() {
        try {
            String ip = InetAddress.getByName(NOMBRE_SERVIDOR).getHostAddress();
            return ip;
        } catch (UnknownHostException ex) {

        }
        return null;
    }

Tengo creado un usuario en mysql "192.168.1.%" que es para que entren las conexiones, la verdad no se que que puede ser... Alguna ayuda?

Gracias!
  #2 (permalink)  
Antiguo 09/09/2014, 08:47
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: MySQL muy lento (red local)

Si lo ejecutas en local, apuntando a localhost ¿va lento?¿Hay algún proxy?

Cita:
127.0.0.1 192.168.1.61
Es exactamente lo mismo

Cita:
127.0.0.1 localhost
Si te va lento con localhost el problema es de la propia consulta, prueba a hacerla directamente en la base de datos.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 09/09/2014, 09:26
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: MySQL muy lento (red local)

Cita:
Iniciado por Xerelo Ver Mensaje
Si lo ejecutas en local, apuntando a localhost ¿va lento?¿Hay algún proxy?



Es exactamente lo mismo



Si te va lento con localhost el problema es de la propia consulta, prueba a hacerla directamente en la base de datos.


Gracias por tu respuesta, la base de datos esta alojada en un servidor (una pc con w7 x64 estable). Los clientes son locales, no se conectan desde afuera de la red.
Si hay proxy en la red, eso influye? Pense que al ser local no tendria nada que ver.

=> Lo del archivo host lo lei y por lo que entendi es:

Entrar a la maquina servidor, abrir el archivo y poner

127.0.0.1 [ip cliente]



--------------------------------------------------------------




Vaya sorpresa, tome el calculo de cuanto tardaba la consulta desde java y tardo 41 milisegundos.

El problema esta al llenar el JTable, se demora haciendo eso.


Esta mal llenarlo asi?:

Aclaro: La funcion mysql devuelve una lista "listaExpedientes" (son los registros) donde la recorro para llenar el jTable.

Código:
    public void cargarTablaExpedientes(JTable tabla) {

        if (listaExpedientes.size() > 0) {
            DefaultTableModel modelo = (DefaultTableModel ) tabla.getModel();
 
            String[] fila = new String[5];
            for (int i = 0; i < listaExpedientes.size(); i++) {

                String expediente = listaExpedientes.get(i).getFormato_expediente();

                int id_tema = listaExpedientes.get(i).getId_tema();
                int id_proveedor = listaExpedientes.get(i).getId_proveedor();

                fila[0] = String.valueOf(listaExpedientes.get(i).getId_expediente());
                fila[1] = UtilidadesTimers.getFechaMySQLtoNormal(listaExpedientes.get(i).getFecha(), "-");
                fila[2] = expediente;
                if (id_tema > 0) {
                    fila[3] = TemasBD.getTema(id_tema).getNombre();
                } else {
                    fila[3] = "S/T";
                }
                fila[4] = ProveedoresBD.getProveedor(id_proveedor).getNombre();
                modelo.addRow(fila);
            }
        }

    }

Tardo: 8346 milisegundos en llenar el jTable

Última edición por martin0290; 09/09/2014 a las 09:47
  #4 (permalink)  
Antiguo 10/09/2014, 00:41
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: MySQL muy lento (red local)

Buenas,

Que por cada expediente tengas que hacer una consulta para sacar el nombre del tema y del proveedor es una barbaridad. Eso explica que te tarde tanto.

Esta informacion deberias obtenerla en la misma consulta en la que obtienes la lista de expedientes.


Un saludo
  #5 (permalink)  
Antiguo 10/09/2014, 07:24
 
Fecha de Ingreso: octubre-2009
Mensajes: 84
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: MySQL muy lento (red local)

Profesor_Falken gracias por tu respuesta,


Voy a implementar lo que me dijiste ahora mismo

----- edito -----

No es lo mismo obtenerlo de la consulta primaria que luego con los id?


---- edito2 -----

Impresionante, Tardo: 8 milisegundos.



Muchas gracias por sus respuestas!!

Última edición por martin0290; 10/09/2014 a las 07:55

Etiquetas: lento, mysql, programa, red, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:44.