¿Cómo funciona el algoritmo de recuperación por lotes de Hibernate?

Encontré esta descripción del algoritmo de recuperación por lotes en "Manning - Java Persistence with Hibernate":

¿Cuál es el algoritmo real de recuperación por lotes? (...) Imagine un tamaño de lote de 20 y un número total de 119 proxies no inicializados que deben cargarse en lotes. En el momento del inicio, Hibernate lee los metadatos de mapeo y crea 11 cargadores por lotes internamente. Cada cargador sabe cuántos servidores proxy puede inicializar: 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1. El objetivo es minimizar el consumo de memoria para la creación del cargador y crear suficientes cargadores que cada Se puede producir una posible recuperación por lotes. Otro objetivo es minimizar la cantidad de SQL SELECT, obviamente. Para inicializar 119 proxies, Hibernate ejecuta siete lotes (probablemente esperaba seis, porque 6 x 20> 119). Los cargadores por lotes que se aplican son cinco veces 20, una vez 10 y una vez 9, seleccionados automáticamente por Hibernate.

Pero todavía no entiendo cómo funciona.

¿Por qué 11 cargadores por lotes?¿Por qué los cargadores por lotes pueden inicializar: 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 proxies?

Si alguien pudiera presentar un algoritmo paso a paso ... :)

Respuestas a la pregunta(2)

Su respuesta a la pregunta