Skip to content

Instantly share code, notes, and snippets.

@ruvaleev
Created September 27, 2023 22:31
Show Gist options
  • Save ruvaleev/34cfa57eb4f4c55397f2744c20d906f0 to your computer and use it in GitHub Desktop.
Save ruvaleev/34cfa57eb4f4c55397f2744c20d906f0 to your computer and use it in GitHub Desktop.
Deadlock
  1. Открываем два окна psql: session_1 и session_2;
  2. В session_1:
BEGIN;
UPDATE bank_accounts SET amount = amount - 100 WHERE id = 1;
  1. В session_2:
BEGIN;
UPDATE bank_accounts SET amount = amount + 100 WHERE id = 2;
  1. В session_1:
UPDATE bank_accounts SET amount = amount + 50 WHERE id = 2;
COMMIT;
  1. В session_2:
UPDATE bank_accounts SET amount = amount + 50 WHERE id = 1;
COMERROR:  deadlock detected
DETAIL:  Process 3225 waits for ShareLock on transaction 785; blocked by process 3002.
Process 3002 waits for ShareLock on transaction 786; blocked by process 3225.
HINT:  See server log for query details.
CONTEXT:  while updating tuple (0,5) in relation "bank_accounts"
ruslan=!# COMMIT;
ROLLBACK
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment