Re[4]: Поиск по NULL при обновлении таблицы
От: wildwind Россия  
Дата: 14.02.21 13:21
Оценка:
Здравствуйте, Ромашка, Вы писали:

Р>А на таблицу-то зачем? Я не большой специалист по блокировкам в оракле, но чет мне быстрый гуглинг подсказывает, что блокировки на таблицу не будет. Не вижу причин для нее.


Я, разумеется, имел в виду блокировку строк таблицы (и индекса). На всю таблицу блокировки тоже накладываются, но разделяемые.
Re[6]: Поиск по NULL при обновлении таблицы
От: Буравчик Россия  
Дата: 14.02.21 15:21
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Не на каждую, а на каждую изменяемую. И не всегда "перед", иногда "в процессе".


У меня отрывистые знания про блокировки.

Не понял, если мы делаем update table set col = seq.nextval для всех строк одновременно, то какие строки будут заблокированы и когда?

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

P.S. Посоветуйте литературу про блокировки и лучшие практики
Best regards, Буравчик
Отредактировано 14.02.2021 20:14 Буравчик . Предыдущая версия .
Re[7]: Поиск по NULL при обновлении таблицы
От: vladislav_somov Россия  
Дата: 15.02.21 14:20
Оценка: 14 (1)
Здравствуйте, Буравчик, Вы писали:

Слишком общие вопросы, чтобы на них ответить однозначно.

Б>Не понял, если мы делаем update table set col = seq.nextval для всех строк одновременно, то какие строки будут заблокированы и когда?


Сначала будут блокироваться строки по мере доступа к ним, а потом будет выполнена эскалация блокировки на всю таблицу, когда количество заблокированных строк превысит некую величину.
(В перечеркнутом ошибка вышла, это не про oracle, а про sql server).

Б>Будет ли доступно в других транзакция чтение строк, изменение, удаление и добавление?

Б>Как из из этих операций будут доступны? Желательно про oracle, но можно и в общем

Применительно к oracle? Выборка без указаний блокировок будет доступна, остальное будет зависеть от того , будет ли выполнена эскалация, будут ли затронуты одинаковые строки.

Б>P.S. Посоветуйте литературу про блокировки и лучшие практики


Опять же, если для oracle, то вот:
https://www.ozon.ru/context/detail/id/6311145/
следующее издание:
https://www.ozon.ru/context/detail/id/149325770/?stat=YW5fMQ%3D%3D

По SQL Server я на амазон брал.
Для oracle там тоже есть:
https://www.amazon.com/Oracle-Database-Transactions-Locking-Revealed/dp/148426424X/ref=sr_1_11?dchild=1&keywords=oracle&qid=1613398599&s=books&sr=1-11
Отредактировано 15.02.2021 18:10 vladislav_somov . Предыдущая версия . Еще …
Отредактировано 15.02.2021 18:07 vladislav_somov . Предыдущая версия .
Re[8]: Поиск по NULL при обновлении таблицы
От: wildwind Россия  
Дата: 15.02.21 17:21
Оценка: 7 (2)
Здравствуйте, vladislav_somov, Вы писали:

_>а потом будет выполнена эскалация блокировки на всю таблицу, когда количество заблокированных строк превысит некую величину.


В Oracle такого не будет.
Re[7]: Поиск по NULL при обновлении таблицы
От: wildwind Россия  
Дата: 15.02.21 17:39
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Не понял, если мы делаем update table set col = seq.nextval для всех строк одновременно, то какие строки будут заблокированы и когда?


Если меняются все строки, значит все и будут заблокированы. Насчет "когда именно" могут быть нюансы реализации, но обычно они блокируются по мере выборки и изменения.

Б>Будет ли доступно в других транзакция чтение строк, изменение, удаление и добавление?

Б>Как из из этих операций будут доступны? Желательно про oracle, но можно и в общем

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

Б>P.S. Посоветуйте литературу про блокировки и лучшие практики


Буду банален и посоветую начать с документации.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.