Привет У меня проблема с транзакциями NHibernate.nhibernate несколько транзакций и недостатки
Я должен сделать обновления несколько раз, но когда я использую:
using (var trans = session.BeginTransaction())
{
.....
trans.commit();
}
Коммит берет меня очень много времени, около 1 минуты или что-то (это не приемлемо в моем случае)
Поэтому я использую несколько транзакций в одном обновлении и у меня есть что-то вроде этого:
using (var trans1 = session.BeginTransaction())
{
.....
trans1.commit();
}
using (var trans1 = session.BeginTransaction())
{
.....
trans1.commit();
}
using (var trans1 = session.BeginTransaction())
{
.....
trans1.commit();
}
...
и единственная фиксация занимает около одной секунды или менее (это приемлемое время для меня)
Итак, мой вопрос в том, есть ли такие преимущества/недостатки этого подхода? я мог бы упомянуть только, что: одной транзакции:
Преимущества:
- меньше времени на 'создание' транзакции
Недостатки:
- очень длинный замок на дб, из-за долго совершают
Multiple Transaction
Преимущества
- Очень короткие замки на дб, из-за быстро совершает
Недостатки
- гораздо больше времени тратить на «создание» сделки
Для меня более важно время расходы на «блокировки дб», чем создание транзакций. Итак, есть ли какие-либо другие преимущества этого подхода? Или есть другие подходы, которые лучше?
Ther есть, и они не находятся в какой-то точке зрения. Поскольку записи связаны друг с другом по id, но этот идентификатор I возвращает в каждой транзакции и передается в следующем. Поэтому я могу сказать, что одно обновление не коррелирует с другими обновлениями. Я не могу использовать parrallel, потому что я должен поддерживать правильный порядок обновлений. Откат - это «другая чашка чая» в моем случае. – MNie
@Tadek, если одна из ваших транзакций завершилась неудачей, вам нужно отменить другие транзакции? –
Нет, мне это не нужно. – MNie