"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo transmitir grandes conjuntos de resultados de MySQL en Spring para evitar OutOfMemoryError?

¿Cómo transmitir grandes conjuntos de resultados de MySQL en Spring para evitar OutOfMemoryError?

Publicado el 2024-12-22
Navegar:538

How to Stream Large MySQL Result Sets in Spring to Avoid OutOfMemoryError?

Transmisión de grandes conjuntos de resultados con MySQL

Cuando se trabaja con tablas MySQL extensas dentro de una aplicación Spring, puede surgir una excepción OutOfMemoryException cuando el controlador intenta cargar toda la tabla en la memoria. Configuración de declaración.setFetchSize(Integer.MIN_VALUE); puede no ser suficiente, ya que esto simplemente proporciona una pista para el controlador JDBC.

Para habilitar la transmisión de conjuntos de resultados en el controlador JDBC de MySQL, se requiere un enfoque más completo:

  1. Crear una instancia de declaración:

    stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
  2. Establecer la recuperación Tamaño:

    stmt.setFetchSize(Integer.MIN_VALUE);

Precauciones:

Este método tiene ciertos advertencias:

  • Se deben leer todas las filas del conjunto de resultados (o cerrar el conjunto de resultados) antes de realizar más consultas en la conexión. No hacerlo resultará en excepciones.
  • Dentro de una transacción, los bloqueos solo se liberan una vez que se completa la transacción, lo que implica que la declaración debe finalizar la ejecución primero.
  • Si el OutOfMemoryError persiste, el problema subyacente puede deberse al uso excesivo de memoria dentro del código Java. Esto requiere un procesamiento de datos inmediato en lugar de almacenamiento.

Información adicional:

Para obtener más estrategias sobre el manejo de grandes conjuntos de resultados, considere esta pregunta relacionada y su respuesta: [enlace a pregunta similar].

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3