Параллельные подключения к базе данных

Как базы данных SQL предотвращают повреждение, когда два или три подключения к ней одновременно изменяют одну и ту же таблицу (или даже одну и ту же строку)?

Я думал о теоретической возможности, которая может возникнуть в базах данных, которые имеют несколько интерфейсов с балансировкой нагрузки на основе серверов:

  • Сервер 1 обращается к центральной базе данных
  • Сервер 2 обращается к центральной базе данных
  • Сервер 1 получает информацию для пользователя X в центральной базе данных
  • Сервер 2 получает информацию для того же пользователя X в центральной базе данных
  • Сервер 1 устанавливает новые данные для пользователя X в центральной базе данных после выполнения некоторой работы (может быть транзакция с выполнением или без)
  • Сервер 2 устанавливает новые данные для пользователя X в центральной базе данных.

Какой на данный момент пользователь X будет содержать недопустимые записи, поскольку он в основном перезаписал работу, которую Сервер 1 только что сделал для того же пользователя.

Я думал о постоянной проверке одной и той же таблицы и строки, чтобы увидеть, были ли они изменены в последнее время, но все же ничто не мешает той же самой таблице и строке быть измененной чем-то еще между временем, когда она проверяется, и временем, когда она будет записываться в БД после проверка.

Я просто пытаюсь понять, как работают большие базы данных с миллионами пользователей и как они распределены по десяткам или сотням отдельных серверов.


person Xanather    schedule 27.01.2015    source источник
comment
Поиск по целостности транзакций базы данных может помочь ответить на ваш вопрос.   -  person Mike Satteson    schedule 27.01.2015
comment
Да, вчера поздно вечером я пытался найти информацию, связанную с этим, сегодня утром уже нашел много хороших ссылок, таких как technet.microsoft.com/en-us/library/ms173763.aspx.   -  person Xanather    schedule 27.01.2015
comment
Я рад, что вы нашли то, что вам нужно, чтобы удовлетворить свое любопытство, и что вы ответили на свой вопрос. Наслаждаться.   -  person Mike Satteson    schedule 27.01.2015


Ответы (1)


Я искал целостность транзакций базы данных.

Хорошие ссылки для чтения:

technet.microsoft.com/en-us/library/ms173763.aspx

http://en.wikipedia.org/wiki/Isolation_%28database_systems%29#Isolation_Levels.2C_Read_Phenomena_and_Locks

Спасибо

person Xanather    schedule 27.01.2015