Mysql
 sql >> Base de données >  >> RDS >> Mysql

Spring Batch - JdbcCursorItemReader lançant OutOfMemoryError avec une grande table MySQL

Il existe un problème dans le pilote MySql JDBC qui entraîne le chargement de l'ensemble de données en mémoire, quels que soient les paramètres que vous avez transmis à la méthode de création d'instruction. Voir http://dev. mysql.com/doc/refman/5.0/en/connector-j-reference-implementation-notes.html pour savoir comment ouvrir correctement un curseur.

Voici comment je procède :

<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>