За пределами транзакций
За пределами транзакций
Мы рассмотрели общие вопросы, связанные с транзакциями, а также особенности их практического применения в базе данных. В самом начале главы было сказано, что все действия в InterBase выполняются в контексте транзакций.
Однако существуют объекты, про которые говорят, что они находятся вне контекста транзакций Это генераторы и внешние таблицы.
Генератор, как было описано в главе "Таблицы. Первичные ключи и генераторы", является счетчиком, хранящим некоторое целочисленное значение Однако по своей реализации генератор является объектом совершенно уникальным В отличие от остальных данных в базе данных значения генераторов хранятся на самом низком физическом уровне - на особых страницах генераторов. Это позволяет одновременно всем транзакциям одновременно видеть значения генераторов в любой момент времени. Это очень ценная возможность, которая позволяет организовать бесконфликтные конкурентные вставки в параллельно выполняющихся транзакциях.
Внешние таблицы представляют собой файлы, находящиеся за пределами основного файла базы данных. Над внешними таблицами позволены только one-
рации вставки и выборки (INSERT/SELECT). Отсутствие обновлений во внешних таблицах позволяет отказаться от хранения версий записей в этих таблицах, поэтому там всегда находятся актуальные данные, что позволяет отказаться от применения механизма транзакций для работы с данными в этих таблицах.
Двухфазное подтверждение транзакций
В завершение этой главы хочется рассказать о механизме двухфазного подтверждения транзакций. Дело в том, что InterBase предлагает уникальную возможность организовывать распределенные транзакции между разными базами данных и даже разными серверами (пожалуйста, не путайте двухфазное подтверждение транзакций с гетерогенными запросами, которые невозможно выполнять в InterBase).
Суть двухфазного подтверждения состоит в том, что в клиентском приложении можно запустить транзакцию сразу на двух серверах. Фактически проще всего это сделать, привязав один компонент транзакции сразу к двум компонентам базы данных.
Такая транзакция запустится сразу на двух серверах. Чтобы синхронизировать процесс завершения этой транзакции, вводится особое состояние, называемое Prepared. Это состояние означает, что транзакция завершилась на одном сервере и готова перейти в состояние Committed, как только транзакции на остальных серверах также перейдут в состояние Prepared. Если же транзакция хотя бы на одном из участвующих в процессе серверов завершится Rollback, то все транзакции из состояния Prepared тоже откатятся.
Теперь ясно, отчего могут возникнуть лимбо-транзакции, о которых упоминалось выше. Если между серверами разорвется соединение в тот момент, когда одна транзакция перешла в состояние Prepared и готова подтвердиться, то сервер не сможет решить, подтвердить или удалить изменения, сделанные этой транзакцией.
Не следует использовать двухфазное подтверждение транзакций на серверах, соединенных медленными каналами связи (модемами, например).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Глава 16 Край и за его пределами
Глава 16 Край и за его пределами Хотя Minecraft – это игра-песочница, созданная для бесконечного исследования, в ней есть особый режим, в котором необходимо достичь победного конца. Чтобы закончить игру и победить, вы должны дойти до измерения под названием Край.
За пределами Края
За пределами Края После победы над Драконом у вас есть возможность сразиться с последним врагом – Иссушителем. И, конечно, после окончания игры можно посетить бесконечное количество миров, исследовать бесчисленное количество карт и построить множество
Концепция транзакций
Концепция транзакций Что такое транзакции? В этой книге практически в каждой главе упоминаются транзакции. Понятие транзакции пронизывает всю теорию и практику работы с базами данных. Транзакции всегда, транзакции везде - вот лозунг разработчиков СУБД.Понятие
Параметры транзакций
Параметры транзакций В первом разделе этой главы была сделана попытка рассмотреть механизм работы транзакций в СУБД InterBase в целом. Теперь необходимо рассмотреть практические аспекты применяющие транзакций в InterBase.Программисты, использующие такие современные
Идентификатор транзакций
Идентификатор транзакций Другая часть стратегии тайм-аутов и повторных передач заключается в использовании идентификаторов транзакций (transaction ID или XID) для распознавания запросов клиента и ответов сервера. Когда клиент вызывает функцию RPC, библиотека присваивает этому
Приложение А За пределами «Эффективного использования C++»
Приложение А За пределами «Эффективного использования C++» В книгу «Эффективное использование C++» вошло то, что я считаю наиболее важными рекомендациями для практикующих программистов на C++. Если вы интересуетесь дополнительными возможностями повысить эффективность
Статистика транзакций
Статистика транзакций В Firebird есть несколько полезных утилит для получения сведений о том, насколько хорошо ваша база данных управляет зазором между OIT и OAT. Их вы можете также использовать для просмотра значений в заголовочной странице базы данных. gstat Инструмент
Язык для транзакций
Язык для транзакций Важно обратиться к средствам реализации транзакций в Firebird. До сих пор некоторые связанные с транзакциями особенности вовсе не реализованы в динамическом SQL, а только через API. Среди небольшого количества связанных с транзакциями операторов SQL и
Физика элементарных частиц за пределами БАК: что ожидать от нового коллайдера Андрей Васильков
Физика элементарных частиц за пределами БАК: что ожидать от нового коллайдера Андрей Васильков Опубликовано 13 июня 2013 Судьба Международного линейного коллайдера решалась вчера специалистами ведущих лабораторий в ходе проводимой через интернет
Широка страна моя родная: Доступ в Интернет за пределами Садового кольца
Широка страна моя родная: Доступ в Интернет за пределами Садового кольца Автор: Тимофей БахваловНа протяжении последнего десятилетия «широкополосным» доступом в Интернет в регионах нашей страны, находящихся за пределами Садового кольца и не «из-под Питера», считалось
ГЛАВА 21 За пределами предприятия
ГЛАВА 21 За пределами предприятия В главе 1 «Предприятия нового тысячелетия» описывается понятие совместного, основанного на сотрудничестве менеджмента. Значимость этого понятия мы можем ощутить, если выйдем за границы предприятия. В последней главе этой книги мы
ГЛАВА 8. Вся правда о собеседованиях в Google: за пределами NDA
ГЛАВА 8. Вся правда о собеседованиях в Google: за пределами NDA В пятницу 9 июля 2007 года на многих калифорнийских автобанах появились рекламные щиты с довольно странным содержанием. На их большом полотне не было никаких опознавательных знаков или каких-то фирменных
За пределами программ
За пределами программ Подчеркнем теперь важность понятия АТД для областей, лежащих вне непосредственной области его предполагаемого применения.Подход, основанный на АТД, говорит нам, что серьезное интеллектуальное исследование должно отвергать всякую попытку понять
Псевдонимы в ПО и за его пределами
Псевдонимы в ПО и за его пределами Предварительное рассмотрение свидетельствует о том, что сами ссылки и их разделение необходимы во многих случаях. Некоторые стандартные структуры данных содержат циклически связанные элементы, которые невозможно реализовать без