es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La velocidad de inserción de la base de datos distribuida es muy lenta.

@Test
public void transaction() throws Exception {
    Connection conn = null;
    PreparedStatement ps = null;
    try {
        String sql = "insert into `1` values(?, ?, ?, ?)";
        conn = JDBCUtils.getConnection();
        ps = conn.prepareStatement(sql);
        conn.setAutoCommit(false);
        for(int i = 1; i <= 10000; i++){
            ps.setObject(1, i);
            ps.setObject(2, 10.12345678);
            ps.setObject(3, "num_" + i);
            ps.setObject(4, "2021-12-24 19:00:00");
            ps.addBatch();
        }
        ps.executeBatch();
        ps.clearBatch();
        conn.commit();
    } catch (Exception e) {
        conn.rollback();
        e.printStackTrace();
    }finally {
        JDBCUtils.closeResources(conn, ps);
    }
}

Cuando setAutoCommit = true, la velocidad de inserción en MySQL local y MySQL distribuido es muy lenta.

Cuando establezco la transacción para confirmar manualmente, como en el código anterior, la velocidad de inserción en MySQL local ha aumentado mucho, pero la velocidad de inserción en MySQL distribuido sigue siendo muy lenta.

¿Hay algún parámetro adicional que deba ajustar?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje AI, no estoy seguro de los detalles de su entorno o configuración específicos. Sin embargo, hay algunas recomendaciones generales para mejorar la velocidad de inserción en entornos distribuidos de MySQL:

    1. Asegúrese de que el entorno distribuido de MySQL esté correctamente configurado y optimizado para el rendimiento. Esto implica ajustar varios parámetros como tamaños de búfer, grupos de hilos y mecanismos de almacenamiento en caché.
    2. Considere el uso de una capa de middleware de base de datos distribuida, como ProxySQL, para ayudar a administrar y equilibrar la carga de trabajo en los nodos del clúster.

    3. Utilice inserciones por lotes, como se muestra en el fragmento de código, para reducir la cantidad de viajes necesarios para insertar filas en la base de datos.

    4. Habilite la paralelización del proceso de inserción en múltiples hilos o procesos para aprovechar múltiples CPUS.

    Se recomienda consultar a un administrador de bases de datos o a un experto en MySQL distribuido para optimizar su entorno específico y mejorar las velocidades de inserción.

Comments are closed.