πŸ”Ή Deadlock Π² Π‘Π” (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…): Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ πŸ”Ή ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ (ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚)? πŸ”Έ Locks Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Deadlock β€” это ситуация, ΠΊΠΎΠ³Π΄Π° транзакция A Π΄Π΅Ρ€ΠΆΠΈΡ‚ lock Π½Π° рСсурсС X ΠΈ ΠΆΠ΄Ρ‘Ρ‚ Y, Π° транзакция B Π΄Π΅Ρ€ΠΆΠΈΡ‚ lock Π½Π° Y ΠΈ ΠΆΠ΄Ρ‘Ρ‚ X, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±Π΅ висят ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π° пСрСсСчСнии рСсурсов.

πŸ”Έ ΠŸΠΎΡΠ»Π΅Π΄ΡΡ‚Π²ΠΈΠ΅ β€” Ρ‚ΠΎΡ€ΠΌΠΎΠ·Π° ΠΈ ΠΎΡ‚ΠΊΠ°Ρ‚Ρ‹: Π‘Π£Π‘Π” ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ deadlock ΠΈ ΡƒΠ±ΡŒΡ‘Ρ‚ ΠΎΠ΄Π½Ρƒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ (victim), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. ΠŸΡ€ΠΈ ΡƒΡ€ΠΎΠ²Π½Π΅ изоляции SERIALIZABLE шанс ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² Π²Ρ‹ΡˆΠ΅ из‑за Π±ΠΎΠ»Π΅Π΅ Тёстких locks.

πŸ”Έ ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ способы ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ: Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ, ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ порядок Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ для всСх ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ индСксы Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… сканирований, ΠΏΠΎΠ½ΠΈΠΆΠ°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ»ΡΡ†ΠΈΡŽ ΠΏΡ€ΠΈ допустимости, Π»ΠΎΠ²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ deadlock ΠΈ Ρ€Π΅Ρ‚Ρ€Π°ΠΈΡ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡŽ.

-- Π’1 BEGIN; UPDATE accounts SET balance=balance-10 WHERE id=1; UPDATE accounts SET balance=balance+10 WHERE id=2; COMMIT;

-- Π’2 BEGIN; UPDATE accounts SET balance=balance-10 WHERE id=2; UPDATE accounts SET balance=balance+10 WHERE id=1; COMMIT;

πŸ“š ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ цикличСского порядка Π·Π°Ρ…Π²Π°Ρ‚Π° locks, Π΄Π΅Π»Π°ΠΉΡ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠΉΡ‚Π΅ retry ΠΏΡ€ΠΈ deadlock.

#CODERIKK #Interview #Middle

➑️ ΠœΡ‹ Π² Telegram - Π‘Π΅Ρ‚ΠΊΠ΅ - Π”Π·Π΅Π½ Π‘ΡƒΠ΄Ρƒ Ρ€Π°Π΄ вашСй Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ Π·Π΄Π΅ΡΡŒβ¬‡οΈ


Π’ этом постС Π±Ρ‹Π»ΠΈ ссылки, Π½ΠΎ ΠΌΡ‹ ΠΈΡ… ΡƒΠ΄Π°Π»ΠΈΠ»ΠΈ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π‘Π΅Ρ‚ΠΊΠΈ

πŸ”Ή Deadlock Π² Π‘Π” (Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…): Ρ‡Ρ‚ΠΎ это ΠΈ ΠΊΠ°ΠΊ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ
πŸ”Ή ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π΄Π²Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠ½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ (ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚)?
πŸ”Έ Locks Π½ΡƒΠΆΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‰ΠΈΡ‚ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ | Π‘Π΅Ρ‚ΠΊΠ° β€” ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ hh.ru