или те строки которые обновляются?
Смотря какая блокировка, и то когда как...
У меня 10 строк в таблице Одну я обновляю Вторую обновляю Обновление второй строки будет ожидать окончания обновления первой?
Возьмите и проверьте. Заодно SQL писать потренируетесь.
Вручную сложно такое воспроизвести там же доли секунд, а как воспроизвести наглядно не понимаю
Впрочем, это ещё сильно зависит от уровня изоляцыи. Попробуйте на разных уровнях, и в обновлении (в WHERE) поуказывать разные условия для разных уровней.
Какие доли секунд? Открываешь psql, начинаешь транзакцыю — и хоть часы обновляй. Для READ COMMITTED (где важно быть внутри одного statement) есть pg_sleep опять жэ.
*где для некоторых эффектов важно быть внутри одного statement
Стандартная изоляция, кажется Read Committed
Да, я тупанул, действительно же можно просто открыть транзакцию хД
Тут есть мнение, что зря — и стандартно лучшэ сначала ставить SERIALIZABLE. Потом ужэ, когда вопросы конкурентного доступа станут подступать, а опыта накопится до колена — можно практиковать RR/RC в каких-то особых базах.
Причем с любым уровнем изоляции :)
Да, это понятно, спасибо
Ну, RC внутри одного запроса работает почти как RR, а между запросами — сильно по-другому. И то не совсем как RR (там рестарты вместо дэдлоков, что в принцыпе иногда весело!)
В целом, поддержу коллегу... Но надо очень четко понимать что у вас за система работает с этими данными... В редких случаях лучше Read uncommitted поставить...
Обсуждают сегодня