Подтвердить что ты не робот

Чтение замков и замков

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

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

Чтение блокировок:

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

Записать блокировки:

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

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

4b9b3361

Ответ 2

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

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

  • Общая блокировка: блокировка чтения, т.е. любой TX может читать, но не записывать
  • Эксклюзивная блокировка: блокировка записи, т.е. если TX1 имеет эту блокировку, то TX2 ни записи, ни чтения

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

  • Фаза роста (или фаза расширения или первая фаза): блокировки приобретаются, а блокировки не снимаются.
  • Фаза сжатия (или вторая фаза): блокировки снимаются, и блокировки не приобретаются.

Ответ 3

Читать замки:

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

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

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

    Правда. Транзакция записи должна ожидать блокировку чтения, чтобы закончить чтение.

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

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

Напишите блокировки:

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

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