Разделенные транзакции: уникальная возможность избежать 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.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Как избежать создания некорректного программного кода
Как избежать создания некорректного программного кода Каждая ошибка, не допущенная вами в исходном коде, — это, прежде всего, еще одна сэкономленная ошибка, которую вам не придется отыскивать на стадии отладки программы или в процессе проверки работоспособности ее
Как избежать проблем с выравниванием
Как избежать проблем с выравниванием Компилятор обычно предотвращает проблемы, связанные с выравниванием, путем естественного выравнивания всех типов данных. На самом деле, разработчики ядра обычно не должны заниматься проблемами, связанными с выравниванием, об этом
Как избежать давления
Как избежать давления Лучший способ сохранять спокойствие под давлением – избегать ситуаций, создающих давление. Возможно, это не решит проблему полностью, но по крайней мере сведет к минимуму и сократит продолжительность напряженных
Пользовательский режим и режим ядра
Пользовательский режим и режим ядра Сервер NFS в основном предназначен для обмена данными между файлами на диске и сетевым интерфейсом. В обычных условиях сервер NFS выполняется в системе Linux в пользовательском режиме. Это означает, что сервер не имеет специальных
DEADLOCK TIMEOUT
DEADLOCK TIMEOUT Параметры в ibconfig DEADLOCK_TIMEOUT 10
Как избежать обмана при приеме на работу в Интернете
Как избежать обмана при приеме на работу в Интернете Интернет позволяет искать работу не отходя от компьютера и работать на дому. Оба этих случая не остались без внимания мошенников. Первый способ напоминает «нигерийские» письма. Объекту предлагается
Как избежать SQL
Как избежать SQL Добавление инструкций SQL в код VBA чем-то сродни изучению письма, содержащего отрывки на греческом языке, сложные математические вычисления и музыкальное представление. Несмотря на то, что SQL более компактный и узконаправленный язык программирования, чем
Транзакции
Транзакции Все задачи пользователей в Firebird помещаются внутрь транзакций. Задача начинается с оператора START TRANSACTION и завершается, когда выполненная работа подтверждается (commit) или отменяется (rollback). Задача пользователя может выполнять множество запросов к операциям в
Транзакции и MGA
Транзакции и MGA MGA (Multi-Generational Architecture, многоверсионная архитектура) является названием основной архитектурной модели управления состоянием базы данных Firebird.В модели MGA каждая строка, сохраняемая в базе данных, содержит уникальный идентификатор той транзакции, которая ее
Как избежать неприятностей при покупке цифровой камеры
Как избежать неприятностей при покупке цифровой камеры Высокоточное и абсолютно чистое производство светочувствительных матриц до сих пор не в состоянии обеспечить стопроцентную работоспособность формирующих ее ПЗС-элементов. Дело не в дефектах технологии, а в том,
Ошибки автофокуса и как их избежать
Ошибки автофокуса и как их избежать Камера с единственным датчиком в режиме точечного замера может растеряться. К примеру, если в кадре беседуют два или три человека, датчик может сфокусироваться на промежутке между ними. При этом люди на снимке «расплывутся», а фон,
Как избежать соблазнительных затрат времени
Как избежать соблазнительных затрат времени Против некоторых видов непроизводительных затрат времени просто невозможно устоять. Здесь все сводится к правилу «знай меру». Короткая беседа у автомата с газировкой прервет монотонный рабочий день, позволяя вам вернуться
Туннельный синдром запястья: как его избежать
Туннельный синдром запястья: как его избежать При работе за компьютером может возникнуть еще одна проблема, менее очевидная, однако часто приводящая к серьезным негативным последствиям.«Просто руки отваливаются!» – это обязательно когда–нибудь произносил
Глава 4 Как избежать ошибок при съемке
Глава 4 Как избежать ошибок при съемке • «Шевеленка»• Смазанный движущийся объект• Наклонный горизонт• Кадрирование• Главный объект не в фокусе• Лишнее в кадре• Из головы растут «рога»• Ошибки при съемке портрета крупным планом на открытом воздухеОшибки, так легко