» » Что такое транзакции Системы обработки транзакций

Что такое транзакции Системы обработки транзакций

НОУ ИНТУИТ | Лекция | Транзакции и блокировки

Аннотация: Приводится определение транзакции и ее свойств; представлены явные, неявные, автоматические и вложенные транзакции. Описываются средства обработки и управления транзакциями. Рассматривается механизм сохранения и отката транзакций. Вводится понятие параллельности в работе базы данных и методы управления параллельностью с использованием блокировок. Приводится описание уровней блокировок и уровней изоляции сервера. Выделяются основные и специальные типы блокировок.

Введение в транзакции

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

Транзакция должна обладать четырьмя основными свойствами:

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

В OLTP системах над целевыми БД исполняются целевые транзакции (например, занесение в таблицу записи с параметрами выписанного счета, оприходованной фактуры или любого другого факта), которые изменяют состояние БД и приводят их в соответствие текущему состоянию того фрагмента реального мира, который моделирует БД. Таким образом, основным назначением целевых БД является обработка транзакций.

Рис. 1. Архитектура системы ЕВФРАТ

Существует способ по значительному увеличению производительности системы, которое возможно реализовать в рассмотренной АСУД, — это многопоточность. Многопоточность позволяет увеличить количество операций, работы с данными за определенное время. Важно учитывать тот факт, что эффективность зависит от применяемого приложения и его работы уже на многоядерном процессоре. Чтобы приложение смогло одновременно использовать несколько ядер процессора, оно обязано распараллеливать выполнение задач, иначе, когда программный код предполагает только лишь последовательное выполнение задач, пользы от многоядерности ЭВМ не будет.

Распределенная система представляет собой совокупность взаимодействующих объектов, имеющих определенное состояния. Главным различием межу распределенными (многозвенными) системами и классическими клиент-серверными приложениями представляется то, что в самом начале проводимых транзакций в принципе неизвестно, какое количество объектов, статус которых нужно восстановить по стандартным правилам транзакций или сохранять, принимают в данной, конкретной, транзакции участие. Клиент, высылающий запрос серверному объекту, как правило не имеет представления, какую конкретной цепочку вызовов, и к каким же объектам, породит данный уникальный запрос. О цепочке вызовов, в целом, объекты, участвующие в ней, не имеют ни малейшего представления.

  • блокировка со взаимным доступом, называемая также S-блокировкой
    (от Shared locks) и блокировкой по чтению.
  • монопольная блокировка (без взаимного доступа), называемая также
    X-блокировкой от (eXclusive locks) или блокировкой по записи. Этот
    режим используется при операциях изменения, добавления и удаления объектов.
  • если транзакция налагает на объект X-блокировку, то любой запрос другой транзакции
    с блокировкой этого объекта будет отвергнут.
  • если транзакция налагает на объект S-блокировку, то
    • запрос со стороны другой транзакции с X-блокировокй на этот объект будет
      отвергнут
    • запрос со стороны другой транзакции с S-блокировокй этого объекта будет принят
  • запрос со стороны другой транзакции с X-блокировокй на этот объект будет
    отвергнут
  • запрос со стороны другой транзакции с S-блокировокй этого объекта будет принят


Если в процессе
выполнения транзакций случилось нечто
такое, что делает невозможным ее
нормальное завершение, БД должна быть
возвращена в исходное состояние.

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

6
Журнал транзакций


Журнал
транзакций предназначен для обеспечения
надежного хранения данных в БД. А это
требование предполагает, в частности,
возможность восстановления согласованного
состояния базы данных после любого рода
аппаратных и программных сбоев. Очевидно,
что для выполнения восстановлений
необходима некоторая дополнительная
информация, которая поддерживается в
виде журнала изменений базы данных,
называемого журналом транзакций.


Общими
принципами восстановления являются
следующие:

результаты
зафиксированных транзакций должны быть
сохранены в восстановленном состоянии
базы данных;

результаты
незафиксированных транзакций должны
отсутствовать в восстановленном
состоянии базы данных.


Это, собственно,
и означает, что восстанавливается
последнее по времени согласованное
состояние базы данных.


Возможны
следующие ситуации, при которых требуется
производить восстановление состояния
базы данных.


Индивидуальный
откат транзакции. Этот откат должен
быть применен в следующих случаях:

-
стандартной ситуацией отката транзакции
является ее явное завершение оператором
ROLLBACK;

-
аварийное завершение работы прикладной
программы, которое логически эквивалентно
выполнению оператора ROLLBACK, но физически
имеет иной механизм выполнения;

В некоторых случаях, две транзакции могут в ходе их обработки пытаться получить доступ к одной и той же части базы данных в одно и то же время, таким образом, что это будет препятствовать их совершению. Например, транзакция А может получить доступ к части Х базы данных, и транзакция В может получить доступ к Y части базы данных. Если в этот момент транзакция А пытается получить доступ к части Y базы данных, в то время как транзакция B пытается получить доступ к части X, возникает ситуация взаимоблокировки, и ни одна транзакция не может быть произведена. Системы обработки транзакций предназначены для обнаружения таких ситуаций. Обычно обе транзакции отменяются и производится откат, а затем они автоматически запускаются в другом порядке, так что взаимоблокировка не повторится. Или иногда, только одна из транзакций, попавших в тупик, отменяется, производится откат, и автоматически повторяется после небольшой задержки.

Взаимоблокировки могут происходить между тремя или более транзакциями. Чем больше транзакции связаны, тем труднее их обнаружить. Системы обработки транзакций даже установили практическое ограничение на тупиковые ситуации, которые они могут обнаружить.

Обработка транзакций имеет следующие преимущества:

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

Внедрение

Говоря о том, что такое транзакции, мы упоминали о подводных камнях. Продолжая аналогию, можно с уверенностью утверждать, что варьирование уровня блокировок – надежный инструмент лоцмана в путешествии по морю 1С. Различают два уровня изоляции: "только чтение, без записи" и "ни записи, ни чтения". В автоматическом режиме выбор недоступен. Но достаточно перевести приложение в управляемый режим, и можно будет ставить "умные" ограничения, выбирая не только важные документы, но и назначая им соответствующий уровень изоляции.

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

понятие транзакции

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

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

- Долговечность. Если транзакция зафиксирована, то ее результаты должны быть долговечными. Новые состояния всех объектов сохранятся даже в случае аппаратных или сис

Наверх