Концепция транзакций как неотъемлемая часть клиент-серверной базы данных. Наложение временных ограничений на выполнение операций обработки данных. Программа управления блокировками на сервере, контролирующая их применение и разрешение конфликтов.
ЛекцияПод транзакцией понимается неделимая с точки зрения воздействия на БД последовательность операторов манипулирования данными (чтения, удаления, вставки, модификации), приводящая к одному из двух возможных результатов: либо последовательность выполняется, если все операторы правильные, либо вся транзакция откатывается, если хотя бы один оператор не может быть успешно выполнен. Обработка транзакций гарантирует целостность информации в базе данных. Таким образом, транзакция переводит базу данных из одного целостного состояния в другое. Транзакции также составляют основу изолированности в многопользовательских системах, где с одной БД параллельно могут работать несколько пользователей или прикладных программ.Характеристики транзакций описываются в терминах ACID (Atomicity, Consistency, Isolation, Durability - неделимость, согласованность, изолированность, устойчивость). · Транзакция неделима в том смысле, что представляет собой единое целое. · Транзакция является согласованной, потому что не нарушает бизнес-логику и отношения между элементами данных. · Транзакция всегда изолирована, поскольку ее результаты самодостаточны. Они не зависят от предыдущих или последующих транзакций - это свойство называется сериализуемостью и означает, что транзакции в последовательности независимы.Транзакции накладывают блокировки на данные, чтобы обеспечить выполнение требований ACID. Блокировка представляет собой метод управления параллельными процессами, при котором объект БД не может быть модифицирован без ведома транзакции, т.е. происходит блокирование доступа к объекту со стороны других транзакций, чем исключается непредсказуемое изменение объекта. Различают два вида блокировки: · блокировка записи - транзакция блокирует строки в таблицах таким образом, что запрос другой транзакции к этим строкам будет отменен; · блокировка чтения - транзакция блокирует строки так, что запрос со стороны другой транзакции на блокировку записи этих строк будет отвергнут, а на блокировку чтения - принят. Его суть заключается в следующем: · транзакция, результатом действия которой на строку данных в таблице является ее извлечение, обязана наложить блокировку чтения на эту строку;Под управлением транзакциями понимается способность управлять различными операциями над данными, которые выполняются внутри реляционной СУБД. Например, после создания таблицы (выполнения оператора CREATE TABLE) не нужно фиксировать результат: создание таблицы фиксируется в базе данных автоматически. Точно так же с помощью отмены транзакции не удастся восстановить только что удаленную оператором DROP TABLE таблицу. Для окончательного завершения транзакции существуют так называемые команды управления транзакциями, с помощью которых можно либо сохранить в базе данных все изменения, произошедшие в ходе ее выполнения, либо полностью их отменить. Существуют три команды, которые используются для управления транзакциями: · COMMIT - для сохранения изменений;Когда транзакция начинается, все команды, выполненные в соединении, считаются телом одной транзакции, пока не будет достигнут ее конец. Когда пользователю понадобится создать транзакцию, включающую несколько команд, он должен явно указать транзакцию. Явные транзакции требуют, чтобы пользователь указал начало и конец транзакции, используя следующие команды: · начало транзакции: в журнале транзакций фиксируются первоначальные значения изменяемых данных и момент начала транзакции; · конец транзакции: если в теле транзакции не было ошибок, то эта команда предписывает серверу зафиксировать все изменения, сделанные в транзакции, после чего в журнале транзакций помечается, что изменения зафиксированы и транзакция завершена; Приведенная ниже команда отменяет все изменения, сделанные в БД после оператора BEGIN TRANSACTION или отменяет изменения, сделанные в БД после точки сохранения, возвращая транзакцию к месту, где был выполнен оператор SAVE TRANSACTION.Пользователю чаще всего не нужно предпринимать никаких действий по управлению блокировками. Блокирование на уровне строки позволяет наиболее точно управлять таким доступом, поскольку блокируются только действительно изменяемые строки. При блокировке на уровне таблицы производительность системы блокирования резко увеличивается, так как необходимо установить лишь одну блокировку и снять ее только после завершения транзакции. Монопольная блокировка не совместима ни с какими другими блокировками, и ни одна блокировка, включая монопольную, не может быть наложена на ресурс. Они называются блокировками намерений и используются сервером в том случае, если транзакция намеревается получить доступ к данным вниз по иерархии и для других транзакций необходимо установить запрет на наложение блокировок, которые будут конфликтовать с блокировкой, накладываемой первой транзакцией.USE basa_user2 BEGIN TRANSACTION TRA USE basa_user2 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED BEGIN TRANSACTION TRB 3.UPDATE Товар SET остаток=остаток 10 WHERE КОДТОВАРА=4 4.
План
План
Введение
1. ACID-свойства транзакций
2. Блокировки
3. Управление транзакциями
4. Управление транзакциями в среде MS SQL Server
5. Блокировки в среде MS SQL Server
6. Уровни изоляции SQL Server
Вы можете ЗАГРУЗИТЬ и ПОВЫСИТЬ уникальность своей работы