Похоже, что (а) ваши данные на базе БД также разбиты на разделы, и (б) у вас перекос в ваших ключах, когда один раздел получает намного больше ключей, чем другие разделы.
Предполагая, что выше это правильно, и вы сделали профилирование кода для своего кода «смешивать и сопоставлять», чтобы сделать его достаточно эффективным, и тогда у вас останутся ручные оптимизации. Например, если вы знаете, что ключи в разделе X встречаются гораздо чаще, вы можете поместить все эти ключи в один раздел, а затем распределить оставшиеся ключи среди других разделов.
Другой подход заключается в добавлении оператор «дозатор», который помещает до N ключей для одного и того же раздела в группу (обычно для этого также требуется время ожидания до flu sh, чтобы данные не зависали). Если вы можете пакетировать достаточно ключей, то может быть не так уж плохо загружать данные БД по требованию для раздела, связанного с каждой партией ключей.