我想在Kafka主题中从大型表MySQL发送600000000条消息。 我想使用Spring Batch进行这种使用,但是它使用查询类型:
SELECT c1, c2, c3 FROM t1 LIMIT offset, size;
在spring-batch / spring-batch-infrastructure / src / main / java / org / springframework / batch / item / database / support / MySQLPagingQueryProvider.java中生成:
public String generateJumpToItemQuery(int itemIndex, int pageSize) {
int page = itemIndex / pageSize;
int offset = (page * pageSize) - 1;
offset = offset<0 ? 0 : offset;
String limitClause = new StringBuilder().append("LIMIT ").append(offset).append(", 1").toString();
return SqlPagingQueryUtils.generateLimitJumpToQuery(this, limitClause);
}
该解决方案非常慢,因为LIMIT offset, size
涉及在每次迭代中重新读取。我更喜欢:
SELECT c1, c2, c3 FROM t1 WHERE primary > last_primary_lot LIMIT size;
有可能吗?