Como o algoritmo de busca em lote do Hibernate funciona?

Encontrei esta descrição do algoritmo de busca em lote em "Manning - Java Persistence with Hibernate":

Qual é o verdadeiro algoritmo de busca em lote? (...) Imagine um tamanho de lote de 20 e um número total de 119 proxies não inicializados que precisam ser carregados em lotes. No momento da inicialização, o Hibernate lê os metadados do mapeamento e cria 11 carregadores de lote internamente. Cada carregador sabe quantos proxies ele pode inicializar: 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1. O objetivo é minimizar o consumo de memória para a criação do carregador e criar carregadores suficientes para cada possível busca em lote pode ser produzida. Outro objetivo é minimizar o número de SQL SELECTs, obviamente. Para inicializar 119 proxies, o Hibernate executa sete lotes (você provavelmente esperava seis, porque 6 x 20> 119). Os carregadores de lote aplicados são cinco vezes 20, uma vez 10 e uma vez 9, selecionados automaticamente pelo Hibernate.

mas ainda não entendo como isso funciona.

Por que 11 carregadores em lote?Por que os carregadores em lote podem inicializar: 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 proxies?

Se alguém pudesse apresentar um algoritmo passo a passo ... :)

questionAnswers(2)

yourAnswerToTheQuestion