me encontré con esta descripción del algoritmo lotes ir a buscar en "Manning - Java Persistence con Hibernate":¿Cómo funciona el algoritmo de búsqueda por lotes de Hibernate?
Cuál es la verdadera lotes ir a buscar algoritmo? (...) Imagine un tamaño de lote de 20 y un número total de 119 proxies no inicializados que tienen que ser cargados en lotes. En el momento del inicio, Hibernate lee los metadatos de la asignación y crea 11 cargadores por lotes internamente. Cada cargador sabe cuántos proxies 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 lote posible se puede producir. Otro objetivo es para minimizar el número de SQL SELECT, obviamente. Para inicializar 119 proxies Hibernate ejecuta siete lotes (probablemente esperaba seis, porque 6 x 20> 119). Los cargadores de lotes que se aplican son cinco veces 20, una vez 10 y una vez 9, seleccionados automáticamente por Hibernate.
pero sigo sin entender cómo funciona.
- ¿Por qué 11 cargadores de lotes?
- ¿Por qué los cargadores por lotes pueden inicializar: 20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 proxies?
Si alguien podría presentar un paso a paso algoritmo ... :)
Para ver el algoritmo que hay detrás de esto, puede ver el código fuente de Arrayhelper.GetBatchSizes –