Я не смог найти в Интернете никакой информации о том, как hibernate справляется с пакетной загрузкой, но, судя по вашей информации, можно догадаться следующее:
Почему 11 пакетовзагрузчики?
При размере пакета 20, если вы хотите минимизировать количество загрузчиков, необходимое для любой комбинации прокси-серверов, в основном есть два варианта:
- создать загрузчик для 1,2,3,4,5,6,7, ... 20,21,22,23, ... N неинициализированных прокси (глупо!) ИЛИ
- создайте загрузчик для любого N между 1..9, а затем создайте больше загрузчиков для
batch_size/2
(рекурсивно)
Пример: для пакета размером 40 вы получите загрузчики для 40,20, 10,9,8,7,6,5,4,3,2,1 загрузчиков.
- Если у вас есть 33 неинициализированных прокси, вы можете использовать следующие загрузчики: 20, 10, 3
- Если у вас есть 119 неинициализированных прокси, вы можете использовать следующие загрузчики: 40 (x2), 20, 10, 9
- ...
Почему пакетные загрузчики могут инициализироваться: 20,10, 9, 8, 7, 6, 5, 4, 3, 2, 1 прокси? Я думаю, что команда hibernate выбрала это как баланс между количеством загрузчиков, необходимых для загрузки «общего» числа N неинициализированныхпрокси и потребление памяти.Можно было бы создать загрузчик для каждого N от 0 до batch_size
, но я подозреваю, что загрузчики занимают значительную долю памяти , так что это компромисс .Алгоритм может быть примерно таким (образованное предположение):
n = batch_size; while (n > 10)
1.1.loader(n); n = n / 2
for n = 0..10 create loader(n)