русс | укр

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

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

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

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


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

Свойства транзакций. Проблемы параллельного выполнения.


Дата добавления: 2015-07-09; просмотров: 2505; Нарушение авторских прав


Транзакция– это действие или серия действий, выполняемых одним пользователем или прикладной программой, которые осуществляют доступ или изменение содержимого базы данных и рассматриваются СУБД как единое целое. Транзакция является логической единицей работы, выполняемой в базе данных. Она может быть представлена отдельной программой, являться частью алгоритма программы или даже отдельной командой (например, командой INSERT, DELETE или UPDATE) и включать произвольное количество операций, выполняемых в данных.

Любая транзакция всегда должна переводить базу данных из одного согласованного состояния в другое, хотя допускается, что согласованность состояния базы будет нарушаться в ходе выполнения транзакции. Любая транзакция завершается одним из двух возможных способов. В случае успешного завершения результаты транзакции фиксируются (COMMIT) в базе данных, и последняя переходит в новое согласованное состояние. Если выполнение транзакции не увенчалось успехом, она отменяется.В этом случае в базе данных должно быть восстановлено то согласованное состояние, в котором она находилась до начала данной транзакции. Этот процесс называется откатом(ROLLBACK) транзакции. Реализация в СУБД принципа сохранения промежуточных состояний, подтверждения или отката транзакций обеспечивается специальным механизмом, для поддержки которого создается некоторая системная структура, называемая журналом транзакций. Зафиксированная транзакция не может быть отменена.

В большинстве языков манипулирования данными для указания границ отдельных транзакций используются операторы BEGIN TRANSACTION, COMMIT и ROLLBACK (или их эквиваленты). Если эти ограничители не были использованы, вся выполняемая программа расценивается как единая транзакция. СУБД автоматически выполнит команду COMMIT при нормальном завершении этой программы. Аналогично, в случае ее аварийного завершения в базе данных автоматически будет выполнена команда ROLLBACK.



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

Атомарность.Это свойство типа “все или ничего”. Любая транзакция представляет собой неделимую единицу работы, которая может быть либо выполнена вся целиком, либо не выполнена вовсе.

Согласованность.Транзакция должна переводить базу данных из одного согласованного состояния в другое согласованное состояние.

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

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

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

Рассмотрим три примера потенциальных проблем, которые могут иметь место при параллельном выполнении транзакций, – проблему потерянного обновления, проблему зависимости от нефиксированных результатов и проблему несогласованной обработки.Если обозначить операции чтения, записи новых значений и откат транзакции над базой данных соответственно как R, W, O, то для первой транзакции это могут быть операции R1, W1, O1, а для параллельно выполняющейся второй транзакции операции – R2, W2, O2.

Проблема потерянного обновления возникает, когда результаты вполне успешно завершенной операции обновления одной транзакции могут быть перекрыты результатами выполнения другой транзакции. Эта ситуация может возникнуть в следующей ситуации:R1, R2, W2, W1.

Проблема зависимости от нефиксированных результатов возникает в том случае, если одна из транзакций получит доступ к промежуточным результатам выполнения другой транзакции до того, как они будут зафиксированы в базе данных. Эта ситуация может возникнуть в следующей ситуации:R1, W1, R2, О1, W2.

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

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

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

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



<== предыдущая лекция | следующая лекция ==>
Журнализация и восстановление после сбоев. | Метод блокировки.


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


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

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

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


 


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

 
 

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

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