Разумная Расстановка Транзакций

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Гость

Разумная Расстановка Транзакций

Сообщение Гость » 13 янв 2005, 18:25

Разговор про InterBase 7.1 + Delphi
Прочитав на сайте информацию по транзакциям понял мало.
Во всех написанных мной программах транзакция была только одна, постоянно открытая. При внесении пользователем (или программой) изменений в базу я вызывал Commit. При нажатии пользователем Cancel - вызывал Rollback.
Почитав понял, что неправ.Как исправиться - не знаю.

Есть ли отработанные варианты, которые используются профессионалами.. Типа одна Read_Commited и одна Write - транзакция...

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 13 янв 2005, 20:57

про
Типа одна Read_Commited и одна Write - транзакция...
это почти что смешно, или наоборот грустно.

Транзакция это блок изменений, которые либо применяются (все) по commit, либо отменяются (все) по rollback. Соответственно приложение должно управлять транзакциями с точки зрения бизнес-логики - перенести деньги с одного счета на другой, создать накладную, и т.п.

Поэтому например компонентов IBTransaction в приложении должно быть столько, сколько нужно. Под "нужно" понимается например - нужно читать справочники? Создаем транзакцию read read_committed и в ней читаем их все. Нужно смотреть список накладных? Создаем транзакцию read write read_committed и смотрим накладные. Нужно создать новую накладную? Открываем форму создания накладной, стартуем новую транзакцию, заполняем накладную, по OK делаем commit. Или - открываем форму, заполняем, по OK стартуем транзакцию, пихаем накладную в БД, делаем commit.

И так далее в таком духе.

Klyk
Сообщения: 100
Зарегистрирован: 26 окт 2004, 23:28

Сообщение Klyk » 13 янв 2005, 23:56

Девиз прост
"Не надо экономить на транзакциях" :))

McArty
Сообщения: 56
Зарегистрирован: 14 янв 2005, 09:31

К сожалению надо экономить

Сообщение McArty » 14 янв 2005, 09:34

Klyk писал(а):Девиз прост
"Не надо экономить на транзакциях" :))
Длинная (долгая транзакция) это не есть хорошо.
После прочтения статьи "Жизненый цикл траназкций ", возникает вопрос - как задать в Delphi, транзакцию "Read committed, read only"?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 14 янв 2005, 10:11

мда. а www.ibase.ru/devinfo/ibtrans.htm читал? а двойной клик на IBTransaction делал?

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

McArty
Сообщения: 56
Зарегистрирован: 14 янв 2005, 09:31

Сообщение McArty » 14 янв 2005, 10:25

Sorry, с утра не проснулся :)
Как говорится - читайте мат.часть.

Ответить