sql >> Base de Datos >  >> RDS >> Mysql

Spring Batch - JdbcCursorItemReader arrojando OutOfMemoryError con una tabla MySQL grande

Hay un problema en el controlador MySql JDBC que provoca la carga de todo el conjunto de datos en la memoria, independientemente de los parámetros que haya pasado al método de creación de declaraciones. Consulte http://dev. mysql.com/doc/refman/5.0/en/connector-j-reference-implementation-notes.html para saber cómo abrir correctamente un cursor.

Así es como lo hago:

<bean class="org.springframework.batch.item.database.JdbcCursorItemReader">
  <property name="verifyCursorPosition" value="false" />
   <property name="dataSource" ref="remoteDataSource" />
   <property name="rowMapper">
     <bean class="org.springframework.jdbc.core.SingleColumnRowMapper" />
   </property>
   <property name="fetchSize">
     <util:constant static-field="java.lang.Integer.MIN_VALUE" />
   </property>
   <property name="sql">
     <value>SELECT foo, bar FROM baz</value>
  </property>
</bean>