Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Построение транзакционной распределенной системы




Уровни изоляции и проблемы, которые возникают в базах данных

 

Основные уровни изоляции:

1) serializable – упорядочивание всех транзакций;

2) repeatable read – обеспечение повторного чтения;

3) read committed – обеспечение чтения подтвержденных данных;

4) read uncommitted – чтение всех данных, включая неподтвержденные, т.е. беспорядочное чтение.

 

Уровни изоляции введены, чтобы решить определенные проблемы.

Пусть есть таблица.

id name age
  Joe  
  Jill  

 

Рассмотрим проблемы баз данных на примере работы с указанной таблицей.

1) грязное чтение

Транзакция 1 Транзакция 2
  SELECT age FROM users WHERE id = 1;    
    UPDATE users SET age = 21 WHERE id = 1;  
  SELECT age FROM users WHERE id = 1;    
    ROLLBACK;  

 

2) неповторяющееся чтение

Транзакция 1 Транзакция 2
  SELECT * FROM users WHERE id = 1;    
    UPDATE users SET age = 21 WHERE id = 1; COMMIT;  
  SELECT * FROM users WHERE id = 1; COMMIT;    

 

3) фантомное чтение

Транзакция 1 Транзакция 2
  SELECT * FROM users WHERE age BETWEEN 10 AND 30;    
    INSERT INTO users VALUES (3, 'Bob', 27); COMMIT;  
  SELECT * FROM users WHERE age BETWEEN 10 AND 30;    

 

Уровень изоляции Грязное чтение Неповторяющееся чтение Фантомное чтение
Read Uncommitted Возможно Возможно Возможно
Read Committed - Возможно Возможно
Repeatable Read - - Возможно
Serializable - - -

 

Работа БД в режиме Serializable требует не только блокировок на запись и чтение данных, но и на диапазоны данных, сложна в реализации и неэффективна при работе.

Есть различные подходы, чтобы обеспечить эти уровни изоляции:

1) Использование блокировок;

2) MVCC (MultiVersion Concurrency Control) – управление конкурентным доступом с помощью многоверсионности. Каждый элемент данных представляет собой ссылку на список; изменение данных происходит следующим образом: когда происходит начало транзакции, запоминается время t1(с точностью до тиков процессора), и это значение используется для отсечения по времени новых изменений. Если для объекта приходит обновление, то происходит засечка времени (t2). Если приходит запрос, то есть временной срез t1, который является параметром любого запроса. Получается, мы не видим последних изменений. Этот подход требует синхронизации транзакций по времени. Для этого используются системные часы и единый механизм выдачи времени. Этот подход работает в системе, расположенной на одном сервере. Иначе возникает проблема синхронизации времени на нескольких серверах.

 

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

 

1) требует обеспечения распределенности;

2) требует обеспечения высокой готовности для узлов (т.е. это не должен быть один узел);

3) существует ограничение: транзакционное чтение может выполняться только в рамках одного сервера;

4) невозможно обеспечить режим Serializable, т.к. нужно абсолютно точно упорядочить все транзакции.




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 359; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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