Files
homework/mnoskov/postgresql/9. Оптимизация/2. Блокировки/DQL_blocking_prectice.sql
T
2026-03-13 12:18:33 +03:00

21 lines
1.9 KiB
SQL

-- Задание 1
SELECT * FROM mnoskov.users WHERE id = 1;
-- Если две одновременные сессии выполнят этот запрос, то в обеих все выведется, и ошибок или очереди не бкдет
-- Потому что этот запрос только на чтение
-- Задание 2
-- Первая сессия будет просто ждать окончания выполнения первой
-- Если разрешить обоимUPDATE пройти одновременно, то получится какая-то херня пологаю, они смешаются, или че-то такое
-- У Alice в итоге останется второй email, тк он выполнится последним. Порядок COMMIT важен, тк в последствии этого порядка будут выполняться запросы
-- Задание 3
-- select выполнится тк просто читает, а update встанет в очередь, тк он попытается изменить 'забронированные данные'
-- FOR UPDATE помогает избежать ошибок когда происходит покупка товара или че то такое, когда идет процесс изменений в данных
-- Задание 4
-- Дедлок возникает потому что каждая сессия заблокировал то, что нужно другой сессии. База отменит одну из сессий, чтобы прошла хоть какая-то
-- Чтобы дедлок не возникал, нужно обновления все производить в одном порядке
-- Если при массовых обновлениях не соблюдать порядок строк, то будет возникать жопа из дедлоков