Читать блокировки и писать блокировки - PullRequest
21 голосов
/ 10 октября 2011

Я немного не уверен насчет блокировок чтения и записи, и мне просто нужно, чтобы кто-нибудь проверил правильность этих фактов о блокировках чтения / записи.

Это относится к базам данных в целом.

Блокировки чтения:

  1. Несколько блокировок чтения могут быть получены несколькими потоками одновременно.
  2. Когда поток имеет блокировку чтения в строке / таблице, ни один поток не может обновить/ вставить / удалить данные из этой таблицы.(Даже если поток, пытающийся записать данные, не требует блокировки записи.)
  3. Строка / таблица не могут одновременно иметь блокировку чтения и записи.

Блокировки записи:

  1. Когда строка / таблица имеет блокировку записи, она не может быть прочитана другим потоком, если в них реализована блокировка чтения, но может быть прочитана другими потоками, если блокировка чтения не установлена.реализован (т.е. простой запрос на выборку)

Спасибо за разъяснения.Я не могу найти прямых утверждений к этим утверждениям в интернете.

Ответы [ 3 ]

6 голосов
/ 15 апреля 2018

В теории управления базами данных теория блокировки используется для реализации изоляции между несколькими пользователями базы данных. Это «Я» в сокращении ACID (атомарность, согласованность, изоляция, долговечность). Блокировки применяются TX (транзакцией) к данным, что может блокировать доступ других TX к тем же данным в течение срока службы TX.

Простая блокировка: Можно запросить два основных типа замков:

  • Общая блокировка: Блокировка чтения, т. Е. Любой другой TX может читать, но не записывать
  • Эксклюзивная блокировка: Блокировка записи, т.е. никакой другой TX не может читать или писать

Многократная блокировка: Двухфазная блокировка (2PL) - это метод управления параллелизмом, который гарантирует сериализуемость.

  • A Фаза роста (или Фаза расширения или Первая фаза): блокировки получены, а блокировки не разблокированы.
  • A Фаза сжатия (или Вторая фаза): блокировки снимаются и блокировки не приобретаются.
4 голосов
/ 10 октября 2011

Зависит от используемого уровня изоляции .

0 голосов
/ 07 февраля 2019

Блокировки чтения:

  1. Несколько блокировок чтения могут быть получены несколькими потоками одновременно.

    Верно.Несколько блокировок чтения могут существовать одновременно.(Блокировка чтения имеет другое имя: Общая блокировка)

  2. Если у потока есть блокировка чтения для строки / таблицы, ни один поток не может обновить / вставить / удалить данные из этой таблицы,(Даже если поток, пытающийся записать данные, не требует блокировки записи.)

    True.Транзакция записи должна ожидать завершения чтения для блокировки чтения.

  3. Строка / таблица не могут одновременно иметь блокировку чтения и записи.

    True.Если у вас есть блокировка записи до блокировки чтения, блокировка записи заблокирует другие транзакции для чтения или записи той же таблицы.Если у вас есть блокировка чтения до блокировки записи, блокировка чтения будет блокировать транзакции записи, пока транзакция чтения не завершится.

Блокировки записи:

  1. Когда строка / таблица имеет блокировку записи, она не может быть прочитана другим потоком, если в них реализована блокировка чтения, но может быть прочитана другими потоками, если не реализована блокировка чтения (т.е. простой запрос выбора)

    Извините, я не понимаю этого утверждения. Но когда таблица имеет блокировку записи (Exclusive Lock), она не может быть прочитана или записана другой транзакцией.

...