У меня проблемы с производительностью, когда в агрегате есть пакет с большим количеством объектов (1000+). Обычно он содержит не более 50 сущностей, но иногда намного больше.
Использование профилировщика NHibernate Я вижу, что длительность извлечения 1123 записей этой сумки из базы данных составляет 18 мс, но для ее обработки требуется NHibernate 1079 мс. Проблема здесь в том, что все эти 1123 записи имеют одну или две дополнительные записи. Я выбираю их, используя fetch = "subselect", а для извлечения этих дополнительных записей требуется 16 мс для выборки из базы данных и 2527 мс для обработки NHibernate. Таким образом, одно это действие занимает 3,5 секунды, что слишком дорого.
Я читал, что это связано с тем, что проблема заключается в обновлении кэша 1-го уровня, поскольку при загрузке большого количества объектов производительность снижается. Но что много? NHibernate Profiler говорит, что у меня 1145 сущностей, загруженных 31 запросом (что в моем случае является абсолютным минимумом). Это количество загруженных объектов не кажется мне большим.
В текущем проекте мы используем NHibernate v3.1.0.4000