Учебно-практическое пособие москва 2017 ббк



Pdf көрінісі
бет194/243
Дата21.07.2022
өлшемі3,05 Mb.
#147663
түріУчебно-практическое пособие
1   ...   190   191   192   193   194   195   196   197   ...   243
Байланысты:
Язык SQL. Базовый курс

параллельном
выполнении означает, что полу-
ченный результат будет соответствовать
одному
из двух возможных вариантов упоря-
дочения транзакций при их последовательном выполнении. При этом нельзя сказать
точно, какой из вариантов будет реализован.
Если распространить эти рассуждения на случай, когда параллельно выполняется бо-
лее двух транзакций, тогда результат их параллельного выполнения также должен
быть таким, каким он был бы в случае выбора
некоторого варианта
упорядочения
транзакций, если бы они выполнялись последовательно, одна за другой. Конечно,
чем больше транзакций, тем больше вариантов их упорядочения. Концепция сериа-
лизации не предписывает выбора какого-то определенного варианта. Речь идет лишь
об одном из них.
В том случае, если СУБД не сможет гарантировать успешную сериализацию группы
параллельных транзакций, тогда некоторые из них могут быть завершены с ошибкой.
Эти транзакции придется выполнить повторно.
Для конкретизации степени независимости параллельных транзакций вводится по-
нятие уровня
изоляции транзакций
. Каждый уровень характеризуется перечнем тех
феноменов, которые на данном уровне не допускаются.
Всего в стандарте SQL предусмотрено четыре уровня. Каждый более высокий уровень
включает в себя все возможности предыдущего.
1. READ UNCOMMITTED. Это самый низкий уровень изоляции. Согласно стандарту
SQL, на этом уровне допускается чтение «грязных» (незафиксированных) дан-
ных. Однако в PostgreSQL требования, предъявляемые к этому уровню, более
строгие, чем в стандарте: чтение «грязных» данных на этом уровне не допуска-
ется.
2. READ COMMITTED. Не допускается чтение «грязных» (незафиксированных)
данных. Таким образом, в PostgreSQL уровень READ UNCOMMITTED совпадает с
уровнем READ COMMITTED. Транзакция может видеть только те незафиксиро-
ванные изменения данных, которые произведены в ходе выполнения ее самой.
3. REPEATABLE READ. Не допускается чтение «грязных» (незафиксированных)
данных и неповторяющееся чтение. В PostgreSQL на этом уровне не допускает-
ся также фантомное чтение. Таким образом, реализация этого уровня является
более строгой, чем того требует стандарт SQL. Это не противоречит стандарту.
4. SERIALIZABLE. Не допускается ни один из феноменов, перечисленных выше, в
том числе и аномалии сериализации.
201


Конкретный уровень изоляции обеспечивает сама СУБД с помощью своих внутрен-
них механизмов. Его достаточно указать в команде при старте транзакции. Одна-
ко программист может дополнительно использовать некоторые операторы и прие-
мы программирования, например, устанавливать блокировки на уровне отдельных
строк или всей таблицы. Это будет показано в конце главы.
По умолчанию PostgreSQL использует уровень изоляции READ COMMITTED.


Достарыңызбен бөлісу:
1   ...   190   191   192   193   194   195   196   197   ...   243




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет