Шаг 3. Режим AutoCommit. Работа в контексте двух транзакций для избежания DEADLOCK.

pFIBDataSet позволяет автоматически подтверждать сделанные изменения если задать свойство AutoCommit в True. Теперь после вызова метода Post, pFIBDataSet1 автоматически будет вызывать pFIBTransaction1.CommitRetaining, сохраняя сделанные пользователем изменения и не закрывая при этом сам запрос. Такой подход уже снижает вероятность Deadlock, который возможен при наличии длинных не закрытых транзакций, в контексте которых производились изменения данных.

Тем не менее, FIBPlus предлагает другую возможность, которая сводит вероятность возникновения Deadlock практически к нулю. TpFIBDataSet может работать одновременно в контексте двух транзакций. Одна длинная транзакция, в контексте которой данные только читаются, и другая короткая транзакция, в контексте которой выполняются все модифицирующие запросы.

Переименуем pFIBTransaction1 в ReadTransaction и добавим еще один компонент WriteTransaction. После этого зададим свойство UpdateTransaction у pFIBDataSet1 в WriteTransaction. Таким образом, теперь pFIBDataSet1 подключен сразу к двум компонентам TpFIBTransaction:

Рис. 13.

Теперь, после вызова метода Post, pFIBDataSet1 будет вызывать метод Commit у компонента WriteTransaction. Однако, учитывая, что данные читаются в контексте совсем другой транзакции (ReadTransaction) это не вызовет закрытия pFIBDataSet1. То есть, используя FIBPlus мы имеем настоящий режим AutoCommit, который уменьшает вероятность Deadlock и не мешает "видеть" нам актуальные значения всех записей. Вы наверняка знаете, что при использовании BDE в режиме AutoCommit вы не можете узнать реальные значения записей, пока не переоткроете запрос.

Загрузить полный рабочий код примера.


Описание для анонса: Третья часть статьи об особенностях работы с master-detail в FIBPlus. В этой части описано использование уникального механизма разделенных транзакций и режима AutoCommit.
Специальные цены для ex-USSR (кроме стран ЕС):

235 Euro
1500 руб. для физ. лиц
3600 руб. для юр. лиц

Скидки при покупке нескольких копий!

Навигация



...сейчас пытаюсь понять как насчет устойчивости и предсказуемости работы - это гораздо важнее. пока претензий нет - даже подозрительно 8-)... >>

Andrey V. Sorokin
Раздел для покупателей
Получение полных версий и обновлений. Перейти в Личный кабинет
Сайт по Delphi: ежедневные ИТ-новости, статьи, документация, компоненты, конкурсы, юмор...