2013-03-02 2 views
1

У нас есть требование импортировать большой объем данных между базами данных с участием нескольких таблиц.Область транзакции nhibernate в стратегии импорта данных

Что было бы лучшей стратегией для транзакций? Я предполагаю, что открытие сессии, с одной крупной транзакцией и ее завершением в конце процесса, было бы плохой идеей.

Будет ли после каждого стола быть лучше? Что делать, если конкретная таблица имеет зависимости от других таблиц, как это следует обрабатывать?

+0

Если вы планируете использовать NHibernate для импорта данных, по крайней мере, для этого используйте 'StatelessSession'. –

+0

Я не знаком с StatelessSession, я предполагаю, что он обеспечивает более быстрый способ вставки данных? – user1838662

+1

Сеансы без сохранения не используют кеш первого уровня и не используют кеши второго уровня или запросов - http://nhforge.org/doc/nh/en/index.html#batch-statelesssession Производительность будет улучшена за сеанс для массовых операций (обратите внимание на предостережения для использования сеансов без сохранения состояния) –

ответ

0

Вы можете попытаться импортировать таблицы без зависимостей в отдельные транзакции, если это возможно, а затем импортировать таблицы с зависимостями в другую транзакцию.

Если это невозможно, я бы порекомендовал одну крупную сделку.

+0

Возвращаясь к основам базы данных, когда создается транзакция, все данные, которые вы хотели добавить в базу данных, сохраняются в памяти и добавляются только в базу данных после того, (?) В этом сценарии не будет ли одна крупная транзакция потенциально потреблять большой кусок памяти? – user1838662

+1

Это было бы, но если у вас есть большой объем данных, которые вам нужно быть последовательными, больше нечего делать, кроме того, чтобы убедиться, что данные все еще согласованы. – Xharze

+0

Это правда, спасибо. – user1838662

Смежные вопросы