Я хочу отправить 600 000 000 сообщений в Кафка топи c из большого стола MySQL. Я хочу использовать Spring Batch для этого использования, но он использует тип запроса:
SELECT c1, c2, c3 FROM t1 LIMIT offset, size;
Генерируется в spring-batch / spring-batch -structure / 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;
Это возможно?