Весенняя партия: MySQL Пейджинг - PullRequest
0 голосов
/ 23 апреля 2020

Я хочу отправить 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;

Это возможно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...