какой не гарантируется транзакциями в базе данных - PullRequest
0 голосов
/ 11 декабря 2010
  1. Все изменения, внесенные в данные во время транзакции, будут постоянно храниться в базе данных
  2. Изменения, внесенные в данные во время транзакции, не видны другому процессу до тех пор, пока транзакция не завершится
  3. Ограничения целостности выполняются после завершения транзакции
  4. Пока один процесс изменяет некоторые данные в транзакции, второй процесс должен ждать, пока первый не завершит свою транзакцию

Ответы [ 3 ]

1 голос
/ 11 декабря 2010

4 не гарантируется

Во время транзакции для изменения определенных таблиц другие процессы могут изменять те же таблицы, используя свои транзакции.

РЕДАКТИРОВАТЬ:

Я считаю, что другиепроцессам действительно придется ждать обновления тех же таблиц, которые использовались транзакцией первого процесса.Другим процессам будет разрешено выполнять свои транзакции одновременно, если они включают другие таблицы (не таблицы, обновленные в транзакции первого процесса).Таким образом, я все еще сказал бы, что вариант 4 не гарантирован, потому что вариант 4 слишком широк.

0 голосов
/ 11 декабря 2010

Эти варианты немного широки на мой вкус, особенно когда спрашиваешь о гарантиях. Есть проблемы с некоторыми из них:

  1. Элемент 1 гарантирован для совершенных транзакций, а не для тех, которые были отменены.
  2. Пункт 2 может быть побежден в зависимости от СУБД (например, SQL Server SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED), но я подозреваю, что он действителен с точки зрения учебника.
  3. Я признаю, что № 3 действителен, если мы не придираемся к вещам, таким как возможность отключать ограничения, хотя вы можете утверждать, что данные удовлетворяют общим требованиям целостности, потому что они удовлетворяют любым действующим ограничениям.
  4. Пункт 4 не гарантируется по причинам, указанным @byneri и @DaMartyr - несвязанные данные могут быть изменены.

Если бы мне пришлось выбрать один, это был бы №4, но №1 тоже заманчиво. Трудно знать, что ищет профессор / учебник после того, как вы в течение нескольких лет находитесь в реальном мире.

0 голосов
/ 11 декабря 2010

1 - если в середине не получится, изменения данных будут отменены.Обратите внимание на # 4 ... Процесс в транзакции может иметь блокировку для одной или нескольких таблиц, но это не означает большую часть всей базы данных.Другие процессы могут попадать в таблицы, которые не заблокированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...