ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π Π°Π·ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π΅ Π½Π° Π΄ΠΎΠΊΠ»Π°Π΄Π° ΠΎΡ‚ 2020 Π³. Π½Π° Брус МомТиан "ΠžΡ‚Π²Π°Ρ€ΡΠ½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π² Postgres".

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

(Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Всички SQL запитвания ΠΎΡ‚ слайдов ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π»ΠΈΠ½ΠΊ: http://momjian.us/main/writings/pgsql/locking.sql)

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅! ΠŸΡ€Π΅ΠΊΡ€Π°ΡΠ½ΠΎ Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΄Π° бъда Ρ‚ΡƒΠΊ Π² Русия. Π˜Π·Π²ΠΈΠ½ΡΠ²Π°ΠΉΡ‚Π΅, Ρ‡Π΅ Π½Π΅ ΠΌΠΎΠΆΠ°Ρ… Π΄Π° Π΄ΠΎΠΉΠ΄Π° ΠΌΠΈΠ½Π°Π»Π°Ρ‚Π° Π³ΠΎΠ΄ΠΈΠ½Π°, Π½ΠΎ Ρ‚Π°Π·ΠΈ Π³ΠΎΠ΄ΠΈΠ½Π° Иван ΠΈ Π°Π· ΠΈΠΌΠ°ΠΌΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΠ»Π°Π½ΠΎΠ²Π΅. Надявам сС Π΄Π° съм Ρ‚ΡƒΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-чСсто. ОбоТавам Π΄Π° посСтя Русия. Π©Π΅ посСтя ВюмСн ΠΈ Π’Π²Π΅Ρ€. Наистина сС Ρ€Π°Π΄Π²Π°ΠΌ, Ρ‡Π΅ Ρ‰Π΅ ΠΈΠΌΠ°ΠΌ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° бъда Π² Ρ‚Π΅Π·ΠΈ Π³Ρ€Π°Π΄ΠΎΠ²Π΅.

Казвам сС Брус МомТиан. Работя Π² EnterpriseDB ΠΈ сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ с Postgres ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 23 Π³ΠΎΠ΄ΠΈΠ½ΠΈ. ЖивСя Π² ЀиладСлфия, БАЩ. ΠŸΡŠΡ‚ΡƒΠ²Π°ΠΌ ΠΎΠΊΠΎΠ»ΠΎ 90 Π΄Π½ΠΈ Π² Π³ΠΎΠ΄ΠΈΠ½Π°Ρ‚Π° ΠΈ посСщавам ΠΎΠΊΠΎΠ»ΠΎ 40 ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ. ΠœΠΎΡΡ‚ Π²Π΅Π± сайт, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° слайдовСтС, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° сСга. Π‘Π»Π΅Π΄ конфСрСнцията ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ ΠΎΡ‚ личния ΠΌΠΈ сайт. Π’Π°ΠΌ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° ΠΎΠΊΠΎΠ»ΠΎ 30 ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. ОсвСн Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ° Π²ΠΈΠ΄Π΅ΠΎ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ записи Π² Π±Π»ΠΎΠ³Π°, Π½Π°Π΄ 500. Π’ΠΎΠ²Π° Π΅ доста ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅Π»Π΅Π½ рСсурс. И Π°ΠΊΠΎ Π²ΠΈ интСрСсува Ρ‚ΠΎΠ·ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Π²ΠΈ ΠΏΡ€ΠΈΠΊΠ°Π½Π²Π°ΠΌ Π΄Π° сС Π²ΡŠΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ.

ΠŸΡ€Π΅Π΄ΠΈ бях ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π», профСсор, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Postgres. И ΠΌΠ½ΠΎΠ³ΠΎ сС Ρ€Π°Π΄Π²Π°ΠΌ, Ρ‡Π΅ ΠΌΠΎΠ³Π° сСга Π΄Π° Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ° ΠΎΠ½ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ съм ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΠ». Π’ΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° ΠΎΡ‚ Π½Π°ΠΉ-интСрСснитС ΠΌΠΈ ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. И Ρ‚Π°Π·ΠΈ прСзСнтация ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° 110 слайда. Π©Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ с прости Π½Π΅Ρ‰Π°, Π° към края Π΄ΠΎΠΊΠ»Π°Π΄ΡŠΡ‚ Ρ‰Π΅ станС всС ΠΏΠΎ-слоТСн ΠΈ ΠΏΠΎ-слоТСн.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΎΠ²Π° Π΅ доста нСприятСн Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€. Π—Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π΅ Π΅ Π½Π°ΠΉ-популярната Ρ‚Π΅ΠΌΠ°. ИскамС Π΄Π° ΠΈΠ·Ρ‡Π΅Π·Π½Π΅. Π’ΠΎΠ²Π° Π΅ ΠΊΠ°Ρ‚ΠΎ Π΄Π° Ρ…ΠΎΠ΄ΠΈΡˆ Π½Π° Π·ΡŠΠ±ΠΎΠ»Π΅ΠΊΠ°Ρ€.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

  1. Π—Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ Ρ…ΠΎΡ€Π°, ΠΊΠΎΠΈΡ‚ΠΎ работят с Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈ ΠΈΠΌΠ°Ρ‚ мноТСство процСси, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’Π΅ сС нуТдаят ΠΎΡ‚ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅. Π’.Π΅. днСс Ρ‰Π΅ Π²ΠΈ Π΄Π°ΠΌ основни знания Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ.
  2. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅. Π’ΠΎΠ²Π° Π΅ доста скучна част ΠΎΡ‚ прСзСнтацията, Π½ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° я Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅.
  3. Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅. Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΡ‡Π½Π° част.
  4. И послС Ρ‰Π΅ Π΄Π°Π΄Π΅ΠΌ някои ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ. И Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС доста слоТно Π·Π° Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

НСка Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡΡ‚Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ВСрминология Ρƒ нас Π΅ доста слоТна. Колко ΠΎΡ‚ вас знаят ΠΎΡ‚ΠΊΡŠΠ΄Π΅ Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΎΡ‚ΠΊΡŠΡ? Π”Π²Π°ΠΌΠ° Π΄ΡƒΡˆΠΈ. Π’ΠΎΠ²Π° Π΅ ΠΎΡ‚ ΠΈΠ³Ρ€Π°, която сС Π½Π°Ρ€ΠΈΡ‡Π° β€žΠšΠΎΠ»ΠΎΡΠ°Π»Π½ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ‰Π΅Ρ€Π°Ρ‚Π°β€œ. Π‘Π΅ΡˆΠ΅ тСкстова ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π½Π° ΠΈΠ³Ρ€Π° ΠΎΡ‚ 80-Ρ‚Π΅ Π³ΠΎΠ΄ΠΈΠ½ΠΈ, мисля. Π’Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° влСзСш Π² ΠΏΠ΅Ρ‰Π΅Ρ€Π°, Π² Π»Π°Π±ΠΈΡ€ΠΈΠ½Ρ‚ ΠΈ Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΡΡˆΠ΅, Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ бСшС ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ ΡΡŠΡ‰ΠΎΡ‚ΠΎ всСки ΠΏΡŠΡ‚. Π’Π°ΠΊΠ° помня Ρ‚Π°Π·ΠΈ ΠΈΠ³Ρ€Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Ρ‚ΡƒΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ наимСнования Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΠΎΠΉΠ΄ΠΎΡ…Π° ΠΏΡ€ΠΈ нас ΠΎΡ‚ Oracle. ИзползвамС Π³ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΡƒΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ съмнСния. НапримСр, SHARE UPDATE EXCLUSIVE. ПослС SHARE RAW EXCLUSIVE. ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ, Ρ‚Π΅Π·ΠΈ наимСнования Π½Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ ясни. Π©Π΅ сС ΠΎΠΏΠΈΡ‚Π°ΠΌΠ΅ Π΄Π° Π³ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ. Някои ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π΄ΡƒΠΌΠ°Ρ‚Π° β€žshareβ€œ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° – отдСлям. Някои ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ Π΄ΡƒΠΌΠ°Ρ‚Π° β€žexclusiveβ€œ β€” СксклузивСн. Π’ някои са Π΄ΡƒΠΈΡ‚Π΅ Π΄Π²Π΅ Π΄ΡƒΠΌΠΈ. Искам Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π° с Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ работят Ρ‚Π΅Π·ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И ΡΡŠΡ‰ΠΎ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ словото β€žΠ΄ΠΎΡΡ‚ΡŠΠΏβ€œ β€” access. И Π΄ΡƒΠΌΠ°Ρ‚Π° β€žrowβ€œ β€” Ρ€Π΅Π΄. Π’. Π΅. Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠ°, Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π² Postgres, Π·Π° съТалСниС Π½Π΅ ΠΌΠΎΠ³Π° Π΄Π° говоря Π·Π° Π½Π΅Π³ΠΎ Π² ΠΌΠΎΠ΅Ρ‚ΠΎ прСдставянС, Ρ‚ΠΎΠ²Π° Π΅ MVCC. Имам ΠΎΡ‚Π΄Π΅Π»Π½Π° прСзСнтация ΠΏΠΎ Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ° Π½Π° моя уСбсайт. И Π°ΠΊΠΎ смятатС, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ прСзСнтация Π΅ слоТна, Ρ‚ΠΎ MVCC Π΅, вСроятно, Π½Π°ΠΉ-слоТната. И Π°ΠΊΠΎ Π²ΠΈ интСрСсува, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° я Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π½Π° сайта. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π²ΠΈΠ΄Π΅ΠΎΡ‚ΠΎ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ – Ρ‚ΠΎΠ²Π° са ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Много Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° работят Π±Π΅Π· ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ. И Ρ‚ΡƒΠΊ ΠΈΠΌΠ°ΠΌΠ΅ обяснСниС ΠΊΠ°ΠΊΠ²ΠΎ Π΅ транзакция. Π’ Postgres ΠΈΠΌΠ° Π΄Π²Π΅ систСми Π·Π° нумСрация Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Π—Π½Π°ΠΌ, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ красиво Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘ΡŠΡ‰ΠΎ ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ слайдовСтС Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ доста слоТни Π·Π° Π²ΡŠΠ·ΠΏΡ€ΠΈΠ΅ΠΌΠ°Π½Π΅, Π·Π°Ρ‚ΠΎΠ²Π° Π½Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π½ΠΎ с Ρ‡Π΅Ρ€Π²Π΅Π½ цвят, ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅Π³ΠΎ трябва Π΄Π° ΠΎΠ±ΡŠΡ€Π½Π΅Ρ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

http://momjian.us/main/writings/pgsql/locking.sql

Π“Π»Π΅Π΄Π°ΠΌΠ΅. Π‘ Ρ‡Π΅Ρ€Π²Π΅Π½ цвят Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Ρ‚ Π½ΠΎΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° транзакцията. Π’ΡƒΠΊ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° функцията SELECT pg_back. Вя Π²Ρ€ΡŠΡ‰Π° моята транзакция ΠΈ ID Π½Π° Ρ‚Π°Π·ΠΈ транзакция.

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π°ΠΊΠΎ Π²ΠΈ харСсва Ρ‚Π°Π·ΠΈ прСзСнтация ΠΈ искатС Π΄Π° я стартиратС Π² Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅Ρ‚Π΅ ΠΏΠΎ Ρ‚Π°Π·ΠΈ Ρ€ΠΎΠ·ΠΎΠ²Π° Π²Ρ€ΡŠΠ·ΠΊΠ° ΠΈ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ SQL Π·Π° Ρ‚Π°Π·ΠΈ прСзСнтация. ΠœΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° я стартиратС Π² вашия PSQL ΠΈ цялата прСзСнтация Π²Π΅Π΄Π½Π°Π³Π° Ρ‰Π΅ сС появи Π½Π° Π΅ΠΊΡ€Π°Π½Π° Π²ΠΈ. Вя няма Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Ρ†Π²Π΅Ρ‚ΠΎΠ²Π΅, Π½ΠΎ ΠΏΠΎΠ½Π΅ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° я Π²ΠΈΠ΄ΠΈΠΌ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ Ρ‚ΠΎΠ·ΠΈ случай Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ID Π½Π° транзакцията. Π’ΠΎΠ²Π° Π΅ Π½ΠΎΠΌΠ΅Ρ€ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ смС ΠΌΡƒ присвоили. И ΠΈΠΌΠ° ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Ρ‚ΠΈΠΏ ID Π½Π° транзакция Π² Postgres, Π½Π°Ρ€Π΅Ρ‡Π΅Π½ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ ID Π½Π° транзакция.

И трябва Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‚ΠΎΠ²Π°. Много Π΅ Π²Π°ΠΆΠ½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ няма Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° Π² Postgres.

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ ID Π½Π° транзакция Π΅ ID Π½Π° транзакция, която Π½Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° постоянни стойности. НапримСр, Π°ΠΊΠΎ стартирам ΠΊΠΎΠΌΠ°Π½Π΄Π° SELECT, вСроятно няма Π΄Π° промСня Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, няма Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌ Π½ΠΈΡ‰ΠΎ. Π—Π°Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стартирам прост SELECT, Π½Π΅ Π΄Π°Π²Π°ΠΌΠ΅ Π½Π° Ρ‚Π°Π·ΠΈ транзакция постоянСн ID. Π”Π°Π²Π°ΠΌΠ΅ ΠΈ само Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ ID.

И Ρ‚ΠΎΠ²Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° производитСлността Π½Π° Postgres, подобрява Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° почистванС, Π·Π°Ρ‚ΠΎΠ²Π° виртуалният ID Π½Π° транзакцията сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ Π΄Π²Π΅ числа. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ число ΠΏΡ€Π΅Π΄ слСша Π΅ ID Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π°. А вдясно просто Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ брояч.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π—Π°Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ стартирам заявка, Ρ‚ΠΎΠΉ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ID Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Π΅ 2.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Ако стартирам сСрия ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ²Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Π±Ρ€ΠΎΡΡ‡ΡŠΡ‚ сС ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стартирам заявка. НапримСр, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стартирам заявка 2/10, 2/11, 2/12 ΠΈ Ρ‚.Π½.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π˜ΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Ρ‚ΡƒΠΊ ΠΈΠΌΠ° Π΄Π²Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ. Вляво Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ виртуалния ID Π½Π° транзакцията – 2/12. А вдясно ΠΈΠΌΠ°ΠΌΠ΅ постоянСн ID Π½Π° транзакцията. И Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ»Π΅ Π΅ ΠΏΡ€Π°Π·Π½ΠΎ. И Ρ‚Π°Π·ΠΈ транзакция Π½Π΅ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ. Π—Π°Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΉ присвоявам постоянСн ID Π½Π° транзакцията.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ стартирам ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° Π°Π½Π°Π»ΠΈΠ· (ANALYZE), ΡΡŠΡ‰Π°Ρ‚Π° заявка ΠΌΠΈ ΠΈΠ·Π΄Π°Π²Π° постоянСн ID Π½Π° транзакцията. Π’ΠΈΠΆΡ‚Π΅ ΠΊΠ°ΠΊ сС Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠ»ΠΎ. ΠŸΡ€Π΅Π΄ΠΈ нямах Ρ‚ΠΎΠ·ΠΈ ID, сСга сС появи.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Ρ‚Π°ΠΊΠ°, Ρ‚ΡƒΠΊ ΠΈΠΌΠ°ΠΌΠ΅ Π΄Ρ€ΡƒΠ³Π° заявка, Π΄Ρ€ΡƒΠ³Π° транзакция. Виртуалният Π½ΠΎΠΌΠ΅Ρ€ Π½Π° транзакцията Π΅ 2/13. И Π°ΠΊΠΎ поискам постоянСн ID Π½Π° транзакцията, ΠΏΡ€ΠΈ стартиранС Π½Π° заявката, Ρ‰Π΅ Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’Π°ΠΊΠ° Ρ‡Π΅, ΠΎΡ‚Π½ΠΎΠ²ΠΎ. ИмамС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ ID Π½Π° транзакцията ΠΈ постоянСн ID Π½Π° транзакцията. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Postgres.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° част. Π’ΡƒΠΊ Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² Postgres. Π’ΠΎΠ²Π° Π½Π΅ Π΅ особСно интСрСсно. ΠŸΠΎΡΠ»Π΅Π΄Π½Π°Ρ‚Π° част Ρ‰Π΅ бъдС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-интСрСсна. Но трябва Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ основнитС Π½Π΅Ρ‰Π°, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай няма Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ слСдва.

Π©Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· Ρ‚Π°Π·ΠΈ част, Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ всСки Ρ‚ΠΈΠΏ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. И Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΊΠ°ΠΊ сС Π·Π°Π΄Π°Π²Π°Ρ‚, ΠΊΠ°ΠΊ работят, Ρ‰Π΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° някои заявки, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅, Π·Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° Π² Postgres.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π—Π° Π΄Π° създадСм заявка ΠΈ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ сС случва Π² Postgres, трябва Π΄Π° ΠΈΠ·Π΄Π°Π΄Π΅ΠΌ заявка Π² систСмния ΠΈΠ·Π³Π»Π΅Π΄. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π² Ρ‡Π΅Ρ€Π²Π΅Π½ΠΎ Π΅ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π°Π½ pg_lock. Pg_lock Π΅ систСмна Ρ‚Π°Π±Π»ΠΈΡ†Π°, която Π½ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊΠ²ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² Postgres.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΈ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° pg_lock сам ΠΏΠΎ сСбС си, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ доста слоТно. Π—Π°Ρ‚ΠΎΠ²Π° ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… ΠΈΠ·Π³Π»Π΅Π΄, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° pg_locks. И Ρ‚ΠΎΠΉ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° изпълнява Π·Π° ΠΌΠ΅Π½ извСстна Ρ€Π°Π±ΠΎΡ‚Π°, която ΠΌΠΈ позволява ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π°. Π’.Π΅. Ρ‚ΠΎΠΉ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° ΠΌΠΎΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, моята собствСна сСсия ΠΈ Ρ‚.Π½. Π’ΠΎΠ²Π° Π΅ просто стандартСн SQL ΠΈ Ρ‚ΠΎΠΉ позволява ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ сС случва.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΈΠ·Π³Π»Π΅Π΄ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡˆΠΈΡ€ΠΎΠΊ, Π·Π°Ρ‚ΠΎΠ²Π° ΠΌΠΈ сС Π½Π°Π»Π°Π³Π° Π΄Π° създам Π²Ρ‚ΠΎΡ€ΠΈ – lockview2.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан И Ρ‚ΠΎΠΉ ΠΌΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π° ΠΎΡ‰Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. И ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π° останалитС ΠΊΠΎΠ»ΠΎΠ½ΠΈ. Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ слоТно, Π·Π°Ρ‚ΠΎΠ²Π° сС ΠΎΠΏΠΈΡ‚Π°Ρ… Π΄Π° Π³ΠΎ прСдставя ΠΏΠΎ Π½Π°ΠΉ-простия Π½Π°Ρ‡ΠΈΠ½.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’Π°ΠΊΠ° Ρ‡Π΅, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°, която сС Π½Π°Ρ€ΠΈΡ‡Π° Lockdemo. И ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ Ρ‚Π°ΠΌ Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄. Π’ΠΎΠ²Π° Π΅ Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°. И Ρ‰Π΅ създадСм сСкции, Π·Π° Π΄Π° Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’Π°ΠΊΠ° Ρ‡Π΅, Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄, Π΅Π΄Π½Π° ΠΊΠΎΠ»ΠΎΠ½Π°. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Ρ‚ΠΈΠΏ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° сС Π½Π°Ρ€ΠΈΡ‡Π° ACCESS SHARE. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎ рСстриктивната Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π½Π΅ Π²Π»ΠΈΠ·Π° Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

Ако искамС Сксплицитно Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π°, изпълнявамС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«lock tableΒ». Π’ΠΎΠ²Π° явно Ρ‰Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°, Ρ‚.Π΅. Π² Ρ€Π΅ΠΆΠΈΠΌ ACCESS SHARE изпълнявамС lock table. И Π°ΠΊΠΎ стартирам PSQL във Ρ„ΠΎΠ½ΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ, Ρ‚Π°ΠΊΠ° стартирам Π²Ρ‚ΠΎΡ€Π° сСсия ΠΎΡ‚ моята ΠΏΡŠΡ€Π²Π° сСсия. Какво Ρ‰Π΅ направя Ρ‚ΡƒΠΊ? ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌ към Π΄Ρ€ΡƒΠ³Π° сСсия ΠΈ ΠΉ ΠΊΠ°Π·Π²Π°ΠΌ Β«ΠΏΠΎΠΊΠ°ΠΆΠΈ ΠΌΠΈ lockview Π·Π° Ρ‚Π°Π·ΠΈ заявка». И Ρ‚ΡƒΠΊ ΠΈΠΌΠ°ΠΌ AccessShareLock Π² Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°. Π’ΠΎΠ²Π° Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ поисках. И Ρ‚ΠΎΠΉ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° Π΅ присвоСна. Много просто.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΎΡ‚ΠΎ, Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π°, Ρ‚Π°ΠΌ няма Π½ΠΈΡ‰ΠΎ. Π’Π΅ са ΠΏΡ€Π°Π·Π½ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Ако изпълня ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«SELECTΒ», Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠΌΠΏΠ»ΠΈΡ†ΠΈΡ‚Π΅Π½ (явСн) Π½Π°Ρ‡ΠΈΠ½ Π·Π° заявяванС Π½Π° AccessShareLock. Π—Π°Ρ‚ΠΎΠ²Π° освобоТдавам Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΈ изпълнявам Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΈ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π²Ρ€ΡŠΡ‰Π° няколко Ρ€Π΅Π΄Π°. Π’ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ AccessShareLock. Π’Π°ΠΊΠ° SELECT ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° AccessShareLock Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. И Ρ‚ΠΎΠΉ Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ€Π° практичСски с Π½ΠΈΡ‰ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° с ниско Π½ΠΈΠ²ΠΎ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Какво Ρ‰Π΅ станС, Π°ΠΊΠΎ изпълня SELECT ΠΈ ΠΈΠΌΠ°ΠΌ Ρ‚Ρ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ? ΠŸΡ€Π΅Π΄ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ… само Π΅Π΄Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, сСга изпълнявам Ρ‚Ρ€ΠΈ: pg_class, pg_namespace ΠΈ pg_attribute.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И сСга, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ, Π²ΠΈΠΆΠ΄Π°ΠΌ 9 AccessShareLocks Π² Ρ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ. Π—Π°Ρ‰ΠΎ? Биньо Π΅ ΠΎΡ†Π²Π΅Ρ‚Π΅Π½ΠΎ Ρ‚Ρ€ΠΈΡ‚Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ: pg_attribute, pg_class, pg_namespace. Но ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ всички индСкси, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΡ€Π΅Π· Ρ‚Π΅Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΡΡŠΡ‰ΠΎ ΠΈΠΌΠ°Ρ‚ AccessShareLock.

И Ρ‚ΠΎΠ²Π° Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, която практичСски Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΠ²Π° с Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ, Π΅ просто Π΄Π° Π½Π΅ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ я ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅. Има смисъл. Π’.Π΅. Π°ΠΊΠΎ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, тя Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΈΠ·Ρ‡Π΅Π·Π²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Π·Π°Ρ‚ΠΎΠ²Π° AccessShare – Ρ‚ΠΎΠ²Π° Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° с ниско Π½ΠΈΠ²ΠΎ, която Π½ΠΈ ΠΊΠ°Π·Π²Π° Β«Π½Π΅ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΉΡ‚Π΅ Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ работя». Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, Ρ‚ΠΎΠ²Π° Π΅ всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ROW SHARE – Ρ‚ΠΎΠ²Π° Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, която Π΅ ΠΌΠ°Π»ΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π”Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. SELECT ROW SHARE Π΅ Π½Π°Ρ‡ΠΈΠ½ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° всСки Ρ€Π΅Π΄ ΠΏΠΎΠΎΡ‚Π΄Π΅Π»Π½ΠΎ. Π’Π°ΠΊΠ° Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° ΠΈΠ»ΠΈ промСня, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π³ΠΈ Π³Π»Π΅Π΄Π°ΠΌΠ΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТианВака, ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΡ€Π°Π²ΠΈ SHARE LOCK? Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ ID Π½Π° транзакцията Π΅ 681 Π·Π° SELECT. И Ρ‚ΠΎΠ²Π° Π΅ интСрСсно. Какво сС Π΅ случило Ρ‚ΡƒΠΊ? ΠŸΡŠΡ€Π²ΠΈΡΡ‚ ΠΏΡŠΡ‚ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½ΠΎΠΌΠ΅Ρ€ Π² ΠΏΠΎΠ»Π΅Ρ‚ΠΎ "Lock". Π’Π·Π΅ΠΌΠ°ΠΌΠ΅ ID Π½Π° транзакцията ΠΈ Ρ‚ΠΎΠΉ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ я Π±Π»ΠΎΠΊΠΈΡ€Π° Π² СксклузивСн Ρ€Π΅ΠΆΠΈΠΌ. Всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ, Π΅, Ρ‡Π΅ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌ Ρ€Π΅Π΄, ΠΊΠΎΠΉΡ‚ΠΎ тСхничСски Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ някъдС Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Но Π½Π΅ ΠΊΠ°Π·Π²Π° къдС Ρ‚ΠΎΡ‡Π½ΠΎ. По-късно Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΡƒΠΊ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, Ρ‡Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ‚ нас.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’Π°ΠΊΠ°, Сксклузивната Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ (ясно) ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π΅ Сксклузивна. И ΡΡŠΡ‰ΠΎ Π°ΠΊΠΎ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Ρ‚Π΅ Ρ€Π΅Π΄ Π² Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°, Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΈ Ρ‰Π΅ сС случи, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

SHARE EXCLUSIVE – Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎ-дълга Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΎΠ²Π° (ANALYZE) Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, която Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

SHARE LOCK – ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌ share.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ индСкс. И Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ SHARE LOCK, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ част ΠΎΡ‚ тях. Π’ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΈ поставя Π½Π° нСя Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° SHARE LOCK.

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ SHARE LOCK Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Ρ…ΠΎΡ€Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ‡Π΅Ρ‚Π°Ρ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Π½ΠΎ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° я ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°. И Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π° сС случва, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ индСкс.

Ако създам ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ индСкс concurrently, Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠΌΠ°ΠΌ Π΄Ρ€ΡƒΠ³ Ρ‚ΠΈΠΏ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π·Π°Ρ‰ΠΎΡ‚ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° concurrently индСкси намалява изискванСто Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. И Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π½ΠΎΡ€ΠΌΠ°Π»Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ индСкс, ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ Ρ‰Π΅ прСдотвратя записванСто Π² индСкса Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΎΡ‚ΠΎ създаванС. Ако ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ concurrently индСкс, Ρ‚ΠΎ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π΄Ρ€ΡƒΠ³ Ρ‚ΠΈΠΏ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

SHARE ROW EXCLUSIVE – ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΎ (ясно).

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Или ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° създадСм ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚.Π΅. Π΄Π° Π²Π·Π΅ΠΌΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ случай, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ тя Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

EXCLUSIVE Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π΄Ρ€ΡƒΠ³ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° промСня Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΡƒΠΊ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ACCESS EXCLUSIVE, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ²Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. НапримСр, Π°ΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ CLUSTER table, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° записва Ρ‚Π°ΠΌ. И тя Π±Π»ΠΎΠΊΠΈΡ€Π° Π½Π΅ само самата Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π½ΠΎ ΠΈ индСкси ΡΡŠΡ‰ΠΎ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΎΠ²Π° Π΅ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° страница Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° ACCESS EXCLUSIVE, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Вя Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ доста интСрСсно.

Π’ΠΎΠ²Π° Π΅ цялата основна информация, която исках Π΄Π° прСдоставя. Π“ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ Π·Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π·Π° постоянни ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π΅Π³Π° Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ ΠΏΡ€Π΅Π· ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. Π’ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-интСрСсната част. Π©Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ интСрСсни случаи. И моята Π·Π°Π΄Π°Ρ‡Π° Π² Ρ‚Π°Π·ΠΈ прСзСнтация Π΅ Π΄Π° Π²ΠΈ Π΄Π°ΠΌ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° Ρ‚ΠΎΠ²Π°, ΠΊΠ°ΠΊΠ²ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΏΡ€Π°Π²ΠΈ Postgres, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΠΏΠΈΡ‚Π²Π° Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π΅Ρ‰Π°. Π‘Ρ‚Ρ€ΡƒΠ²Π° ΠΌΠΈ сС, Ρ‡Π΅ Ρ‚ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ ΡƒΠΌΠ΅Π΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ части.

НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ с Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΈ с Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. ΠšΠΎΠ³Π°Ρ‚ΠΎ вмъкна Π½Π΅Ρ‰ΠΎ, ΠΌΠΈ сС ΠΏΠΎΠΊΠ°Π·Π²Π° ExclusiveLock, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° транзакция ΠΈ ExclusiveLock Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

А ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ сС случи, Π°ΠΊΠΎ вмъкна ΠΎΡ‰Π΅ Π΄Π²Π° Ρ€Π΅Π΄Π°? И сСга Π² Π½Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ Ρ€Π΅Π΄Π°. Π’ΠΌΡŠΠΊΠ½Π°Ρ… Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ… Ρ‚ΠΎΠ²Π° Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π°. И Π°ΠΊΠΎ вмъкна ΠΎΡ‰Π΅ Π΄Π²Π° Ρ€Π΅Π΄Π°, ΠΊΠ°ΠΊΠ²ΠΎ Π΅ странното Ρ‚ΡƒΠΊ? Има странност, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ… Ρ‚Ρ€ΠΈ Ρ€Π΅Π΄Π° Π² Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°, Π½ΠΎ всС ΠΎΡ‰Π΅ ΠΈΠΌΠ°ΠΌ Π΄Π²Π° Ρ€Π΅Π΄Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. И Ρ‚ΠΎΠ²Π° ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Π΅ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° Postgres.

Много Ρ…ΠΎΡ€Π° мислят, Ρ‡Π΅ Π°ΠΊΠΎ Π² Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ 100 Ρ€Π΅Π΄Π°, Ρ‚ΠΎ Ρ‰Π΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° 100 записи Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Ако Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌ Π²Π΅Π΄Π½Π°Π³Π° 1 000 Ρ€Π΅Π΄Π°, Ρ‚ΠΎ Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ ΠΌΠΈ трябват 1 000 Ρ‚Π°ΠΊΠΈΠ²Π° заявки. И Π°ΠΊΠΎ трябва Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ ΠΈΠ»ΠΈ ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄. Но Π°ΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Π°ΠΊΠ°, няма Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅. Ако стС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ систСма, която създава записи Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π·Π° всСки ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ€Π΅Π΄, Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ слоТно. Π—Π°Ρ‰ΠΎΡ‚ΠΎ трябва Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΠ° Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, която ΠΌΠΎΠΆΠ΅ Π΄Π° сС прСнасити, Π½ΠΎ Postgres Π½Π΅ ΠΏΡ€Π°Π²ΠΈ Ρ‚Π°ΠΊΠ°.

На Ρ‚ΠΎΠ·ΠΈ слайд Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ, Ρ‡Π΅ Ρ‚ΡƒΠΊ ясно сС дСмонстрира, Ρ‡Π΅ ΠΈΠΌΠ° ΠΎΡ‰Π΅ Π΅Π΄Π½Π° систСма, която Ρ€Π°Π±ΠΎΡ‚ΠΈ Π²ΡŠΡ‚Ρ€Π΅ Π² MVCC, която Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅. Π—Π°Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅, Postgres Π½Π΅ създава ΠΌΠΈΠ»ΠΈΠ°Ρ€Π΄ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. И Ρ‚ΠΎΠ²Π° ΠΎΠΊΠ°Π·Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€ΠΎ влияниС Π²ΡŠΡ€Ρ…Ρƒ производитСлността.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Какво Ρ‰Π΅ ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ? Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° обновявам Ρ€Π΅Π΄, ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅, Ρ‡Π΅ Ρ‚ΠΎΠΉ Π²Π΅Π΄Π½Π°Π³Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ΠΎΠΉ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°, Π½ΠΎ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΈ индСкса. И Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π° индСкса, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΈΠΌΠ° ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ограничСния Π·Π° Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°. ИскамС Π΄Π° смС сигурни, Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π½Π΅ Π³ΠΎ промСня, Π·Π°Ρ‚ΠΎΠ²Π° Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

А ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ сС случи, Π°ΠΊΠΎ искам Π΄Π° обновя Π΄Π²Π° Ρ€Π΅Π΄Π°? И Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ‡Π΅ Ρ‚ΠΎΠΉ сС Π΄ΡŠΡ€ΠΆΠΈ ΠΏΠΎ ΡΡŠΡ‰ΠΈΡ Π½Π°Ρ‡ΠΈΠ½. ΠŸΡ€Π°Π²ΠΈΠΌ Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ обновлСния, Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΡΡŠΡ‰ΠΎΡ‚ΠΎ количСство Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅.

Ако Π²ΠΈ интСрСсува ΠΊΠ°ΠΊ Postgres Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ, трябва Π΄Π° ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅ ΠΌΠΎΠΈΡ‚Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ Π·Π° MVCC, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Postgres Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° Ρ€Π΅Π΄ΠΎΠ²Π΅Ρ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ промСня. И Postgres ΠΈΠΌΠ° Π½Π°Ρ‡ΠΈΠ½, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ, Π½ΠΎ Π½Π΅ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, Π° Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ Π½Π° ΠΏΠΎ-ниско ΠΈ ΠΏΠΎ-Сфикасно Π½ΠΈΠ²ΠΎ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

А ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ станС, Π°ΠΊΠΎ искам Π΄Π° изтрия Π½Π΅Ρ‰ΠΎ? Ако изтрия, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ ΠΈ всС ΠΎΡ‰Π΅ ΠΈΠΌΠ°ΠΌ ΠΌΠΎΠΈΡ‚Π΅ Π΄Π²Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π΄ΠΎΡ€ΠΈ ΠΈ Π΄Π° искам Π΄Π° изтрия всичкитС ΠΈΠΌ, Ρ‚Π΅ всС ΠΎΡ‰Π΅ Ρ‰Π΅ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°Ρ‚.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π°ΠΊΠΎ искам Π΄Π° вмъкна 1 000 Ρ€Π΅Π΄Π°, Π° слСд Ρ‚ΠΎΠ²Π° ΠΈΠ»ΠΈ Π΄Π° изтрия, ΠΈΠ»ΠΈ Π΄Π° добавя 1 000 Ρ€Π΅Π΄Π°, Ρ‚ΠΎ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ Ρ€Π΅Π΄ΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ добавям ΠΈΠ»ΠΈ промСням, Π½Π΅ сС записват Ρ‚ΡƒΠΊ. Π’Π΅ сС записват Π½Π° ΠΏΠΎ-ниско Π½ΠΈΠ²ΠΎ Π²ΡŠΡ‚Ρ€Π΅ Π² самия Ρ€Π΅Π΄. И ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° лСкцията Π·Π° MVCC Π³ΠΎΠ²ΠΎΡ€ΠΈΡ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° Ρ‚ΠΎΠ²Π°. Но Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈΡ‚Π΅, Π΄Π° стС сигурни, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° Π½ΠΈΠ²ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈ Ρ‡Π΅ Ρ‚ΡƒΠΊ Π½Π΅ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ ΠΊΠ°ΠΊ сС записват ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ€Π΅Π΄ΠΎΠ²Π΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

А ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Π·Π° Сксплицитната Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°?

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Ако натисна "ΠΎΠ±Π½ΠΎΠ²ΠΈ", Ρ‚ΠΎΠ³Π°Π²Π° ΠΈΠΌΠ°ΠΌ Π΄Π²Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΈ Ρ€Π΅Π΄Π°. И Π°ΠΊΠΎ Π³ΠΈ ΠΌΠ°Ρ€ΠΊΠΈΡ€Π°ΠΌ всички ΠΈ натисна "ΠΎΠ±Π½ΠΎΠ²ΠΈ навсякъдС", всС ΠΏΠ°ΠΊ оставам с Π΄Π²Π΅ записи Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

НС създавамС ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ записи Π·Π° всСки ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ€Π΅Π΄. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ³Π°Π²Π° производитСлността ΠΏΠ°Π΄Π°, ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π² нСприятна ситуация.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π²Π°ΠΆΠΈ, Π°ΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ shared, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ Π·Π° всички 30 ΠΏΡŠΡ‚ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°ΠΌΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°ΠΌΠ΅ всичко, послС ΠΎΡ‚Π½ΠΎΠ²ΠΎ вмъквамС Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ Π² Postgres, Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ извСстно ΠΈ ΠΆΠ΅Π»Π°Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ – Ρ‚ΠΎΠ²Π° Π΅, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ update ΠΈΠ»ΠΈ select. И ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. И select Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° update ΠΈ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΡ‚ΠΎ. КазвамС Π½Π° чСтящия Π΄Π° Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΏΠΈΡˆΠ΅Ρ‰ΠΈΡ, Π° ΠΏΠΈΡˆΠ΅Ρ‰ΠΈΡΡ‚ Π΄Π° Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° чСтящия.

Π©Π΅ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΎΠ²Π°. Π‘Π΅Π³Π° Ρ‰Π΅ направя ΠΈΠ·Π±ΠΎΡ€. ПослС Ρ‰Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ INSERT. И слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ – 694. Π©Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ID Π½Π° транзакцията, която Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠ»Π° Ρ‚ΠΎΠ²Π° вмъкванС. И Ρ‚ΠΎΠ²Π° Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π°ΠΊΠΎ сСга ΠΏΠΎΠ³Π»Π΅Π΄Π½Π° моя Π±Π΅ΠΊΠ΅Π½Π΄ ID, Ρ‚ΠΎ стана – 695.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И ΠΌΠΎΠ³Π° Π΄Π° видя, Ρ‡Π΅ 695 сС появява Π² моята Ρ‚Π°Π±Π»ΠΈΡ†Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π°ΠΊΠΎ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΡƒΠΊ Ρ‚Π°ΠΊΠ°, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌ Π΄Ρ€ΡƒΠ³ случай. Π’ Ρ‚ΠΎΠ·ΠΈ случай 695 – Π΅ Сксклузивна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π° ΠΏΡ€ΠΈ update ΠΈΠΌΠ°ΠΌΠ΅ ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ тях няма ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π½Π΅ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎ.

И ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅, Ρ‡Π΅ ΠΎΡ‚Π³ΠΎΡ€Π΅ – Ρ‚ΠΎΠ²Π° Π΅ ShareLock, Π° ΠΎΡ‚Π΄ΠΎΠ»Ρƒ – ExclusiveLock. И Π΄Π²Π΅Ρ‚Π΅ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ са сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ.

И трябва Π΄Π° Ρ‡ΡƒΠ΅Ρ‚Π΅ ΠΌΠΎΠ΅Ρ‚ΠΎ прСдставянС Π² MVCC, Π·Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ²Π° става. Но Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠ»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ Π½Π° Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Ρ‚ΠΎΠ²Π° Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Ρ‚.Π΅. Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚Π΅ SELECT ΠΈ UPDATE.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

НСка Π½ΡƒΠ»ΠΈΡ€Π°ΠΌΠ΅ ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π΅Π΄Π½Π° опСрация.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Ако ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° стартиратС Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²Π° update Π½Π° ΡΡŠΡ‰ΠΈΡ Ρ€Π΅Π΄, Ρ‚ΠΎ Ρ‰Π΅ бъдС Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ΠΎ. И ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅, ΠΊΠ°Π·Π²Π°Ρ…, Ρ‡Π΅ чСтящият Π½Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΏΠΈΡˆΠ΅Ρ‰ΠΈΡ, Π° ΠΏΠΈΡˆΠ΅Ρ‰ΠΈΡΡ‚ Π±Π»ΠΎΠΊΠΈΡ€Π° чСтящия, Π½ΠΎ Π΅Π΄ΠΈΠ½ писатСл Π±Π»ΠΎΠΊΠΈΡ€Π° другия писатСл. Π’.Π΅. Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π΄Π²Π°ΠΌΠ° Π΄ΡƒΡˆΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° обновяват Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Ρ€Π΅Π΄. Врябва Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°Ρ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Сдиният ΠΎΡ‚ тях Π·Π°Π²ΡŠΡ€ΡˆΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π·Π° Π΄Π° ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°ΠΌ Ρ‚ΠΎΠ²Π°, Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Lockdemo. И Ρ‰Π΅ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄. На транзакция 698.

ΠžΠ±Π½ΠΎΠ²ΠΈΡ…ΠΌΠ΅ Π³ΠΎ Π΄ΠΎ 2. 699 – Ρ‚ΠΎΠ²Π° Π΅ ΠΏΡŠΡ€Π²ΠΎΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅. И Ρ‚ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΠ»ΠΈ Π΅ Π² Ρ‡Π°ΠΊΠ°Ρ‰Π° транзакция ΠΈ ΠΎΡ‡Π°ΠΊΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½ΠΈΠ΅ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΠΌ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Но ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ – 2/51 – Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΡŠΡ€Π²Π° транзакция, Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΡŠΡ€Π²Π° сСсия. 3/112 – Ρ‚ΠΎΠ²Π° Π΅ Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° заявка, която сС появи ΠΎΡ‚Π³ΠΎΡ€Π΅ ΠΈ която ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Ρ‚Π°Π·ΠΈ стойност Π½Π° 3. И Π°ΠΊΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡ‚Π΅, горният Π±Π»ΠΎΠΊΠΈΡ€Π° сам сСбС си, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ 699. Но 3/112 Π½Π΅ прСдостави Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Π’ ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° Lock_mode пишС, Ρ‡Π΅ ΠΎΡ‡Π°ΠΊΠ²Π°. Π’ΠΎΠΉ ΠΎΡ‡Π°ΠΊΠ²Π° 699. И Π°ΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅, къдС Π΅ 699, Ρ‚ΠΎΠΉ Π΅ ΠΏΠΎ-Π³ΠΎΡ€Π΅. И ΠΊΠ°ΠΊΠ²ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΡŠΡ€Π²Π°Ρ‚Π° сСсия? Вя създадС Сксклузивна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° собствСния си Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π΅Π½ ID. Π’ΠΎΠ²Π° Π΅ Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Postgres Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ. Π’ΠΎΠΉ Π±Π»ΠΎΠΊΠΈΡ€Π° собствСния Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π΅Π½ ID. И Π°ΠΊΠΎ искатС Π΄Π° Ρ‡Π°ΠΊΠ°Ρ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ някой ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΠΈ, трябва Π΄Π° Ρ‡Π°ΠΊΠ°Ρ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ° ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Ρ‰Π° транзакция. И Π·Π°Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ странСн Ρ€Π΅Π΄.

Π”Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΎΡ‚Π½ΠΎΠ²ΠΎ. ΠžΡ‚Π»ΡΠ²ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ процСсингово ID. Π’ΡŠΠ² Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° ΠΊΠΎΠ»ΠΎΠ½Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΎ ID Π½Π° транзакцията, Π° Π² Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ lock_type. Какво ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Ρ‚ΠΎΠ²Π°? По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, тя ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π° транзакционния ID. Но Π·Π°Π±Π΅Π»Π΅ΠΆΠ΅Ρ‚Π΅, Ρ‡Π΅ във всички Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ пишС relation. И Π·Π°Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°Ρ‚Π΅ Π΄Π²Π° Π²ΠΈΠ΄Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Има Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° relation. А ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° transactionid, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ сами, Ρ‚ΠΎΠ²Π° Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС случва Π² ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄ ΠΈΠ»ΠΈ Π² самия Π½ΠΈΠ·, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ transationid, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‡Π°ΠΊΠ°ΠΌΠ΅ 699 Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ опСрацията си.

Π“Π»Π΅Π΄Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Ρ‚ΡƒΠΊ. И Ρ‚ΡƒΠΊ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сС случват Π΄Π²Π΅ Π½Π΅Ρ‰Π°. Π’ΠΈΠ΅ Π³Π»Π΅Π΄Π°Ρ‚Π΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° ΠΏΠΎ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π΅Π½ ID Π² ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄, която Π±Π»ΠΎΠΊΠΈΡ€Π° сама сСбС си. И тя Π±Π»ΠΎΠΊΠΈΡ€Π° сама сСбС си, Π·Π° Π΄Π° Π½Π°ΠΊΠ°Ρ€Π° Ρ…ΠΎΡ€Π°Ρ‚Π° Π΄Π° Ρ‡Π°ΠΊΠ°Ρ‚.

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ 6-ия Ρ€Π΅Π΄, Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ ΡΡŠΡ‰ΠΈΡΡ‚ запис, ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ€Π²ΠΈΡ. И Π·Π°Ρ‚ΠΎΠ²Π° транзакция 699 сС Π±Π»ΠΎΠΊΠΈΡ€Π°. 700 ΡΡŠΡ‰ΠΎ сС самоблокира. И послС Π² долния Ρ€Π΅Π΄ Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ Ρ‡Π°ΠΊΠ°ΠΌΠ΅ 699 Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ опСрацията си.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π² lock_type, tuple Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ числа.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ 0/10. И Ρ‚ΠΎΠ²Π° Π΅ Π½ΠΎΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата, ΠΈ ΡΡŠΡ‰ΠΎ offset Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ Ρ€Π΅Π΄.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅, Ρ‡Π΅ става 0/11, ΠΊΠΎΠ³Π°Ρ‚ΠΎ обновявамС.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Но Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ – Ρ‚ΠΎΠ²Π° Π΅ 0/10, Π·Π°Ρ‰ΠΎΡ‚ΠΎ сС случва Ρ‡Π°ΠΊΠ°Π½Π΅ Π½Π° Ρ‚Π°Π·ΠΈ опСрация. ИмамС Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Ρ€Π΅Π΄ΡŠΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‡Π°ΠΊΠ°ΠΌ, Π·Π° Π΄Π° бъдС ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈΠΌ ΠΈ натиснСм commit, ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ актуализацията ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ слСдното. Вранзакция 700 Π΅ СдинствСната Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, която Π½Π΅ Ρ‡Π°ΠΊΠ° Π½ΠΈΠΊΠΎΠ³ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π΅ Π·Π°ΠΊΠΎΠΌΠΈΡ‚Π²Π°Π½Π°. Вя просто Ρ‡Π°ΠΊΠ° Π΄Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ транзакцията. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ 699 Π·Π°Π²ΡŠΡ€ΡˆΠΈ, Π²Π΅Ρ‡Π΅ Π½Π΅ Ρ‡Π°ΠΊΠ°ΠΌΠ΅ Π½ΠΈΡ‰ΠΎ. И сСга транзакцията 700 ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ всичко Π΅ Π½Π°Ρ€Π΅Π΄, Ρ‡Π΅ ΠΈΠΌΠ° всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ във всички Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π·Π° Π΄Π° услоТним всичко, създавамС ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ view, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚ΠΎΠ·ΠΈ ΠΏΡŠΡ‚ Ρ‰Π΅ Π½ΠΈ прСдостави йСрархия. НС ΠΎΡ‡Π°ΠΊΠ²Π°ΠΌ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚ΠΎΠ·ΠΈ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅. Но Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π½ΠΈ Π΄Π°Π΄Π΅ ΠΏΠΎ-ясна прСдстава Π·Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС случва.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΎΠ²Π° Π΅ рСкурсивСн view, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° ΠΈ ΠΎΡ‰Π΅ Π΅Π΄Π½Π° сСкция. И слСд Ρ‚ΠΎΠ²Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ сС ΡΡŠΠ±ΠΈΡ€Π° всичко. НСка Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Какво Ρ‰Π΅ станС, Π°ΠΊΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Ρ€ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΊΠ°ΠΆΠ΅ΠΌ, Ρ‡Π΅ Ρ€Π΅Π΄ΡŠΡ‚ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ 3. И Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ 3 Π½Π° 4.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π΅Ρ‚ΠΎ Π½ΠΈ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ 4. И транзакционният ID 702.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π°Π· промСням 4 Π½Π° 5. А 5 Π½Π° 6, Π° 6 Π½Π° 7. И опашвам Ρ€Π΅Π΄ΠΈΡ†Π° Ρ…ΠΎΡ€Π°, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Ρ‡Π°ΠΊΠ°Ρ‚ Π΄Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ Ρ‚Π°Π·ΠΈ Π΅Π΄Π½Π° транзакция.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И всичко става ясно. Какъв Π΅ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Ρ€Π΅Π΄? Π’ΠΎΠ²Π° Π΅ 702. Π’ΠΎΠ²Π° Π΅ транзакционният ID, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅ Ρ‚ΠΎΠ²Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. А ΠΊΠ°ΠΊΠ²ΠΎ ΠΈΠΌΠ°ΠΌ написано Π² ΠΊΠΎΠ»ΠΎΠ½Π°Ρ‚Π° Granted? Имам ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ f. Π’ΠΎΠ²Π° са ΠΌΠΎΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ (5, 6, 7) Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‡Π°ΠΊΠ°ΠΌΠ΅ Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ транзакционният ID 702. Π’Π°ΠΌ ΠΈΠΌΠ°ΠΌΠ΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° транзакционния ID. И Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠΌΠ°ΠΌΠ΅ 5 Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ID.

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ 704, 705, Ρ‚Π°ΠΌ ΠΎΡ‰Π΅ Π½ΠΈΡ‰ΠΎ Π½Π΅ Π΅ написано, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚Π΅ всС ΠΎΡ‰Π΅ Π½Π΅ знаят ΠΊΠ°ΠΊΠ²ΠΎ сС случва. Π’Π΅ просто ΠΏΠΈΡˆΠ°Ρ‚, Ρ‡Π΅ нямат прСдстава ΠΊΠ°ΠΊΠ²ΠΎ става. И просто Ρ‰Π΅ заспят, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‡Π°ΠΊΠ°Ρ‚ някой Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ ΠΈ Π΄Π° Π³ΠΈ ΡΡŠΠ±ΡƒΠ΄ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС появи Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° промСнят Ρ€Π΅Π΄Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’Π°ΠΊΠ° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°. Ясно Π΅, Ρ‡Π΅ всички Ρ‡Π°ΠΊΠ°Ρ‚ 12-ия Ρ€Π΅Π΄.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ видяхмС Ρ‚ΡƒΠΊ. Π•Ρ‚ΠΎ 0/12.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Ρ‚Π°ΠΊΠ°, слСд ΠΊΠ°Ρ‚ΠΎ ΠΏΡŠΡ€Π²Π°Ρ‚Π° транзакция бъдС ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ йСрархията. И сСга всичко става ясно. Всички Ρ‚Π΅ стават чисти. И Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚Π΅ всС ΠΎΡ‰Π΅ Ρ‡Π°ΠΊΠ°Ρ‚.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ сС случва. 702 записва. И сСга 703 ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π΅Π΄Π°, Π° послС 704 Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° Ρ‡Π°ΠΊΠ°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ 703 запишС. И 705 ΡΡŠΡ‰ΠΎ Π³ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°. И ΠΊΠΎΠ³Π°Ρ‚ΠΎ всичко ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ, Ρ‚Π΅ самитС сС освобоТдават. Искам Π΄Π° подчСртая, Ρ‡Π΅ всички сС ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Ρ‚ Π² опашка. Много Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° ситуацията с Π·Π°Π΄Ρ€ΡŠΡΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ всички Ρ‡Π°ΠΊΠ°Ρ‚ ΠΏΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠ»Π°. ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΠΊΠΎΠ»Π° спира ΠΈ всички сС ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Ρ‚ Π² дълга линия. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° тя сС Π΄Π²ΠΈΠΆΠΈ, слСдващата ΠΊΠΎΠ»Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ Π½Π°ΠΏΡ€Π΅Π΄ ΠΈ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ своята Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ Ρ‚.Π½.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π°ΠΊΠΎ Ρ‚ΠΎΠ²Π° Π²ΠΈ сС Π΅ сторило Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ слоТно, сСга Ρ‰Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° deadlocks. НС Π·Π½Π°ΠΌ ΠΊΠΎΠΉ ΠΎΡ‚ вас Π΅ срСщал с тях. Π’ΠΎΠ²Π° Π΅ доста разпространСн ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ. Но deadlocks Π΅ случаят, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅Π΄Π½Π° сСсия Ρ‡Π°ΠΊΠ°, Π·Π° Π΄Π° изпълни Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³Π° сСсия трябва Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ. Π’ ΡΡŠΡ‰ΠΈΡ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π΄Ρ€ΡƒΠ³Π°Ρ‚Π° сСсия Ρ‡Π°ΠΊΠ°, Π·Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ ΠΏΡŠΡ€Π²Π°Ρ‚Π° сСсия Π½Π΅Ρ‰ΠΎ.

НапримСр, Π°ΠΊΠΎ Иван ΠΊΠ°ΠΆΠ΅: β€žΠ”Π°ΠΉ ΠΌΠΈ Π½Π΅Ρ‰ΠΎβ€œ, Π° Π°Π· отговоря: β€žΠΠ΅, Ρ‰Π΅ Ρ‚ΠΈ Π΄Π°ΠΌ Ρ‚ΠΎΠ²Π° само Π°ΠΊΠΎ ΠΌΠΈ дадСш Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎβ€œ. А Ρ‚ΠΎΠΉ ΠΊΠ°Π·Π²Π°: β€žΠΠ΅, няма Π΄Π° Ρ‚ΠΈ Π΄Π°ΠΌ, Π°ΠΊΠΎ Π½Π΅ ΠΌΠΈ Π΄Π°Π΄Π΅Ρˆβ€œ. И ΠΏΠΎΠΏΠ°Π΄Π°ΠΌΠ΅ Π² ситуация Π½Π° ΠΌΡŠΡ€Ρ‚Π²Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Π‘ΠΈΠ³ΡƒΡ€Π΅Π½ съм, Ρ‡Π΅ Иван няма Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Ρ‚Π°ΠΊΠ°, Π½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅ смисъла, Π΄Π²Π°ΠΌΠ° Π΄ΡƒΡˆΠΈ искат Π½Π΅Ρ‰ΠΎ, Π½ΠΎ Π½Π΅ са Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π΄Π° Π³ΠΎ Π΄Π°Π΄Π°Ρ‚, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ другият Π½Π΅ ΠΈΠΌ прСдостави Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ ТСлаят. И Ρ‚ΡƒΠΊ няма Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

И ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Π²Π°ΡˆΠ°Ρ‚Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ трябва Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π° Ρ‚ΠΎΠ²Π°. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π΅ ΠΈΠ»ΠΈ Π·Π°Ρ‚Π²ΠΎΡ€ΠΈ Π΅Π΄Π½Π° ΠΎΡ‚ сСсиитС, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π΅Π½ случай Ρ‚Π΅ Ρ‰Π΅ останат Ρ‚Π°ΠΌ Π·Π°Π²ΠΈΠ½Π°Π³ΠΈ. НиС Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° Π² Π±Π°Π·ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ, Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Π³ΠΎ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ систСми. И Π½Π° всяко място, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ процСси, Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС случи.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π΅Π³Π° Ρ‰Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ°ΠΌΠ΅ Π΄Π²Π΅ deadlocks. Π©Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ 50 ΠΈ 80. Π’ ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π΅Π΄ Ρ‰Π΅ направя актуализация ΠΎΡ‚ 50 Π½Π° 50. Π©Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π° Π½ΠΎΠΌΠ΅Ρ€ Π½Π° транзакцията 710.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ смСня 80 Π½Π° 81, Π° 50 Π½Π° 51.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ Ρ‰Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°. Π—Π°Ρ‚ΠΎΠ²Π° 710 ΠΈΠΌΠ° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° Π½Π° Ρ€Π΅Π΄Π°, Π° 711 ΠΎΡ‡Π°ΠΊΠ²Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅. Π’ΠΈΠΆΠ΄Π°Π»ΠΈ смС Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅. 710 Π΅ собствСник Π½Π° нашия Ρ€Π΅Π΄. А 711 Ρ‡Π°ΠΊΠ°, Π·Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ 710 транзакцията.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’Π°ΠΌ Π΄ΠΎΡ€ΠΈ Π΅ написано Π½Π° ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ€Π΅Π΄ ΠΈΠΌΠ°ΠΌΠ΅ deadlocks. И Ρ‚ΡƒΠΊ Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° става странно.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π΅Π³Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ 80 Π½Π° 80.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Ρ‚ΡƒΠΊ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ ΠΌΡŠΡ€Ρ‚Π²ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. 710 Ρ‡Π°ΠΊΠ° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΎΡ‚ 711, Π° 711 Ρ‡Π°ΠΊΠ° ΠΎΡ‚ 710. И Ρ‚ΠΎΠ²Π° няма Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈ Π΄ΠΎΠ±Ρ€Π΅. И няма ΠΈΠ·Ρ…ΠΎΠ΄ ΠΎΡ‚ Ρ‚ΠΎΠ²Π°. Π’Π΅ Ρ‰Π΅ Ρ‡Π°ΠΊΠ°Ρ‚ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Ρ‚ΠΎΠ²Π° просто Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° забавя всичко. А Π½ΠΈΠ΅ Π½Π΅ Π³ΠΎ искамС.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π² Postgres ΠΈΠΌΠ° Π½Π°Ρ‡ΠΈΠ½ΠΈ Π΄Π° сС Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° сС случва. И ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° станС, Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ слСдната Π³Ρ€Π΅ΡˆΠΊΠ°. И ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π΅ ясно, Ρ‡Π΅ Ρ‚Π°ΠΊΡŠΠ² процСс Ρ‡Π°ΠΊΠ° SHARE LOCK ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ процСс, Ρ‚.Π΅. ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ ΠΎΡ‚ процСс 711. А Ρ‚ΠΎΠ·ΠΈ процСс Π΅ Ρ‡Π°ΠΊΠ°Π» Π΄Π° бъдС прСдоставСн SHARE LOCK Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π° транзакцията ΠΈ Π΅ Π±ΠΈΠ» Π±Π»ΠΎΠΊΠΈΡ€Π°Π½ ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ процСс. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Ρ‚ΡƒΠΊ ΠΈΠΌΠ°ΠΌΠ΅ ситуация Π½Π° ΠΌΡŠΡ€Ρ‚Π²Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

А ΠΈΠΌΠ° Π»ΠΈ Ρ‚Ρ€ΠΎΠΉΠ½ΠΈ ΠΌΡŠΡ€Ρ‚Π²ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ? Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΅ Ρ‚ΠΎΠ²Π°? Π”Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΡŠΠ²Π΅ΠΆΠ΄Π°ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ числа Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. ΠŸΡ€ΠΎΠΌΠ΅Π½ΡΠΌΠ΅ 40 Π½Π° 40, ΠΏΡ€Π°Π²ΠΈΠΌ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠŸΡ€ΠΎΠΌΠ΅Π½ΡΠΌΠ΅ 60 Π½Π° 61, 80 Π½Π° 81.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

А слСд Ρ‚ΠΎΠ²Π° промСнямС 80, Π° слСд Ρ‚ΠΎΠ²Π° – Π±ΡƒΠΌ!

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И 714 сСга Ρ‡Π°ΠΊΠ° 715. 716-Ρ‚ΠΈ Ρ‡Π°ΠΊΠ° 715-Ρ‚ΠΈ. И с Ρ‚ΠΎΠ²Π° Π²Π΅Ρ‡Π΅ Π½ΠΈΡ‰ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΡƒΠΊ Π²Π΅Ρ‡Π΅ Π½Π΅ са Π΄Π²Π°ΠΌΠ° Π΄ΡƒΡˆΠΈ, Ρ‚ΡƒΠΊ Π²Π΅Ρ‡Π΅ са Ρ‚Ρ€ΠΈΠΌΠ° Π΄ΡƒΡˆΠΈ. Искам Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ Ρ‚Π΅Π±, Ρ‚ΠΎΠ·ΠΈ иска Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ трСтия Ρ‡ΠΎΠ²Π΅ΠΊ, Π° трСтият Ρ‡ΠΎΠ²Π΅ΠΊ иска Π½Π΅Ρ‰ΠΎ ΠΎΡ‚ ΠΌΠ΅Π½. И ΠΏΠΎΠΏΠ°Π΄Π°ΠΌΠ΅ Π² Ρ‚Ρ€ΠΎΠΉΠ½ΠΎ ΠΈΠ·Ρ‡Π°ΠΊΠ²Π°Π½Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ всички Ρ‡Π°ΠΊΠ°ΠΌΠ΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ другият Π·Π°Π²ΡŠΡ€ΡˆΠΈ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Postgres Π·Π½Π°Π΅ Π½Π° ΠΊΠΎΠΉ Ρ€Π΅Π΄ Ρ‚ΠΎΠ²Π° сС случва. И Π·Π°Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠΉ Ρ‰Π΅ Π²ΠΈ прСдостави слСдното ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Π²Π°, Ρ‡Π΅ ΠΈΠΌΠ°Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Ρ€ΠΈΡ‚Π΅ Π²Ρ…ΠΎΠ΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ Π΅Π΄ΠΈΠ½ Π΄Ρ€ΡƒΠ³. И Ρ‚ΡƒΠΊ няма ограничСния. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° станС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ 20 записа Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚ Π΅Π΄ΠΈΠ½ Π΄Ρ€ΡƒΠ³.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

БлСдващият ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ – Ρ‚ΠΎΠ²Π° Π΅ сСриализуСмост.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Ако ΠΈΠΌΠ° спСциална сСриализуСма Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И сС Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ към 719. Π’ΠΎΠΉ ΠΈΠΌΠ° напълно Π½ΠΎΡ€ΠΌΠ°Π»Π΅Π½ ΠΈΠ·Ρ…ΠΎΠ΄.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° натиснСтС, Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ транзакция ΠΎΡ‚ сСриализуСма.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅, Ρ‡Π΅ сСга ΠΈΠΌΠ°Ρ‚Π΅ Π΄Ρ€ΡƒΠ³ Π²ΠΈΠ΄ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° SA – Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° сСриализуСмо.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π·Π°Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ°ΠΌΠ΅ Π½ΠΎΠ² Π²ΠΈΠ΄ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° SARieadLock, която Π΅ сСрийна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ позволява въвСТданС Π½Π° сСрии.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚Π΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ индСкси.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΈΠΌΠ°ΠΌΠ΅ ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ индСкси.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ въвСда число 2 Ρ‚ΡƒΠΊ, слСдоватСлно ΠΈΠΌΠ°ΠΌ 2. Но Π² Π½Π°ΠΉ-Π³ΠΎΡ€Π½Π°Ρ‚Π° част въвСТдам ΠΎΡ‰Π΅ Π΅Π΄Π½ΠΎ 2. И ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ 721-Π²ΠΈ ΠΈΠΌΠ° Сксклузивна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Но сСга 722 Ρ‡Π°ΠΊΠ°, Π·Π° Π΄Π° 721 Π·Π°Π²ΡŠΡ€ΡˆΠΈ опСрацията си, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° въвСдС 2, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ Π·Π½Π°Π΅ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ сС случи с 721.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И Π°ΠΊΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ субтранзакция.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π•Ρ‚ΠΎ Π½ΠΈ 723.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Ако Π·Π°ΠΏΠ°Π·ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈ слСд Ρ‚ΠΎΠ²Π° я Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ² Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π΅Π½ ID. Π’ΠΎΠ²Π° Π΅ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ аспСкт Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π·Π½Π°Π΅Ρ‚Π΅. Ако Π³ΠΎ Π²ΡŠΡ€Π½Π΅ΠΌ, транзакционният ID Ρ‰Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π΅. 724 Ρ‰Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π΅. Но сСга ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ 725.

Какво сС ΠΎΠΏΠΈΡ‚Π²Π°ΠΌ Π΄Π° направя Ρ‚ΡƒΠΊ? ΠžΠΏΠΈΡ‚Π²Π°ΠΌ сС Π΄Π° Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° Π½Π΅ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° срСщнСтС: нСзависимо Π΄Π°Π»ΠΈ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ с serializable ΠΈΠ»ΠΈ SAVEPOINT - Ρ‚ΠΎΠ²Π° са Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ сС появят Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΎΠ²Π° Π΅ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Сксплицитни (явни) Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ pg_advisory_lock.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΠΈΠΆΠ΄Π°Ρ‚Π΅, Ρ‡Π΅ Ρ‚ΠΈΠΏΡŠΡ‚ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° Ρ‚ΡƒΠΊ Π΅ посочСн ΠΊΠ°Ρ‚ΠΎ advisory. И Ρ‚ΡƒΠΊ Ρ‡Π΅Ρ€Π²Π΅Π½ΠΎ Π΅ написано Β«advisoryΒ». ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ с pg_advisory_unlock.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Искам Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠ°, ΠΊΠ°Ρ‚ΠΎ Π²ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΎΡ‰Π΅ Π½Π΅Ρ‰ΠΎ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»Π½ΠΎ. Π©Π΅ създам ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄. Но Ρ‰Π΅ ΡΠ²ΡŠΡ€ΠΆΠ° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° pg_locks с Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° pg_stat_activity. Π—Π°Ρ‰ΠΎ искам Π΄Π° направя Ρ‚ΠΎΠ²Π°? Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΌΠΈ позволява Π΄Π° видя всички Ρ‚Π΅ΠΊΡƒΡ‰ΠΈ сСсии ΠΈ Π΄Π° видя ΠΊΠ°ΠΊΠ²ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚. Π’ΠΎΠ²Π° Π΅ доста интСрСсно, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΠΌΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° с заявки.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π’ΡƒΠΊ създавамС pg_stat_view.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

АктуализирамС Ρ€Π΅Π΄Π° с Π΅Π΄Π½ΠΎ. Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅ 724. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ нашия Ρ€Π΅Π΄ Π΄ΠΎ Ρ‚Ρ€ΠΈ. Какво Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ Ρ‚ΡƒΠΊ сСга? Π’ΠΎΠ²Π° са заявки, Ρ‚.Π΅. Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ цСлия списък с заявки, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΈΠ·Π±Ρ€ΠΎΠ΅Π½ΠΈ Π² лявата ΠΊΠΎΠ»ΠΎΠ½Π°. А слСд Ρ‚ΠΎΠ²Π° ΠΎΡ‚ дясната страна ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈΡ‚Π΅ ΠΈ ΠΊΠ°ΠΊΠ²ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΠΎ-Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌΠΎ Π·Π° вас, Π·Π° Π΄Π° Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС Π²Ρ€ΡŠΡ‰Π°Ρ‚Π΅ всСки ΠΏΡŠΡ‚ към всяка сСсия ΠΈ Π΄Π° провСряватС – Π΄Π°Π»ΠΈ трябва Π΄Π° сС ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Π½Π΅. Π’ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Π²ΠΈ.

ΠžΡ‰Π΅ Π΅Π΄Π½Π° функция, която Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Π° – Π΅ pg_blocking_pidsВСроятно, Π²Ρ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° ΠΎ Π½Π΅ΠΉ Π½Π΅ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ. Π§Ρ‚ΠΎ ΠΎΠ½Π° Π΄Π΅Π»Π°Π΅Ρ‚? Она позволяСт Π½Π°ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠΌΠ΅Π½Π½ΠΎ ID процСссов ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‚ΡΡ для сСссии 11740. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ 11740 ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ 724, ΠΈ 724 находится Π½Π° самом Π²Π΅Ρ€Ρ…Ρƒ. А 11306 β€” это ваш ID процСсса. По сути, эта функция просматриваСт Π²Π°ΡˆΡƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ. Π― понимаю, Ρ‡Ρ‚ΠΎ это Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ слоТно, Π½ΠΎ Π²Π°ΠΌ удаСтся это ΠΏΠΎΠ½ΡΡ‚ΡŒ. Π­Ρ‚Π° функция ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ ΠΈ пытаСтся Π½Π°ΠΉΡ‚ΠΈ ваш процСсс ID, учитывая Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½Π° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚. Она Ρ‚Π°ΠΊΠΆΠ΅ пытаСтся Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠΌΠ΅Π½Π½ΠΎ процСсс ID Ρƒ процСсса, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. pg_blocking_pids.

Π­Ρ‚ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ. ΠœΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ эту Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с вСрсии 9.6, поэтому Π΅ΠΉ всСго 5 Π»Π΅Ρ‚, Π½ΠΎ ΠΎΠ½Π° ΠΎΡ‡Π΅Π½ΡŒ ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Π°. Π’ΠΎ ΠΆΠ΅ самоС касаСтся Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ запроса. Он ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

Π­Ρ‚ΠΎ Ρ‚ΠΎ, ΠΎ Ρ‡Π΅ΠΌ я Ρ…ΠΎΡ‚Π΅Π» ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ с Π²Π°ΠΌΠΈ. Как я ΠΈ ΠΎΠΆΠΈΠ΄Π°Π», ΠΌΡ‹ исчСрпали всС нашС врСмя, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ слайдов. Π‘Π»Π°ΠΉΠ΄Ρ‹ доступны для скачивания. Π― Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ вас Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Π±Ρ‹Π»ΠΈ здСсь. Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Π²Π°ΠΌ понравится ΠΎΡΡ‚Π°Π²ΡˆΠ°ΡΡΡ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΈ, большоС спасибо!

Вопроси:

НапримСр, Ссли я ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ строки, Π° другая сСссия пытаСтся ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ. Насколько я понимаю, Π² этом случаС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ intent lock. Π•ΡΡ‚ΡŒ Π»ΠΈ ΠΎΠ½ Π² Postgres?

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

ВСрнСмся ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ выполняСтС Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π΅Π»Π°Π΅Ρ‚Π΅ SELECT, ΠΌΡ‹ Π²Ρ‹Π΄Π°Π΅ΠΌ AccessShareLock. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ строку Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ строку, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π½Π΅ смоТСт ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ с этим, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡƒΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚Π΅ AccessShareLock Π½Π°Π΄ всСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΈ строкой. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ, ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ. Но ΠΏΠΎΠΊΠ° Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ мСняСтС, ΠΎΠ½ΠΈ Π½Π΅ смогут это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ. Π’Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π½Π° строкС Π΅ΡΡ‚ΡŒ ΡΠΊΡΠΊΠ»ΡŽΠ·ΠΈΠ²Π½Ρ‹ΠΉ lock Π½Π°Π΄ всСй Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ.

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ exclusive lock, ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ?

Π”Π°, Ρ‚ΠΎΠ²Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°. Π Π°Π·Π±ΠΈΡ€Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΊΠ°Π·Π²Π°Ρ‚Π΅. ΠšΠ°Π·Π²Π°Ρ‚Π΅, Ρ‡Π΅ Π°ΠΊΠΎ направя SELECT, Ρ‰Π΅ ΠΈΠΌΠ°ΠΌ ShareExclusive, Π° слСд Ρ‚ΠΎΠ²Π° Π³ΠΎ ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π°ΠΌ Π² Row Exclusive, Π΄Π°Π»ΠΈ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ създадС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ? Но ΡƒΡ‡ΡƒΠ΄Π²Π°Ρ‰ΠΎ, Π½Π΅ създава ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ИзглСТда ΠΊΠ°Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° стСпСнта Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅, Π½ΠΎ ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΈΠΌΠ°ΠΌ lock, ΠΊΠΎΠΉΡ‚ΠΎ прСдотвратява ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ. И сСга, ΠΊΠΎΠ³Π°Ρ‚ΠΎ правя Ρ‚ΠΎΠ·ΠΈ lock ΠΏΠΎ-силСн, Ρ‚ΠΎΠΉ всС ΠΎΡ‰Π΅ прСдотвратява ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ. Π’Π°ΠΊΠ° Ρ‡Π΅ Π½Π΅ Π΅ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π°Π· сС повишавам. Π’.Π΅. Ρ‚ΠΎΠΉ прСдотвратява Ρ‚ΠΎΠ²Π° ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π° ΠΏΠΎ-ниско Π½ΠΈΠ²ΠΎ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°ΠΌ Π½ΠΈΠ²ΠΎΡ‚ΠΎ ΠΌΡƒ, Ρ‚ΠΎΠΉ всС ΠΎΡ‰Π΅ прСдотвратява ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°.

Π Π°Π·Π±ΠΈΡ€Π°ΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΠΊΠ°Π·Π²Π°Ρ‚Π΅. Π’ΡƒΠΊ няма случай Π½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° стСпСнта Π½Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Π½Π΅, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚Π΅ Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ Π΅Π΄Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π·Π° Π΄Π° Π²ΠΊΠ°Ρ€Π°Ρ‚Π΅ ΠΏΠΎ-ΠΌΠΎΡ‰Π½Π°. Π’ΡƒΠΊ просто Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° Ρ‚ΠΎΠ²Π° прСдотвратяванС, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΏΡ€Π΅Π΄ΠΈΠ·Π²ΠΈΠΊΠ²Π° никакъв ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚. Но Ρ‚ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡŠΡ€ Π²ΡŠΠΏΡ€ΠΎΡ. Благодаря, Ρ‡Π΅ Π³ΠΎ Π·Π°Π΄Π°Π΄ΠΎΡ…Ρ‚Π΅!

Какво трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ситуация Π½Π° deadlock, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ сСсии, голямо количСство ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ?

Postgres Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ забСлязва ситуации Π½Π° deadlock. И Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Ρ‰Π΅ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π° Π΅Π΄Π½Π° ΠΎΡ‚ сСсиитС. ЕдинствСното Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ ситуация с ΠΌΡŠΡ€Ρ‚Π²ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π΅ Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Ρ…ΠΎΡ€Π°Ρ‚Π° Π² Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° послСдоватСлност. Π’Π°ΠΊΠ° Ρ‡Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си, чСсто ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π·Π° deadlocks... НСка си прСдставим, Ρ‡Π΅ искам Π΄Π° Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌ Π΄Π²Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π΅Ρ‰Π°. Π•Π΄Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° 1, Π° Π΄Ρ€ΡƒΠ³ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΈΡ€Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° 2, Π° слСд Ρ‚ΠΎΠ²Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° 1. Най-простият Π½Π°Ρ‡ΠΈΠ½ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅Ρ‚Π΅ deadlocks Π΅ Π΄Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ си ΠΈ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π°Ρ‚Π΅ Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ‚Π° става Π² Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° послСдоватСлност във всички прилоТСния. И Ρ‚ΠΎΠ²Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ отстранява 80% ΠΎΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ…ΠΎΡ€Π° ΠΏΠΈΡˆΠ°Ρ‚ Ρ‚Π΅Π·ΠΈ прилоТСния. И Π°ΠΊΠΎ Π³ΠΈ Π±Π»ΠΎΠΊΠΈΡ€Π°Ρ‚Π΅ Π² Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° послСдоватСлност, Π½Π΅ срСщатС ситуация Π½Π° deadlock.

Благодаря Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ прСдставянС! Π“ΠΎΠ²ΠΎΡ€Π΅Ρ…Ρ‚Π΅ Π·Π° vacuum full ΠΈ, Π°ΠΊΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, vacuum full Π΄Π΅Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Ρ€Π΅Π΄Π° Π½Π° записитС Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΎΡ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ‚Π΅ записи остават Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ΠΈ. А Π·Π°Ρ‰ΠΎ vacuum full Π²Π·Π΅ΠΌΠ° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Сксклузивна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° ΠΈ Π·Π°Ρ‰ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ€Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ запис?

Π’ΠΎΠ²Π° Π΅ Π΄ΠΎΠ±ΡŠΡ€ Π²ΡŠΠΏΡ€ΠΎΡ. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π΅, Ρ‡Π΅ vacuum full Π²Π·ΠΈΠΌΠ° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ създавамС Π½ΠΎΠ²Π° вСрсия Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. И Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Ρ‰Π΅ бъдС Π½ΠΎΠ²Π°. Π’Π°ΠΊΠ° сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС напълно Π½ΠΎΠ²Π° вСрсия Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Π΅, Ρ‡Π΅ ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠΌ, Π½Π΅ искамС Ρ…ΠΎΡ€Π°Ρ‚Π° Π΄Π° я Ρ‡Π΅Ρ‚Π°Ρ‚, Π·Π°Ρ‰ΠΎΡ‚ΠΎ трябва Π΄Π° видят Π½ΠΎΠ²Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°. И Π·Π°Ρ‚ΠΎΠ²Π° Ρ‚ΠΎΠ²Π° сС ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π° с ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Π²ΡŠΠΏΡ€ΠΎΡ. Ако ΠΌΠΎΠΆΠ΅Ρ…ΠΌΠ΅ Π΄Π° Ρ‡Π΅Ρ‚Π΅ΠΌ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, Π½Π΅ Π±ΠΈΡ…ΠΌΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π° я прСмСстим ΠΈ Π΄Π° насочим Ρ…ΠΎΡ€Π°Ρ‚Π° към Π½ΠΎΠ²Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°. ЩСшС Π΄Π° сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΌΠ΅, Π·Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠ°Ρ‚ всички с Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π° Π΅ ситуация Π½Π° lock exclusive.
ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΊΠ°Π·Π²Π°ΠΌΠ΅, Ρ‡Π΅ Π±Π»ΠΎΠΊΠΈΡ€Π°ΠΌΠ΅ ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π·Π½Π°Π΅ΠΌ, Ρ‡Π΅ Π² края Ρ‰Π΅ Π½ΠΈ трябва эксклузивна Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π·Π° Π΄Π° прСмСстим всички Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° копия. Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌ Ρ‚ΠΎΠ²Π°. И ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π° с Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ индСксиранС. Но Ρ‚ΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-слоТно Π·Π° изпълнСниС. И ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° сС отнася Π΄ΠΎ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Π²ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° lock exclusive.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ locking timeout Π² Postgres? Π’ Oracle ΠΌΠΎΠ³Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π΄Π° напиша β€žΠΈΠ·Π±Π΅Ρ€ΠΈ Π·Π° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅β€œ ΠΈ Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΌ 50 сСкунди ΠΏΡ€Π΅Π΄ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π’ΠΎΠ²Π° бСшС Π΄ΠΎΠ±Ρ€ΠΎ Π·Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Но Π² Postgres ΠΈΠ»ΠΈ трябва Π΄Π° Π³ΠΎ направя Π²Π΅Π΄Π½Π°Π³Π° ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π΄Π° Π½Π΅Ρ‡Π°ΠΊΠ°ΠΌ, ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°ΠΌ Π΄ΠΎ някакво Π²Ρ€Π΅ΠΌΠ΅.

Π”Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ Π·Π° Π²Π°ΡˆΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° ΠΈΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° no way, която Ρ‰Π΅ бъдС ..., Π°ΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°. Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΈΠ»ΠΈ lock timeout, ΠΈΠ»ΠΈ Π½Π΅Ρ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΄Π° Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅. Π’ΠΎΠ²Π° Π½Π΅ сС ΠΏΡ€Π°Π²ΠΈ Π½Π° синтактично Π½ΠΈΠ²ΠΎ. ΠŸΡ€Π°Π²ΠΈ сС ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Понякога Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π΄Π° ΠΎΡ‚Π²ΠΎΡ€ΠΈΡ‚Π΅ 75-Ρ‚ΠΈ слайд?

Π”Π°.

ΠžΡ‚ΠΊΡŽΡ‡Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€Π° Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡ Π½Π° Postgres. Брус МомТиан

И моят Π²ΡŠΠΏΡ€ΠΎΡ Π΅ слСдният. Π—Π°Ρ‰ΠΎ Π΄Π²Π°Ρ‚Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅Π»Π½ΠΈ процСса Ρ‡Π°ΠΊΠ°Ρ‚ 703?

И Ρ‚ΠΎΠ²Π° Π΅ чудСсСн Π²ΡŠΠΏΡ€ΠΎΡ. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°ΠΌ Π·Π°Ρ‰ΠΎ Postgres Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ. Но ΠΊΠΎΠ³Π°Ρ‚ΠΎ 703 Π΅ създадСн, Ρ‚ΠΎΠΉ Π΅ ΠΎΡ‡Π°ΠΊΠ²Π°Π» 702. И ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС появят 704 ΠΈ 705, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ Π½Π΅ знаят ΠΊΠ°ΠΊΠ²ΠΎ Ρ‡Π°ΠΊΠ°Ρ‚, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚Π°ΠΌ всС ΠΎΡ‰Π΅ няма Π½ΠΈΡ‰ΠΎ. И Postgres Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ Ρ‚Π°ΠΊΠ°: ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, Ρ‚ΠΎΠΉ пишС "Какъв Π΅ ΡΠΌΠΈΡΡŠΠ»ΡŠΡ‚ Π΄Π° Π²ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌ?", Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π²ΠΈΠ΅ ΠΈ Ρ‚Π°ΠΊΠ° Ρ‡Π°ΠΊΠ°Ρ‚Π΅ някого. Π—Π°Ρ‚ΠΎΠ²Π° просто Π³ΠΎ оставямС Π΄Π° виси във Π²ΡŠΠ·Π΄ΡƒΡ…Π°, Ρ‚ΠΎΠΉ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Ρ‚ΠΎΠ²Π°. Но ΠΊΠ°ΠΊΠ²ΠΎ сС случи Ρ‚ΡƒΠΊ? Π’Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ 702 Π·Π°Π²ΡŠΡ€ΡˆΠΈ процСса ΠΈ 703 ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ си, систСмата сС Π²ΡŠΡ€Π½Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. И ΠΊΠ°Π·Π°, Ρ‡Π΅ сСга ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π°ΠΌΠ°, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‡Π°ΠΊΠ°Ρ‚. А слСд Ρ‚ΠΎΠ²Π° Π½Π΅ΠΊΠ° Π΄Π° Π³ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π·Π°Π΅Π΄Π½ΠΎ. И Π΄Π° посочим, Ρ‡Π΅ ΠΈ Π΄Π²Π°ΠΌΠ°Ρ‚Π° Ρ‡Π°ΠΊΠ°Ρ‚.

НС Π·Π½Π°ΠΌ Π·Π°Ρ‰ΠΎ Postgres Π³ΠΎ ΠΏΡ€Π°Π²ΠΈ. Но ΠΈΠΌΠ° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΠΉΡ‚ΠΎ сС Π½Π°Ρ€ΠΈΡ‡Π° f…. Мисля, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π½Π° Π±ΡŠΠ»Π³Π°Ρ€ΡΠΊΠΈ. Π’ΠΎΠ²Π° Π΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ всички Ρ‡Π°ΠΊΠ°Ρ‚ Π΅Π΄Π½ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, Π΄ΠΎΡ€ΠΈ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠΌΠ° 20 инстанции, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‡Π°ΠΊΠ°Ρ‚ Π·Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅. И извСднъТ всички Ρ‚Π΅ сС ΡΡŠΠ±ΡƒΠΆΠ΄Π°Ρ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. И всички Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π΄Π° сС ΠΎΠΏΠΈΡ‚Π²Π°Ρ‚ Π΄Π° Ρ€Π΅Π°Π³ΠΈΡ€Π°Ρ‚. Но систСмата ΠΏΡ€Π°Π²ΠΈ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ всички Ρ‡Π°ΠΊΠ°Ρ‚ 703. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚Π΅ всички Ρ‡Π°ΠΊΠ°Ρ‚ ΠΈ Π½ΠΈΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π³ΠΈ ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ Π½Π° опашка. И Π°ΠΊΠΎ сС появи всяко Π½ΠΎΠ²ΠΎ исканС, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π±ΠΈΠ»ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΎ слСд Ρ‚ΠΎΠ²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 707, Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° ΠΏΡ€Π°Π·Π½ΠΎΡ‚Π°.

И ΠΌΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ Π² Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ 702 ΠΎΡ‡Π°ΠΊΠ²Π° 703, Π° всички, ΠΊΠΎΠΈΡ‚ΠΎ Π΄ΠΎΠΉΠ΄ΠΎΡ…Π° слСд Ρ‚ΠΎΠ²Π°, нямат Π½ΠΈΠΊΠ°ΠΊΠ²Π° записка Π² Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ»Π΅. Но Ρ‰ΠΎΠΌ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ Ρ‡Π°ΠΊΠ°Ρ‰ напуснС, всички, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‡Π°ΠΊΠ°Π»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΄ΠΎ актуализацията, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ ΡΡŠΡ‰ΠΈΡ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€. И Π·Π°Ρ‚ΠΎΠ²Π° ΠΌΠΈ сС струва, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ ΠΏΠΎ Ρ€Π΅Π΄, Π·Π° Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ.

Π’ΠΈΠ½Π°Π³ΠΈ съм Π³Π»Π΅Π΄Π°Π» Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°Ρ‚ΠΎ Π½Π° доста странСн Ρ„Π΅Π½ΠΎΠΌΠ΅Π½. Π—Π°Ρ‰ΠΎΡ‚ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΡƒΠΊ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ Π³ΠΈ изброявамС. Но ΠΌΠΈ сС струва, Ρ‡Π΅ всСки ΠΏΡŠΡ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅, Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π° всички, ΠΊΠΎΠΈΡ‚ΠΎ са Π² чакатСлния процСс. Π’ΠΎΠ³Π°Π²Π° всички Ρ‚Π΅ сС ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Ρ‚ Π½Π° опашка. А слСд Ρ‚ΠΎΠ²Π°, всСки Π½ΠΎΠ², ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ΄Π²Π°, ΠΏΠΎΠΏΠ°Π΄Π° Π½Π° опашка само ΠΊΠΎΠ³Π°Ρ‚ΠΎ слСдващият Ρ‡ΠΎΠ²Π΅ΠΊ Π·Π°Π²ΡŠΡ€ΡˆΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. Много Π΄ΠΎΠ±ΡŠΡ€ Π²ΡŠΠΏΡ€ΠΎΡ. Благодаря Π²ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Π·Π° Π²ΡŠΠΏΡ€ΠΎΡΠ°!

Мисля, Ρ‡Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ 705 ΠΎΡ‡Π°ΠΊΠ²Π° 704.

Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚Π° Ρ‚ΡƒΠΊ Π΅ слСдната. ВСхничСски ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ±ΡƒΠ΄ΠΈΡ‚Π΅ ΠΈΠ»ΠΈ Ρ‚ΠΎΠ·ΠΈ, ΠΈΠ»ΠΈ ΠΎΠ½Π·ΠΈ. И Π·Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΡΡŠΠ±ΡƒΠ΄ΠΈΠΌ Ρ‚ΠΎΠ·ΠΈ ΠΈΠ»ΠΈ ΠΎΠ½Π·ΠΈ. Но ΠΊΠ°ΠΊΠ²ΠΎ сС случва Π² Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° систСмата? Π’ΠΈΠΆΠ΄Π°Ρ‚Π΅, ΠΊΠ°ΠΊ 703 Π² самия Π²Ρ€ΡŠΡ… Π±Π»ΠΎΠΊΠΈΡ€Π° собствСното си трансакционно ID. Π’ΠΎΠ²Π° Π΅ Π½Π°Ρ‡ΠΈΠ½ΡŠΡ‚, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Postgres. И 703 сС Π±Π»ΠΎΠΊΠΈΡ€Π° ΠΎΡ‚ собствСното си трансакционно ID, Π·Π°Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ някой иска Π΄Π° Ρ‡Π°ΠΊΠ°, Ρ‚ΠΎΠΉ Ρ‰Π΅ Ρ‡Π°ΠΊΠ° 703. И ΠΏΠΎ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, 703 Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°. И само слСд Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ ΠΌΡƒ, някой ΠΎΡ‚ процСситС сС ΡΡŠΠ±ΡƒΠΆΠ΄Π°. И Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‰Π΅ бъдС Ρ‚ΠΎΠ·ΠΈ процСс. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° постСпСнно ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ всичко. Но Π½Π΅ Π΅ ясно ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎ процСс сС ΡΡŠΠ±ΡƒΠΆΠ΄Π° ΠΏΡŠΡ€Π²ΠΈ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС всСки ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ процСси. По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ, ΠΈΠΌΠ°Ρ…ΠΌΠ΅ ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‡ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΊΠ°Π·Π°, Ρ‡Π΅ сСга ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π±ΡƒΠ΄ΠΈΠΌ всСки ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ процСси. ΠŸΡ€ΠΎΡΡ‚ΠΎ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ Π½Π° случаСн ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ. Π—Π°Ρ‚ΠΎΠ²Π° ΠΈ Π΄Π²Π°Ρ‚Π° трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ отбСлязани, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡŠΠ±ΡƒΠ΄ΠΈΠΌ всСки ΠΎΡ‚ тях.

И ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ‚Π° Π΅, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ CP-бСзкрайност. И Π·Π°Ρ‚ΠΎΠ²Π° Π΅ напълно вСроятно Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΡŠΠ±ΡƒΠ΄ΠΈΠΌ ΠΏΠΎ-късСн. И Π°ΠΊΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΡŠΠ±ΡƒΠ΄ΠΈΠΌ ΠΏΠΎ-късСн, Ρ‚ΠΎ Ρ‰Π΅ Ρ‡Π°ΠΊΠ°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, Π·Π°Ρ‚ΠΎΠ²Π° Π½Π΅ опрСдСлямС ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‰Π΅ бъдС ΡΡŠΠ±ΡƒΠ΄Π΅Π½ ΠΏΡŠΡ€Π²ΠΈ. ΠŸΡ€ΠΎΡΡ‚ΠΎ създавамС Ρ‚Π°ΠΊΠ°Π²Π° ситуация, ΠΈ систСмата Ρ‰Π΅ Π³ΠΈ Π±ΡƒΠ΄ΠΈ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Ρ€Π΅Π΄.

Има статии Π·Π° locks Π½Π° Π•Π³ΠΎΡ€Π° Π ΠΎΠ³ΠΎΠ²Π°. Π’ΠΈΠΆΡ‚Π΅, Ρ‚Π΅ ΡΡŠΡ‰ΠΎ са интСрСсни ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ. Π’Π΅ΠΌΠ°Ρ‚Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΅ уТасно слоТна. Благодаря ΠΌΠ½ΠΎΠ³ΠΎ, Π‘Ρ€ΡŽΡ!

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster