Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

1000 Счет Б-Счет Б1000 Две эти операции должны либо одновременно выполниться либо одновременно не выполнит

Работа добавлена на сайт samzan.net:


Транзакции.

Транзакция – последовательность нескольких операций, рассматриваемая как единое целое.

Понятие транзакции пришло из банковской деятельности, предположим что в банковской системе есть 2 счета:

Счет А:= Счет А-1000

Счет Б:=Счет Б+1000

Две эти операции должны либо одновременно выполниться, либо одновременно не выполниться.

UPDATE  ACCOUNT SET MONEY = MONEY – 100 WHERE ID=’СЧЕТ Ф

UPDATE  ACCOUNT GET MONEY = MONEY + 100 WHERE ID=’СЧЕТ Б

ACID

Atomicity–   Транзакция неразделима на части.

Conssistency –  целостность, БД до начала транзакции в целостном состоянии, как с точки зрения СУБД, так и с точки зрения логики приложения и после выполнения транзакции тоже должна остаться целостной

Isolation –  Две транзакции, которые работают одновременно, должны оказывать друг на друга минимально возможное влияние. Идеально, если 2 транзакции, работающие одновременно не оказывают никакого влияния друг на друга.

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

Варианты завершения транзакции:

  1. Успешное завершение, приложение подает команду COMMIT, если операция COMMIT завершилась, то транзакция завершилась успешно
  2. Неудачное завершение – команда ROLLBACK – откатить.
  3.  В процессе работы транзакции, решается, что действия этой транзакции не нужны, в результате данные, с которыми работала эта транзакция должны быть возвращены в первоначальное состояние. Если в процессе транзакции произошла грубая ошибка, т.е. мы пытаемся вернуть поврежденные записи, то может произойти автоматический откат транзакции, о чем приложение получит уведомление. ROLLBACK выполняется автоматически. Если ошибка происходит во время отката, то откатывает на сколько возможно.

В некоторых СУБД транзакция начинается автоматически, после подачи первой DML операции или другой операции, меняющей данные( все, кроме SELECT),  в других СУБД подается явная команда начала транзакции BEGIN TRANSACTION.

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

INSERT 5000 Счет Б

ГЗВФЕУ Счет <

6000->5000

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

Журнал – дисковый файл или совокупность дисковых данных, часто журнал хранят на отдельном устройстве, не на том, на котором БД.

Второе назначение Журнала – восстановление Базы после сбоя.

Для этого при старте СУЮД происходит последовательный переход по журналу транзакции.

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

Уровни изоляции транзакций.

Самый низкий уровень изоляции транзакции READ UNCOMMITED (грязное чтение) , в случае этого уровня никакой изоляции практически нет.

Пусть у нас есть 2 транзакции

 W1 ROLLBAC

Т1

            R1

Т2

READ COMMITED – Если параллельно работыют 2 транзакции, то 2 транзакция увидит данные, обновленные первой, только после того, как 1 транзакция подала коммит

W1 ROLLBAC

Т1

             R1 R1

Т2

READ UN COMMITTED – неповторяемое чтение состоит в том что в процессе транзакции, Считанные нами данные могут изменить свое состояние в результате чьих-то посторонных действий  

R1 R1

Т1

            

Т2

REPEATABLE READ

FANTOM – самый сложный уровень влияния транзакций друг на друга

SERRIALIZABLEпредотвращает FANTOM

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

  1. Блокировочный – состоит в том, что обрабатывая какие-либо данные, транзакция предотвращает доступ к этим данным других транзакций.
  2. Разделяемые – блокировки для чтения
  3. Монопольные – блокировки для записи

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

  1. Версионный – изменив какие – либо данные, транзакция до своего завершения работает с так называемой копией этих данных(версией). В зависимости от режимов изоляции транзакций, версии могут сохраняться и после завершения транзакций.

Индексы.

Индексы – специальные вспомогательные структуры для ускорения поиска данных.

B*-tree

Построение этих индексов основано на том, что любое построение может быть упорядоченным.

Индекс строится по определенным значением, Чаще всего ‘то значение столбца таблицы. Тогда говорят, что на этот столбец построен индекс. Надо иметь ввиду что наряду с ускорением поиска, наличие индексов замедляет выполнение DML операций.

Индексы могут быть простыми и составными.

Формат операции создания удаления индексов

 Create index имя_индекса

 On имя_таблицы(список_столбцов)

DROP INDEX имя_индекса

В некоторых СБД существуют и другие типы индексов, кроме Б дерева, например Битовые карты.




1. тематика Дымова Г
2. Стаття 22 Визначення земель сільськогосподарського призначення та порядок їх використання 1
3.  Эллинистическая философия последний период развития философии Древней Греции последовавший за Аристот
4. Тематический словарьсправочник - Под ред
5. Способность животных к символизации
6. Солнце уже довольно высоко стояло на чистом небе; но поля еще блестели росой из недавно проснувшихся долин в
7. Путешествие на КонТики Тур ХейердалПутешествие на КонТики Сканирование KPOStti.html
8. Человек в поисках смысла проблемы личности в гуманистической психологии
9. Калевала карелофинский мифологический эпос
10. Р.Е. Алексеева Кафедра ldquo;Компьютерные технологии в проектировании и производстве rdquo; И
11. ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНСТИТУТ ДИСТАНЦИОННОГО ОБРАЗОВАНИЯ СПЕЦИАЛЬНОСТЬ ЮРИСПРУД
12. Целитель на отдыхе думаю я иронично
13. тема состав и структура арбитражных судов 7 1 Высший Арбитражный Суд Российской Федерации 7 2 Феде
14. ПРИМЕР ОПРЕДЕЛЕНИЯ ИСЧИСЛЕННЫХ УСТАНОВОК ДЛЯ СТРЕЛЬБЫ СПОСОБОМ ПОЛНОЙ ПОДГОТОВКИ
15. РЕФЕРАТ дисертації на здобуття наукового ступеня кандидата педагогічних наук К
16. Линия отреза Утверждена пос
17. Tgung in Mosku 4 ~ 7 Juni 2007 [Leicht gek~rzte Fssung] Die bsicht die ich mit den folgenden ~berlegungen verfolge ist bescheiden
18. тема не может находиться в состояниях в которых координаты её центра инерции и импульс одновременно приним
19. У нас в клубе часть первая
20. задание для выполнения которого надо использовать разработанную подпрограмму