Содержание
- 2. Назначение протоколов управления параллельным доступом состоит в подготовке такого графика выполнения транзакций, который исключит возможность их
- 3. Назначение многопользовательских СУБД состоит в обеспечении максимальной степени распараллеливания транзакций пользователей, поэтому те транзакции, которые не
- 4. Например, транзакции, обращающиеся к разным частям базы данных, не окажут влияния на работу друг друга и,
- 5. График. Последовательность запуска операций нескольких параллельно выполняемых транзакций, сохраняющая очередность выполнения операций в каждой отдельной транзакции.
- 6. Каждая транзакция состоит из последовательности операций, включающих чтение и запись данных в базу, которые должны завершаться
- 7. Последовательный график. График, в котором операции каждой из транзакций выполняются строго последовательно и не могут чередоваться
- 8. В последовательном графике транзакции выполняются строго поочередно. Например, если имеются две транзакции (Т1 и Т2 ),
- 9. Непоследовательный график. График, в котором чередуются операции из некоторого набора одновременно выполняемых транзакций.
- 10. Причиной проблем, описанных в примерах, является неправильная организация параллельного выполнения транзакций, что приводит к переходу базы
- 11. Не имеет значения, какой именно последовательный график будет выбран, поскольку при последовательном выполнении транзакций база данных
- 12. Суть упорядочивания состоит в поиске таких непоследовательных графиков, которые позволят транзакциям выполняться параллельно, но без влияния
- 13. Порядок выполнения операции чтения записи Если две транзакции только считывают некоторый элемент данных, они не будут
- 14. Рассмотрим график S1, представленный в столбцах Варианта А. Он устанавливает последовательность операций, выполняемых параллельно в транзакциях
- 15. Изменим последовательность выполнения операций write (balx) транзакции Т8 и write (balx) транзакции Т7 . Изменим последовательность
- 16. Эквивалентные графики: вариант А — непоследовательный график S1; вариант Б— непоследовательный график S2 , эквивалентный графику
- 20. Подобный тип упорядочиваемости принято называть конфликтной упорядочиваемостъю. В конфликтно упорядочиваемом графике порядок выполнения любых конфликтующих операций
- 21. Создается вершина, соответствующая каждой из транзакций. Создаются направленные ребра Ti—>Tj, если транзакция Тj считывает значение элемента,
- 22. Если в графе предшествования, соответствующем графику S, существует ребро Ti—>Tj, то в любом последовательном графике S1
- 23. Пример графика, не являющегося конфликтно упорядочиваемым Рассмотрим две транзакции, график выполнения которых представлен в таблице. В
- 24. Пример графика выполнения двух параллельных транзакций обновления
- 25. Граф предшествования для графика, представленного в таблице
- 26. Упорядочиваемость по просмотру Существует и несколько других типов упорядочиваемости, которые позволяют сформулировать менее строгое определение эквивалентности
- 27. Для каждого элемента данных х: если транзакция Т1 считывает первоначальное значение х в графике S1 эта
- 28. График является упорядочиваемым по просмотру, если он эквивалентен по просмотру некоторому последовательному графику. Каждый конфликтно упорядочиваемый
- 29. Пример упорядочиваемого по просмотру графика, который не является конфликтно упорядочиваемым
- 30. В общем случае проверка того, является ли график упорядочиваемым по просмотру, относится к классу NP-иолных задач
- 31. Восстанавливаемость Упорядочиваемыми называются такие графики, которые позволяют сохранить согласованность базы данных при условии, что ни одна
- 32. Еще раз обратимся к двум транзакциям, представленным в таблице. Но на этот раз предположим, что вместо
- 33. Восстанавливаемый график. График, в котором для каждой пары транзакций . Тi и Tj выполняется следующее правило:
- 34. Исключительная блокировка. Если в транзакции установлена исключительная блокировка элемента данных, то в ней могут выполняться и
- 35. Поскольку разделяемые блокировки не могут служить причиной конфликта, допускается устанавливать разделяемые блокировки для чтения одного и
- 36. Любая транзакция, которой необходимо получить доступ к элементу данных, должна вначале выполнить блокировку этого элемента. Для
- 37. Если элемент данных в настоящий момент уже заблокирован, СУБД проанализирует, является ли тип полученного запроса совместимым
- 38. Транзакция продолжает удерживать блокировку элемента данных до тех пор, пока явным образом не освободит ее —
- 39. Пример неверного графика с использованием блокировки Еще раз обратимся к двум транзакциям, представленным в таблице. Допустимый
- 40. Если до начала выполнения этого графика остаток на счете bal x был равен 100 фунтам стерлингов,
- 41. Для обеспечения упорядочиваемости следует использовать дополнительный протокол, определяющий моменты установки и снятия блокировки для каждой из
- 42. Двухфазная блокировка. Транзакция выполняется по протоколу двухфазной блокировки, если в ней все операции блокирования предшествуют первой
- 43. В соответствии с основным правилом этого протокола каждая транзакция может быть разделена на две фазы: фазу
- 44. Как правило, транзакция устанавливает некоторые блокировки, выполняет определенную обработку, после чего может затребовать установку дополни тельных
- 45. Прежде чем начать работу с элементом данных, транзакция должна установить для него блокировку. Блокировка может устанавливаться
- 46. Если СУБД поддерживает операции повышения уровня блокировок, то такое повышение допускается только в фазе расширения. Подобные
- 47. Использование протокола двухфазной блокировки для устранения проблемы потерянного обновления Способ устранения проблемы потерянного обновления с помощью
- 48. Но, поскольку на элемент данных Ьаlх к этому моменту уже установлена исключительная блокировка в транзакции Т2
- 49. Пример решения проблемы потерянного обновления
- 50. Использование протокола двухфазной блокировки для устранения проблемы зависимости от незафиксированных результатов Способ устранения проблемы зависимости от
- 51. В момент начала транзакции Т3 она также потребует предоставления ей исключительной блокировки элемента bаlх . Но,
- 52. Пример решения проблемы зависимости от незафиксированных результатов
- 53. Использование протокола двухфазной блокировки для устранения проблемы анализа несогласованности Способ устранения проблемы анализа несогласованности показан в
- 54. В результате при попытке получения разделяемой блокировки на элемент bal x в транзакции Т6 выполнение запроса
- 55. Пример решения проблемы анализа несогласованности
- 56. Можно доказать, что если во всех транзакциях графика соблюдается протокол двухфазной блокировки, этот график будет являться
- 57. Взаимоблокировка Туковая ситуация, которая может возникнуть, когда две (или более) транзакции находятся во взаимном ожидании освобождения
- 58. Когда в момент времени t6 транзакция Т17 запрашивает исключительную блокировку на элемент данных Ьа1у , она
- 59. Пример взаимоблокировки двух транзакций
- 60. К сожалению, существует только один способ устранить состояние взаимоблокировки: выполнение одной или нескольких транзакций должно быть
- 61. Как только ее откат будет завершен, все установленные этой транзакцией блокировки будут освобождены и транзакция Т17
- 62. СУБД обязана автоматически перезапустить все отмененные ею транзакции. Существуют три общих метода обработки взаимоблокировок: установка тайм-
- 63. При использовании тайм-аутов транзакция, потребовавшая установить какую-либо блокировку, ожидает в течение периода времени, который не превышает
- 64. Поскольку метод предотвращения взаимоблокировок сложнее по сравнению с применением тайм-аутов или контроля за появлением взаимоблокировок и
- 65. Тайм-ауты Один из наиболее простых методов устранения взаимоблокировок состоит в использовании тайм-аутов. При таком подходе транзакция,
- 66. В этом случае СУБД действует согласно предположению, что данная транзакция могла оказаться в состоянии взаимоблокировки, даже
- 67. Предотвращение взаимоблокировок Еще один из возможных подходов к устранению взаимоблокировок состоит в упорядочении транзакций на основе
- 68. Второй алгоритм, "отмена-ожидание", использует диаметрально противоположный подход: только более новые транзакции могут ожидать завершения более старой
- 69. Обнаружение взаимоблокировок Обнаружение взаимоблокировок обычно выполняется с помощью графа ожидания (Wait-For Graph — WFG). Этот граф
- 70. • Создается вершина, соответствующая каждой транзакции. • Создается направленное ребро Ti-^Tj, если транзакция ТА ожидает освобождения
- 71. Граф ожидания, который показывает наличие взаимоблокировки между двумя транзакциями
- 72. Частота выполнения операции обнаружения взаимоблокировок Поскольку наличие цикла в графе ожидания является необходимым и достаточным условием
- 73. Если выбранный промежуток окажется слишком продолжительным, наличие взаимоблокировки может оставаться незамеченным в течение длительного времени. Еще
- 74. Возобновление нормальной работы после обнаружения взаимоблокировки Как указано выше, после обнаружения в СУБД взаимоблокировок необходимо выполнить
- 75. При этом необходимо учитывать следующие соображения: а) продолжительность выполнения транзакции (может оказаться более целесообразным аварийное завершение
- 76. в) количество элементов данных, которые все еще подлежат обновлению в транзакции (может оказаться более целесообразным решение
- 77. 2. Определить степень отката транзакции. После принятия решения об отмене конкретной транзакции необходимо определить, до какой
- 78. 3. Предотвратить возникновение ситуации истощения ресурсов. Истощение ресурсов возникает, если для отмены всегда выбирается одна и
- 80. Скачать презентацию