русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Понятие транзакций и блокировок


Дата добавления: 2014-11-28; просмотров: 735; Нарушение авторских прав


 

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

При выполнении транзакций СУБД должна придерживаться определенных правил обработки набора команд, входящих в транзакцию. Рассмотрим эти правила:

· Атомарность. Это требование говорит о том, что выполняемые в транзакции изменения будут либо выполнены все, либо не будут выполнены вовсе.

· Согласованность (или постоянство). Все данные после выполнения транзакции должны находится в согласованном состоянии, то есть все правила и ограничения целостности должны быть соблюдены.

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

· Устойчивость. После того, как транзакция завершена, она сохраняется в системе и ничто не может вернуть систему в состояние, в котором она была до начала транзакции, то есть происходит так называемая фиксация транзакции. Это утверждение верно и в случае неожиданного останова системы. При следующем старте SQL Server выполнит восстановление изменений данных, используя журнал транзакций.

 

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



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

Блокировкой называют временно накладываемое ограничение на выполнение некоторых операций обработки данных. В SQL Server 2000 имеется множество видов блокировок. Управление блокировками занимается менеджер блокировок. Транзакции и блокировки тесно связаны друг с другом.

Если в СУБД не реализованы механизмы блокировок, то при одновременном чтении и изменении одних и тех же данных несколькими пользователями могут возникнуть следующие четыре проблемы:

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

· Проблема «грязного» чтения. Если один из пользователей выполняет сложные операции обработки данных, требующие множественного изменения данных. Если во время изменения данных другой пользователь будет считывать данные, то может оказаться, что он получит неверную информацию. Для исключения подобных проблем лучше всего дождаться окончания изменения всех данных.

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

· Проблема чтения фантомов. Эта проблема возникает, когда одна транзакция выбирает данные из таблицы, а другая транзакция вставляет новые строки до завершения первой транзакции. Если первая транзакция выполняет сложные многошаговые изменения данных, это может вызвать серьезные проблемы. Полученные на первом этапе значения будут некорректными, и их дальнейшее использование может привести к непредсказуемым результатам.

 

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

· Уровень 0 – запрещение загрязнения данных. Этот уровень требует, чтобы изменять данные могла только одна транзакция. Если другой транзакции необходимо изменить эти же данные, то она должна ожидать завершения первой транзакции.

· Уровень 1 – запрещение «грязного» чтения. Если транзакция начала изменять данные, то никакая другая транзакция не может прочитать эти данные до тех пор, пока первая транзакция не завершится.

· Уровень 2 – запрещение неповторяемого чтения. Если транзакция считывает данные, то никакая другая транзакция не может их изменить. Следовательно, при повторном чтении данных они будут находиться в первоначальном состоянии.

· Уровень 3 – запрещение фантомов. Если транзакция обращается к данным, то никакая другая транзакция не сможет добавить новые или удалить имеющиеся строки.

 



<== предыдущая лекция | следующая лекция ==>
Создание таблиц базы данных | Управление блокировками


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.141 сек.