Разделенные транзакции: уникальная возможность избежать Deadlock. Режим AutoCommit

Разделенные транзакции: уникальная возможность избежать Deadlock. Режим AutoCommit

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

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

Переименуем CategoriesTransaction в CategoriesReadTransaction и добавим еще один компонент CategoriesWriteTransaction. После этого зададим свойство UpdateTransaction у CategoriesDataSet в CategoriesWriteTransaction. Таким образом, теперь CategoriesDataSet подключен сразу к двум компонентам TpFTBTransaction (рис. 2.26).

Рис 2.26. Разделение читающей и пишущей транзакций

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

Кроме того, как уже упоминалось, для InterBase до версии 6.5 слишком частый вызов CommitRetaining мог привести к значительному "захвату" ресурсов сервером. При использовании механизма разделенных транзакций вы можете использовать режим AutoCommit без потерь производительности сервера для любых версий InterBase.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Как избежать обмана при приеме на работу в Интернете

Из книги Защита вашего компьютера автора Яремчук Сергей Акимович

Как избежать обмана при приеме на работу в Интернете Интернет позволяет искать работу не отходя от компьютера и работать на дому. Оба этих случая не остались без внимания мошенников. Первый способ напоминает «нигерийские» письма. Объекту предлагается


Туннельный синдром запястья: как его избежать

Из книги Компьютер и здоровье автора Баловсяк Надежда Васильевна

Туннельный синдром запястья: как его избежать При работе за компьютером может возникнуть еще одна проблема, менее очевидная, однако часто приводящая к серьезным негативным последствиям.«Просто руки отваливаются!» – это обязательно когда–нибудь произносил


Как избежать создания некорректного программного кода

Из книги Системное программирование в среде Windows автора Харт Джонсон М

Как избежать создания некорректного программного кода Каждая ошибка, не допущенная вами в исходном коде, — это, прежде всего, еще одна сэкономленная ошибка, которую вам не придется отыскивать на стадии отладки программы или в процессе проверки работоспособности ее


Как избежать соблазнительных затрат времени

Из книги Тайм-менеджмент для системных администраторов автора Лимончелли Томас

Как избежать соблазнительных затрат времени Против некоторых видов непроизводительных затрат времени просто невозможно устоять. Здесь все сводится к правилу «знай меру». Короткая беседа у автомата с газировкой прервет монотонный рабочий день, позволяя вам вернуться


Пользовательский режим и режим ядра

Из книги Сетевые средства Linux автора Смит Родерик В.

Пользовательский режим и режим ядра Сервер NFS в основном предназначен для обмена данными между файлами на диске и сетевым интерфейсом. В обычных условиях сервер NFS выполняется в системе Linux в пользовательском режиме. Это означает, что сервер не имеет специальных


Глава 4 Как избежать ошибок при съемке

Из книги Цифровая фотография без Photoshop автора Газаров Артур Юрьевич

Глава 4 Как избежать ошибок при съемке • «Шевеленка»• Смазанный движущийся объект• Наклонный горизонт• Кадрирование• Главный объект не в фокусе• Лишнее в кадре• Из головы растут «рога»• Ошибки при съемке портрета крупным планом на открытом воздухеОшибки, так легко


Как избежать SQL

Из книги VBA для чайников автора Каммингс Стив

Как избежать SQL Добавление инструкций SQL в код VBA чем-то сродни изучению письма, содержащего отрывки на греческом языке, сложные математические вычисления и музыкальное представление. Несмотря на то, что SQL более компактный и узконаправленный язык программирования, чем


Транзакции

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Транзакции Все задачи пользователей в Firebird помещаются внутрь транзакций. Задача начинается с оператора START TRANSACTION и завершается, когда выполненная работа подтверждается (commit) или отменяется (rollback). Задача пользователя может выполнять множество запросов к операциям в


Транзакции и MGA

Из книги Мир InterBase. Архитектура, администрирование и разработка приложений баз данных в InterBase/FireBird/Yaffil автора Ковязин Алексей Николаевич

Транзакции и MGA MGA (Multi-Generational Architecture, многоверсионная архитектура) является названием основной архитектурной модели управления состоянием базы данных Firebird.В модели MGA каждая строка, сохраняемая в базе данных, содержит уникальный идентификатор той транзакции, которая ее


DEADLOCK TIMEOUT

Из книги Цифровая фотография. Трюки и эффекты автора Гурский Юрий Анатольевич

DEADLOCK TIMEOUT Параметры в ibconfig DEADLOCK_TIMEOUT 10


Как избежать неприятностей при покупке цифровой камеры

Из книги Разработка ядра Linux автора Лав Роберт

Как избежать неприятностей при покупке цифровой камеры Высокоточное и абсолютно чистое производство светочувствительных матриц до сих пор не в состоянии обеспечить стопроцентную работоспособность формирующих ее ПЗС-элементов. Дело не в дефектах технологии, а в том,


Ошибки автофокуса и как их избежать

Из книги Идеальный программист. Как стать профессионалом разработки ПО автора Мартин Роберт С.

Ошибки автофокуса и как их избежать Камера с единственным датчиком в режиме точечного замера может растеряться. К примеру, если в кадре беседуют два или три человека, датчик может сфокусироваться на промежутке между ними. При этом люди на снимке «расплывутся», а фон,


Как избежать проблем с выравниванием

Из книги автора

Как избежать проблем с выравниванием Компилятор обычно предотвращает проблемы, связанные с выравниванием, путем естественного выравнивания всех типов данных. На самом деле, разработчики ядра обычно не должны заниматься проблемами, связанными с выравниванием, об этом


Как избежать давления

Из книги автора

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