|
1963154039
|
IX
|
GRANT
|
52
|
RID
|
1:1357:2
|
72057594057326592
|
X
|
GRANT
|
52
|
PAG
|
1:1357
|
72057594057326592
|
IX
|
GRANT
|
52
|
Таблица 1
То есть картина совпадает с той, которую можно видеть
при использовании предыдущей версии SQL Server или БД без поддержки
версионности.
Однако дальше начинаются отличия. Если сейчас
вернуться к первой транзакции и попытаться опять выполнить тот же самый запрос, то он совершенно спокойно отработает.
SELECT
* FROM tst WHERE x = 3
|
И результат будет точно таким же: x=3, y=3. Если
попробовать сделать то же самое на БД без включенной поддержки версионности, то
второй запрос из первой транзакции не выполнится. Он будет ожидать фиксации или
отката второй транзакции. То есть он попросту не сможет прочитать нужную
запись, поскольку она заблокирована. Но в данном случае блокировка нисколько не
мешает прочитать версию данных, существовавшую на момент начала выборки.
Более того, в силу особенностей работы с
неиндексированными таблицами (а для тестовой таблицы индексов не создавалось), в базе без поддержки версионности второй запрос в первой транзакции не смог бы
выбрать не только заблокированную
запись, но и любую другую. Из-за блокировки ему все равно бы пришлось ждать
завершения работы первой транзакции. Говоря проще, у блокировочника, в случае
отсутствия индексов, блокировка одной записи превращается фактически в
блокировку всей таблицы.
Если теперь зафиксировать изменения тестовой таблицы, произведенные второй транзакцией:
и сделать опять выборку тех же данных в транзакции
номер один:
Рекомендуем скачать другие рефераты по теме: контрольная работа по математике класс, контрольные работы по математике.
Предыдущая страница реферата |
1
2
3
4
5
6
7
8
9
10
11 |
Следующая страница реферата