Параллелизм: понятие, проблемы обработки транзакций, блокировка, критерий правильности, уровень изоляции, SQL-команды транзакции

Транзакция – это логическая единица работы, которая лежит в основе проблемы параллелизма.

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

Главная задача управления параллелизмом заключается в следующем: или все изменения, сделанные транзакцией, фиксируются и делаются постоянными (успешное завершение транзакции), или транзакция никак не влияет на состояние БД (ошибки при выполнении транзакции, откат транзакции).

Основные проблемы, возникающие при параллелизме:

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

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

а) Чтение грязных данных - Транзакция 1 прочитала данные, измененные транзакцией 2, но в последующем транзакция 2 отменила свои изменения.

б) Отсутствие потерянных изменений - Транзакция 1 изменяет данные после того, как эти данные были изменены транзакцией 2. Если транзакция 2 аннулирует свои изменения, состояние БД будет восстановлено таким, каким оно было перед началом выполнения транзакции 2. А значит, изменения, сделанные транзакцией 1, также будут аннулированы.

3. Чтение несогласованных данных. Проблема несовместимого анализа. Здесь также можно рассмотреть две ситуации:

а) Отсутствие неповторяющихся чтений - Транзакция 2 изменяет данные, прочитанные транзакцией 1. Если после этого транзакция 1 повторно читает те же данные, она получит уже другие результаты.

б) Строки-призраки Фантомы - Транзакция 1 считывает несколько записей, удовлетворяющих некоторому условию, после чего транзакция 2 добавляет новую запись, удовлетворяющую этому условию. Если после этого транзакция 1 повторно прочитает записи, удовлетворяющие тому же условию, она получит другой набор записей – в нем появились дополнительные записи-фантомы.

Стандартом SQL-92 предусмотрено 4 уровня изоляции:

· незафиксированное чтения (READ UNCOMITTED);

· зафиксированное чтения (READ COMITTED);

· повторяющееся чтения (REPETABLE READ);

· сериализация (SERIALIZABLE).

Если в транзакции установлен определенный уровень изоляции, то для нее гарантировано невозникновение определенных эффектов.

Уровень изоляции может устанавливаться для всего приложения или для отдельной транзакции.

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

Сериализация транзакций – последовательное выполнение. Это механизм выполнения транзакций по такому плану, когда результат совместного выполнения транзакций эквивалентен результату их последовательного выполнения.

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

1. транзакция 2 пытается изменить объект, измененный не закончившейся транзакции 1.(WW конфликт)

2. транзакция 2 пытается изменить объект, прочитанный незаконченной транзакцией 1.(RW)

3. транзакция 2 пытается читать объект, измененный незаконченной транзакцией 1.(WR)

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

Выделяют 2 основных режима захватов (блокировки):

1. совместный режим S-режим (блокировка с доступом) – отвечающий за разделяемый захват объекта, чтобы можно было выполнять чтение.

2. монопольный X-режим (блокировка без взаимного доступа) – необходим для выполнения операции записи, удаления, модификации.

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

Для устранения таких конфликтов используется механизм блокировок.

Протокол двухфазной блокировки устанавливает следующие правила наложения и снятия блокировок:

1. Перед выполнением каких-либо операций с некоторым объектом транзакция должна установить на этот объект соответствующую блокировку.

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

Таким образом, транзакция, подчиняющаяся протоколу двухфазной блокировки, имеет две фазы: фаза наложения блокировки – обычно при выполнении соответствующей команды SQL, фаза снятия блокировки – обычно при выполнении команд COMMIT или ROLLBACK.

Для транзакции используются команды SQL:

1.begin transaction – начало транзакции;

2.commit transaction - закрепление, удачное завершение транзакции;

3.rollback transaction - откат транзакции, восстановление текущего состояния БД.

6. ЭТАПЫ ПРОЕКТИРОВАНИЯ БД И ИХ КРАТКАЯ ХАРАКТЕРИСТИКА. ПОСТРОЕНИЕ КОНЦЕПТУАЛЬНОЙ МОДЕЛИ ПРЕДМЕТНОЙ ОБЛАСТИ. ПОСТРОЕНИЕ ЛОГИЧЕСКОЙ МОДЕЛИ БД: ТИПЫ СВЯЗЕЙ, ПОНЯТИЕ ИНДЕКСА, ВИДЫ И ТИПЫ ИНДЕКСОВ, ПРИНЦИП ЦЕЛОСТНОСТИ.[34]

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

В недавнем прошлом проектирование БД предполагало построение следующих моделей:

1. Внешней модели - самый верхний уровень, где каждая модель имеет свое «видение» данных. Этот уровень определяет точку зрения на БД отдельных приложений. Каждое приложение видит и обрабатывает только те данные, которые необходимы именно этому приложению.

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

3. Внутренней модели - собственно данные, расположенные в файлах или в страничных структурах, расположенных на внешних носителях информации.

Затем моделирование БД использовало следующую терминологию:

1. Построение концептуальной модели

2. Разработка логической модели

3. Проектирование физической модели.

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

- провести сбор необходимой информации.

- выделить этапы, кот могут быть определены как несвязанные с конкретной СУБД, так и определены в терминах СУБД.

В настоящее время различают 2 этапа проектирования БД:

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

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

В свою очередь этапы делятся на подэтапы:

· системный анализ программной области – сбор информации, определение парадигмы (концепции) информационной модели – способ представления, характер использования информации;

· физическое проектирование – представление БД на диске в конкретной СУБД.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: