Как управляются блокировки строк в грязных блоках, если в этом блоке несколько пользователей вносят различные изменения? - PullRequest
0 голосов
/ 25 апреля 2019

У меня вопрос по поводу грязных блоков. Как вы знаете, в блоке есть несколько строк. Если несколько пользователей работают с разными строками в одном и том же блоке, будет ли оракул создавать конкретные грязные блоки для каждой транзакции?

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

Итак, в этом случае oracle будет выполнять блокировку на уровне строк или блокировку на уровне блоков?

Как я знаю, даже если мы изменим только одну строку в блоке, база данных загружает полный файл в буферный кеш и называет его грязным. Итак, предположим, что три пользователя изменили три разных ряда одного и того же блока. Затем один выполнил откат, другой совершил коммит, а последний все еще вносит изменения. Так в таком случае, как база данных будет управлять этим блоком и их операциями?

Bests.

1 Ответ

3 голосов
/ 25 апреля 2019

Oracle обрабатывает это автоматически через SCN (номер изменения системы), плюс табличное пространство UNDO и (для блокировки) часть заголовка блока (заинтересованный список транзакций).

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

Теперь предположим, что вы выполняете запрос (который, как известно базе данных, находится в SCN # 1), но кто-то изменил блок, так что теперь он находится в SCN # 2.,Когда блок извлекается по вашему запросу, Oracle знает, что ему нужно откатить данные до того, как это было в SCN # 1, - это делает это, используя информацию в табличном пространстве UNDO для обработки данных обратно в конкретный SCN.

Это все часть согласованности чтения, и вы можете прочитать больше о SCN в этом ответе ASKTOM , и больше о блокировке строк здесь .

...