Я использую nhibernate, чтобы создать коллекцию неизменяемых доменных объектов из устаревшей базы данных Oracle.простой поиск с использованием Criteria api займет более 60 секунд.Если последующие поиски одного и того же поиска очень быстрые, обычно менее 300 мс (100 мс в дБ и покоя по nhibernate, У меня нет двухуровневого кэша или кеш запросов включен , все запросы делаютиди в БД я проверял с помощью nhibernate prof).Однако, если я оставляю приложение бездействующим в течение пары минут и снова запускаю поиск, это занимает обычно 50-60 секунд,
Я использовал профилировщик nhibernate, и в каждом случае его отчетливо показывается только самое большее 100 мс.в базе данных, я полагаю, что остальное время должно быть занято nhibernate, я не могу понять, почему?
Некоторая справочная информация:
- Я использую динамический компонент для сопоставления 20столбцы в пары ключ-значение.
- Использование nhibernate 2.1
Я использую динамический компонент в отображении
После получения данные никогда не изменяются, в отображении яЯ использую флаг mutable = false.
- это устаревшая база данных, поэтому я использую составной ключ в отображении.
Я получаю только около 50 объектов в каждом поиске
Когда я открываю сеанс, я установил FlushMode = Никогда
- Я также пробовал сеанс без сохранения состояния (при первоначальном поиске производительность по-прежнему низкая)
- Я не определяю и не использую какие-либо пользовательские типы в отображении
Я явно что-то делаю не так или что-то упустил, есть идеи?