Skip to content
8 / 15

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² PostgreSQL: ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ выстраиваСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π΅Π΄Π»ΠΎΠΊ?

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ дСлятся Π½Π° ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ строки. Π’Π°Π±Π»ΠΈΡ‡Π½Ρ‹Π΅ (ACCESS SHARE Ρƒ SELECT, ROW EXCLUSIVE Ρƒ INSERT/UPDATE/DELETE, ACCESS EXCLUSIVE Ρƒ ALTER TABLE, VACUUM FULL, TRUNCATE) ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‚ ΠΏΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ совмСстимости; строчныС бСрутся UPDATE ΠΈ SELECT FOR UPDATE. Главная ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ΄Π΅ β€” ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ: ALTER TABLE ΠΆΠ΄Ρ‘Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ SELECT, Π° всС Π½ΠΎΠ²Ρ‹Π΅ запросы Π²ΡΡ‚Π°ΡŽΡ‚ Π·Π° ALTER, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ чСстная ΠΈ Π½Π΅ пропускаСт Π²ΠΏΠ΅Ρ€Ρ‘Π΄. Π’Π°ΠΊ ΠΎΠ΄Π½Π° миграция останавливаСт Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, хотя сама выполняСтся миллисСкунды; лСчится lock_timeout ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°ΠΌΠΈ. Π”Π΅Π΄Π»ΠΎΠΊ β€” это Ρ†ΠΈΠΊΠ» ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΉ: PostgreSQL Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ Ρ‡Π΅Ρ€Π΅Π· deadlock_timeout (1 с) ΠΈ ΡƒΠ±ΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ΄Π½Ρƒ ΠΈΠ· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΉ с 40P01. ΠŸΡ€ΠΎΡ„ΠΈΠ»Π°ΠΊΡ‚ΠΈΠΊΠ° простая ΠΈ ΠΏΠΎΡ‡Ρ‚ΠΈ всСгда Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚: ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ строкам Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС ΠΈ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ.

Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² PostgreSQL: ΠΊΠ°ΠΊΠΈΠ΅ Π±Ρ‹Π²Π°ΡŽΡ‚, ΠΊΠ°ΠΊ выстраиваСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒ Π΄Π΅Π΄Π»ΠΎΠΊ? | JScriptiser