сделал DDL для пет проекта
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
-- Задание 1
|
||||
SELECT * FROM mnoskov.users WHERE id = 1;
|
||||
-- Если две одновременные сессии выполнят этот запрос, то в обеих все выведется, и ошибок или очереди не бкдет
|
||||
-- Потому что этот запрос только на чтение
|
||||
|
||||
|
||||
-- Задание 2
|
||||
-- Первая сессия будет просто ждать окончания выполнения первой
|
||||
-- Если разрешить обоимUPDATE пройти одновременно, то получится какая-то херня пологаю, они смешаются, или че-то такое
|
||||
-- У Alice в итоге останется второй email, тк он выполнится последним. Порядок COMMIT важен, тк в последствии этого порядка будут выполняться запросы
|
||||
|
||||
|
||||
-- Задание 3
|
||||
-- select выполнится тк просто читает, а update встанет в очередь, тк он попытается изменить 'забронированные данные'
|
||||
-- FOR UPDATE помогает избежать ошибок когда происходит покупка товара или че то такое, когда идет процесс изменений в данных
|
||||
|
||||
|
||||
-- Задание 4
|
||||
-- Дедлок возникает потому что каждая сессия заблокировал то, что нужно другой сессии. База отменит одну из сессий, чтобы прошла хоть какая-то
|
||||
-- Чтобы дедлок не возникал, нужно обновления все производить в одном порядке
|
||||
-- Если при массовых обновлениях не соблюдать порядок строк, то будет возникать жопа из дедлоков
|
||||
Reference in New Issue
Block a user