Здравствуйте, Ромашка, Вы писали:
Р>А на таблицу-то зачем? Я не большой специалист по блокировкам в оракле, но чет мне быстрый гуглинг подсказывает, что блокировки на таблицу не будет. Не вижу причин для нее.
Я, разумеется, имел в виду блокировку строк таблицы (и индекса). На всю таблицу блокировки тоже накладываются, но разделяемые.
Здравствуйте, wildwind, Вы писали:
W>Не на каждую, а на каждую изменяемую. И не всегда "перед", иногда "в процессе".
У меня отрывистые знания про блокировки.
Не понял, если мы делаем update table set col = seq.nextval для всех строк одновременно, то какие строки будут заблокированы и когда?
Будет ли доступно в других транзакция чтение строк, изменение, удаление и добавление?
Как из из этих операций будут доступны? Желательно про oracle, но можно и в общем
P.S. Посоветуйте литературу про блокировки и лучшие практики
Слишком общие вопросы, чтобы на них ответить однозначно.
Б>Не понял, если мы делаем update table set col = seq.nextval для всех строк одновременно, то какие строки будут заблокированы и когда?
Сначала будут блокироваться строки по мере доступа к ним, а потом будет выполнена эскалация блокировки на всю таблицу, когда количество заблокированных строк превысит некую величину.
(В перечеркнутом ошибка вышла, это не про oracle, а про sql server).
Б>Будет ли доступно в других транзакция чтение строк, изменение, удаление и добавление? Б>Как из из этих операций будут доступны? Желательно про oracle, но можно и в общем
Применительно к oracle? Выборка без указаний блокировок будет доступна, остальное будет зависеть от того , будет ли выполнена эскалация, будут ли затронуты одинаковые строки.
Б>P.S. Посоветуйте литературу про блокировки и лучшие практики
Здравствуйте, vladislav_somov, Вы писали:
_>а потом будет выполнена эскалация блокировки на всю таблицу, когда количество заблокированных строк превысит некую величину.
Здравствуйте, Буравчик, Вы писали:
Б>Не понял, если мы делаем update table set col = seq.nextval для всех строк одновременно, то какие строки будут заблокированы и когда?
Если меняются все строки, значит все и будут заблокированы. Насчет "когда именно" могут быть нюансы реализации, но обычно они блокируются по мере выборки и изменения.
Б>Будет ли доступно в других транзакция чтение строк, изменение, удаление и добавление? Б>Как из из этих операций будут доступны? Желательно про oracle, но можно и в общем
Все будут доступны, с учетом требований согласованности, которые определяются уровнем изоляции всех участвующих транзакций, наложенными ими блокировками, а также моментом их начала. Деталей слишком много, чтобы изложить их в двух словах.
Б>P.S. Посоветуйте литературу про блокировки и лучшие практики