Беглый тайм-аут команды NHibernate во время пакетной вставки - PullRequest
3 голосов
/ 20 января 2010

Я пытаюсь вставить около 16000 записей в одну таблицу. Поскольку это очень медленно, я хотел бы пакетно вставить их. Тем не менее, я всегда получаю ошибку тайм-аута при попытке сделать это. Итак, у меня есть два вопроса:

  1. Какой лучший способ ускорить вставку?
  2. Как увеличить значение времени ожидания соединения?

1 Ответ

5 голосов
/ 21 января 2010

Сначала вы должны использовать сеанс без сохранения состояния. Вместо вызова OpenSession (); (на фабрике сеансов) вы вызываете OpenStatelessSession (); Он имеет тот же API, что и обычный сеанс, но не имеет кеширования и прочего (намного быстрее для больших операций с данными). Затем вам нужно установить размер пакета, вызвав .AdoNetBatchSize ([[размер пакета]]); где вы устанавливаете базу данных в вашей конфигурации.

Это может помочь. Но вы должны знать, что это не ретранслятор, для которого построен nhibernate (или любой другой orm), поэтому не рассчитывайте на какую-либо производительность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...