PostgreSQL ΠΈ настройки Π·Π° ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΎΡΡ‚ Π½Π° записа Π·Π° всяко ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅

ΠŸΡ€Π΅Π²ΠΎΠ΄ΡŠΡ‚ Π½Π° статията Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ спСциално Π·Π° студСнтитС ΠΎΡ‚ курса β€žΠ‘Π°Π·ΠΈ Π”Π°Π½Π½ΠΈβ€œ. Π˜Π½Ρ‚Π΅Ρ€Π΅ΡΠ½ΠΎ Π»ΠΈ Π΅ Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚Π΅ Π² Ρ‚Π°Π·ΠΈ насока? Каним Π²ΠΈ Π½Π° Π”Π΅Π½ Π½Π° ΠžΡ‚Π²ΠΎΡ€Π΅Π½ΠΈΡ‚Π΅ Π’Ρ€Π°Ρ‚ΠΈ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ‰Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, особСноститС Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ†ΠΈΠΈΡ‚Π΅ ΠΈ ΠΊΠ°Ρ€ΠΈΠΉΠ½ΠΈΡ‚Π΅ пСрспСктиви, ΠΊΠΎΠΈΡ‚ΠΎ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚ Π·Π°Π²ΡŠΡ€ΡˆΠΈΠ»ΠΈΡ‚Π΅ слСд ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ.

PostgreSQL ΠΈ настройки Π·Π° ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΎΡΡ‚ Π½Π° записа Π·Π° всяко ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅

PostgreSQL ΠΈ настройки Π·Π° ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΎΡΡ‚ Π½Π° записа Π·Π° всяко ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅
Π’ Compose Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½ΠΈ позволява Π΄Π° сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ с тяхната функционалност ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ. Π‘ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π΅ΠΌ Π΄Π° ΠΎΠ±ΠΈΡ‡Π°ΠΌΠ΅ функционалността Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, понякога си мислим ΠΊΠ°ΠΊ Π±ΠΈ Π±ΠΈΠ»ΠΎ Π΄ΠΎΠ±Ρ€Π΅, Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°Ρ…Π° ΠΈ Π² ΠΏΠΎ-Π·Ρ€Π΅Π»ΠΈΡ‚Π΅ инструмСнти, с ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚Π΄Π°Π²Π½Π°. Π•Π΄Π½Π° ΠΎΡ‚ Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, която искахмС Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π² PostgreSQL, бСшС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ‚Π° послСдоватСлност Π½Π° записитС ΠΏΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ° Π² цСлия ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€. И сС ΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Π²Π΅Ρ‡Π΅ я ΠΈΠΌΠ°ΠΌΠ΅, ΠΈ днСс искамС Π΄Π° сподСлим с вас информация ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° я ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅.

Π—Π°Ρ‰ΠΎ ΠΌΠΈ Π΅ Ρ‚ΠΎΠ²Π°?

Как трябва Π΄Π° сС Π΄ΡŠΡ€ΠΆΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ зависи ΠΎΡ‚ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π”Π° Π²Π·Π΅ΠΌΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠ»Π°Ρ‰Π°Π½Π΅ Π½Π° смСтки. Π©Π΅ Π²ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° стотин ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ²Π° послСдоватСлност Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π·Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ трябва Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ синхронни ΠΊΠΎΠΌΠΈΡ‚ΠΈ, Π·Π° Π΄Π° ΠΈΠ·Ρ‡Π°ΠΊΠ°Ρ‚Π΅, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ всички ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΅ Π±ΡŠΡ€Π·ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‰Π° сС социална ΠΌΡ€Π΅ΠΆΠ°, вСроятно Ρ‰Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π±ΡŠΡ€Π· ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π°Π΄ стотин ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ²Π° послСдоватСлност. Π—Π° Π΄Π° постигнСтС Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ асинхронни ΠΊΠΎΠΌΠΈΡ‚ΠΈ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° си.

Π—Π°ΠΏΠΎΠ·Π½Π°ΠΉΡ‚Π΅ сС с компромиса

Π©Π΅ трябва Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ компромис ΠΌΠ΅ΠΆΠ΄Ρƒ послСдоватСлността Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈ производитСлността. PostgreSQL изостава ΠΎΡ‚ послСдоватСлността, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π² Ρ‚ΠΎΠ·ΠΈ случай става прСдсказуСма ΠΈ Π±Π΅Π· Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΈ ΠΈΠ·Π½Π΅Π½Π°Π΄ΠΈ. Π‘Π΅Π³Π° Ρ‰Π΅ сС Π·Π°ΠΏΠΎΠ·Π½Π°Π΅ΠΌ с компромиситС.

ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡ 1: ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚

Ако Π½Π° кластСра PostgreSQL Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ съгласиС, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ асинхронно. ЗаписитС сС правят Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Π° Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ слСд няколко милисСкунди. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π½Π° кластСра PostgreSQL Π΅ Π½ΡƒΠΆΠ½ΠΎ съгласиС, Ρ‚ΠΎΠΉ трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ синхронно. Π—Π°ΠΏΠΈΡΡŠΡ‚ Ρ‰Π΅ бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ Π² Π»ΠΈΠ΄Π΅Ρ€Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‰Π΅ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ актуализация Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ ΠΈ Ρ‰Π΅ ΠΈΠ·Ρ‡Π°ΠΊΠ° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Π΅ всяка ΠΎΡ‚ тях Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΠ»Π° запис, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€Π°Π» записа, Ρ‡Π΅ Ρ‚ΠΎΠΉ Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ‚Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅Π·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ сС ΡΡŠΡΡ‚ΠΎΠΈ Π² Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ асинхронният ΠΌΠ΅Ρ‚ΠΎΠ΄ изисква Π΄Π²Π΅ ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈ скоковС, Π° синхронният – Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈ.

ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡ 2: БъгласиС

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΏΡ€ΠΈ нСизправност Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π° Π² Ρ‚Π΅Π·ΠΈ Π΄Π²Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΡΡŠΡ‰ΠΎ Ρ‰Π΅ бъдС Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½. Ако Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° асинхронно, ΠΏΡ€ΠΈ Π½Π°ΡΡ‚ΡŠΠΏΠ²Π°Π½Π΅ Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π½Π΅ всички записи Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ засСчСни ΠΎΡ‚ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅. Колко Ρ‰Π΅ бъдС Π·Π°Π³ΡƒΠ±Π΅Π½ΠΎ? Зависи ΠΎΡ‚ самото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ СфСктивността Π½Π° рСпликацията. РСпликацията Π² Compose ΠΏΡ€Π΅Ρ‡ΠΈ Π½Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π΄Π° станС Π»ΠΈΠ΄Π΅Ρ€, Π² случай Ρ‡Π΅ количСството информация Π² нСя Π΅ с 1 Мб ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ²Π° Π² Π»ΠΈΠ΄Π΅Ρ€Π°, тоСст ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ Π΄ΠΎ 1 Мб записи ΠΏΡ€ΠΈ асинхронна Ρ€Π°Π±ΠΎΡ‚Π°.

Π’ синхронСн Ρ€Π΅ΠΆΠΈΠΌ Ρ‚ΠΎΠ²Π° Π½Π΅ сС случва. Ако Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ, всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ сС обновяват, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ всяка записана информация, ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½Π° Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π°, трябва Π΄Π° бъдС ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½Π° ΠΈ Π² Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅. Π•Ρ‚ΠΎ я – ΡΡŠΠ³Π»Π°ΡΠ½ΠΎΡΡ‚Ρ‚Π°.

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

ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡ 3: НСуспСхи

Много Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠ°ΠΊ сС Π΄ΡŠΡ€ΠΆΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° срив. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ситуация, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅Π΄Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΎΡ‚ΠΊΠ°Π·Π²Π°Ρ‚. ΠšΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠΌΠΈΡ‚ΠΈΡ‚Π΅ сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ асинхронно, Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π°, тоСст Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° записи, Π±Π΅Π· Π΄Π° Ρ‡Π°ΠΊΠ° липсващитС Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ сС Π²ΡŠΡ€Π½Π°Ρ‚ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°, Ρ‚Π΅ Ρ‰Π΅ наваксат Π½Π° Π»ΠΈΠ΄Π΅Ρ€Π°. ΠŸΡ€ΠΈ синхронна рСпликация, Π°ΠΊΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ Π½Π΅ отговарят, Π»ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ няма ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ ΠΈ Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈ Π΄Π° Ρ‡Π°ΠΊΠ° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΈΡ‚Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ сС Π²ΡŠΡ€Π½Π΅ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΈ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈ записа.

По Π΅Π΄Π½ΠΎ Π²Ρ€ΡŠΠ·ΠΊΠ° Π½Π° транзакция?

На всяко ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΡƒ Π΅ Π½ΡƒΠΆΠ΅Π½ спСцифичСн Ρ‚ΠΈΠΏ комбинация ΠΎΡ‚ послСдоватСлност ΠΈ производитСлност. ОсвСн Π°ΠΊΠΎ Π½Π΅ става Π²ΡŠΠΏΡ€ΠΎΡ Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΠ»Π°Ρ‰Π°Π½Π΅ Π½Π° смСтки, ΠΊΠΎΠ΅Ρ‚ΠΎ си прСдставямС ΠΊΠ°Ρ‚ΠΎ напълно послСдоватСлно, ΠΈΠ»ΠΈ Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ Π΅Ρ„Π΅Ρ€Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π° социална ΠΌΡ€Π΅ΠΆΠ°. Π’ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи Ρ‰Π΅ ΠΈΠΌΠ° ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ някои ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ синхронни, Π° Π΄Ρ€ΡƒΠ³ΠΈ – асинхронни. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π΅ искатС систСмата Π΄Π° Ρ‡Π°ΠΊΠ°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Π½ΠΎ Π² Ρ‡Π°Ρ‚Π°, бъдС записано, Π½ΠΎ Π°ΠΊΠΎ Π² ΡΡŠΡ‰ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠ»Π°Ρ‰Π°Π½Π΅, Ρ‚ΠΎ Ρ‰Π΅ трябва Π΄Π° сС ΠΈΠ·Ρ‡Π°ΠΊΠ°.

Всички Ρ‚Π΅Π·ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, сС Π²Π·ΠΈΠΌΠ°Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. ΠŸΡ€Π°Π²ΠΈΠ»Π½ΠΈΡ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ³Π° Π΄Π° сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Ρ‚ΠΎΠ·ΠΈ ΠΈΠ»ΠΈ ΠΎΠ½Π·ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π΄Π° сС ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ максимума ΠΎΡ‚ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π’Π°ΠΆΠ½ΠΎ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡŠΡ‚ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΌΠ΅ΠΆΠ΄Ρƒ тях Π½Π° Π½ΠΈΠ²ΠΎ SQL Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ.

ΠžΡΠΈΠ³ΡƒΡ€ΡΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ PostgreSQL осигурява послСдоватСлност. Π’ΠΎΠ²Π° сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° synchronous_commit. По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π² ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ on, Π½ΠΎ ΠΈΠΌΠ° Ρ‚Ρ€ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΠΏΡ†ΠΈΠΈ: local, remote_write ΠΈΠ»ΠΈ off.

ΠŸΡ€ΠΈ настройванС Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° Π½Π° off спират всички синхронни ΠΊΠΎΠΌΠΈΡ‚ΠΈ, Π΄ΠΎΡ€ΠΈ Π² Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° систСма. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ local опрСдСля синхронСн Ρ€Π΅ΠΆΠΈΠΌ Π·Π° Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° систСма, Π½ΠΎ записитС Π² Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ асинхронно. Remote_write ΠΈΠ΄Π²Π° ΠΎΡ‰Π΅ ΠΏΠΎ-Π΄Π°Π»Π΅Ρ‡: записитС Π² Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ асинхронно, Π½ΠΎ сС Π²Ρ€ΡŠΡ‰Π°Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ записа, Π½ΠΎ Π½Π΅ Π³ΠΎ запишС Π½Π° диск.

Π Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ наличния Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΠΎΡ‚ ΠΎΠΏΡ†ΠΈΠΈ, Π½ΠΈΠ΅ ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ, ΠΈΠΌΠ°ΠΉΠΊΠΈ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ on – Ρ‚ΠΎΠ²Π° са синхронни записи, Ρ‰Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ local Π·Π° асинхронни ΠΊΠΎΠΌΠΈΡ‚ΠΈ ΠΏΠΎ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°, ΠΊΠ°Ρ‚ΠΎ оставим Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΈΡ‚ΠΈ синхронни.

Π‘Π΅Π³Π° Ρ‰Π΅ Π²ΠΈ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° настроитС Ρ‚ΠΎΠ²Π° Π·Π° ΠΌΠΈΠ³, Π½ΠΎ си прСдставСтС, Ρ‡Π΅ смС инсталирали synchronous_commit Π² local Π·Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. Π—Π°Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ си Π²ΡŠΠΏΡ€ΠΎΡΠ° Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° промСнямС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° synchronous_commit Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, ΠΈ сС ΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Π½Π΅ само Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ, Π½ΠΎ Π΄ΠΎΡ€ΠΈ ΠΈΠΌΠ° Π΄Π²Π° Π½Π°Ρ‡ΠΈΠ½Π°. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ сСсията Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

SET SESSION synchronous_commit TO ON;  
// Π’Π°ΡˆΠΈΡ‚Π΅ записи ΠΈΠ΄Π²Π°Ρ‚ Ρ‚ΡƒΠΊ

Всички послСдващи записи Π² сСсията Ρ‰Π΅ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΡΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° запис Π·Π° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π²ΡŠΡ€Π½Π°Ρ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚. Ако, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ настройката synchronous_commit ΠΎΡ‚Π½ΠΎΠ²ΠΎ. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° пропуснСтС частта SESSION Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ тя Ρ‰Π΅ бъдС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Вторият Π½Π°Ρ‡ΠΈΠ½ Π΅ Π΄ΠΎΠ±ΡŠΡ€, ΠΊΠΎΠ³Π°Ρ‚ΠΎ искатС Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ синхронна рСпликация Π·Π° Π΅Π΄Π½Π° транзакция. Π’ ΠΌΠ½ΠΎΠ³ΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ β€žNoSQLβ€œ Π½Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° концСпцията Π·Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, Π½ΠΎ Π² PostgreSQL ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°. Π’ Ρ‚ΠΎΠ·ΠΈ случай стартиратС транзакция ΠΈ слСд Ρ‚ΠΎΠ²Π° Π·Π°Π΄Π°Π²Π°Ρ‚Π΅ synchronous_commit Π² on ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΡ‚Π΅ записа Π·Π° транзакцията. COMMIT Ρ‰Π΅ зафикссира транзакцията, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ всяка стойност Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° synchronous_commit, която Π΅ Π±ΠΈΠ»Π° Π·Π°Π΄Π°Π΄Π΅Π½Π° ΠΏΠΎ Ρ‚ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π΅ Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚, Ρ‡Π΅ записитС Π½Π΅ са асинхронни.

BEGIN;  
SET LOCAL synchronous_commit TO ON;  
// Π’Π°ΡˆΠΈΡ‚Π΅ записи ΠΈΠ΄Π²Π°Ρ‚ Ρ‚ΡƒΠΊ
COMMIT;  

Всички ΠΊΠΎΠΌΠΈΡ‚ΠΈ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ сСга Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ записани Π² Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈΡ‚Π΅ Π΄ΠΎΡ€ΠΈ ΠΏΡ€Π΅Π΄ΠΈ Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ Π΄Π° Π²ΡŠΡ€Π½Π΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π΅Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚.

Настройка Π½Π° PostgreSQL

ΠŸΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° си прСдставяхмС систСма PostgreSQL с synchronous_commit, Π·Π°Π΄Π°Π΄Π΅Π½Π° Π½Π° local. Π—Π° Π΄Π° бъдС Ρ‚ΠΎΠ²Π° Ρ€Π΅Π°Π»Π½ΠΎ Π½Π° страна Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, трябва Π΄Π° настроитС Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° Π½Π° конфигурацията Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°. ΠžΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ synchronous_standby_names Ρ‰Π΅ Π²Π»Π΅Π·Π΅ Π² сила, ΠΊΠΎΠ³Π°Ρ‚ΠΎ synchronous_commit Π΅ Π½Π° on. Π’ΠΎΠΉ опрСдСля ΠΊΠΎΠΈ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΈΠΌΠ°Ρ‚ ΠΏΡ€Π°Π²ΠΎ Π½Π° синхронни ΠΊΠΎΠΌΠΈΡ‚ΠΈ, ΠΈ Ρ‰Π΅ Π³ΠΎ Π·Π°Π΄Π°Π΄Π΅ΠΌ Π½Π° *, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½Π΅ Π½Π° всички Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ. Π’Π΅Π·ΠΈ стойности ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС Π·Π°Π΄Π°Π²Π°Ρ‚ Π² конфигурационния Ρ„Π°ΠΉΠ» Ρ‡Ρ€Π΅Π· добавянС Π½Π°:

synchronous_commit = local  
synchronous_standby_names='*'

Настройвайки ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° synchronous_commit Π½Π° стойност local, създавамС систСма, Π² която Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ дисковС остават синхронни, Π½ΠΎ ΠΊΠΎΠΌΠΈΡ‚ΠΈΡ‚Π΅ Π½Π° ΠΌΡ€Π΅ΠΆΠΎΠ²ΠΈΡ‚Π΅ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ са асинхронни. Ако, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ Ρ€Π΅ΡˆΠΈΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠΈΡ‚ΠΈ синхронни, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡ€Π΅.

Ако слСдитС Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Governor, вСроятно стС забСлязали някои послСдни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ (1, 2), ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ…Π° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Governor Π΄Π° тСстват Ρ‚Π΅Π·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΈ Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚ тяхната послСдоватСлност.

ΠžΡ‰Π΅ няколко думи…

Π‘ΡƒΠΊΠ²Π°Π»Π½ΠΎ сСдмица ΠΏΡ€Π΅Π΄ΠΈ, Π±ΠΈΡ… Π²ΠΈ ΠΊΠ°Π·Π°Π», Ρ‡Π΅ Π΅ нСвъзмоТно Π΄Π° настроитС PostgreSQL Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΡ€Π΅Ρ†ΠΈΠ·Π½ΠΎ. Π’ΠΎΠ³Π°Π²Π° ΠšΡƒΡ€Ρ‚, Ρ‡Π»Π΅Π½ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½ Π΅ΠΊΠΈΠΏ Π½Π° Compose, Π½Π°ΡΡ‚ΠΎΡΠ²Π°ΡˆΠ΅, Ρ‡Π΅ Ρ‚Π°ΠΊΠ°Π²Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°. Π’ΠΎΠΉ успокои ΠΌΠΎΠΈΡ‚Π΅ Π²ΡŠΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΠΌΠ΅Ρ€ΠΈ Π² докумСнтацията Π½Π° PostgreSQL слСдното:

PostgreSQL ΠΈ настройки Π·Π° ΡΡŠΠ³Π»Π°ΡΡƒΠ²Π°Π½ΠΎΡΡ‚ Π½Π° записа Π·Π° всяко ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅

Π’Π°Π·ΠΈ настройка ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½Π° ΠΏΠΎ всяко Π²Ρ€Π΅ΠΌΠ΅. ΠŸΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π·Π° всяка транзакция сС опрСдСля ΠΎΡ‚ конфигурацията, която дСйствува ΠΏΡ€ΠΈ ΠΊΠΎΠΌΠΈΡ‚Π°. Π—Π°Ρ‚ΠΎΠ²Π° Π΅ възмоТно ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π·Π° някои Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΌΠΈΡ‚ΠΈΡ‚Π΅ Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ синхронно, Π° Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ – асинхронно. НапримСр, Π·Π° Π΄Π° Π½Π°ΠΊΠ°Ρ€Π°Ρ‚Π΅ Π΅Π΄Π½Π° ΠΌΡƒΠ»Ρ‚ΠΈ-ΠΊΠΎΠΌΠΈΡ‚ транзакция Π΄Π° ΠΏΡ€Π°Π²ΠΈ ΠΊΠΎΠΌΠΈΡ‚ΠΈΡ‚Π΅ асинхронно, ΠΊΠΎΠ³Π°Ρ‚ΠΎ стойността Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Π°, Π·Π°Π΄Π°ΠΉΡ‚Π΅ SET LOCAL synchronous_commit TO OFF Π² транзакцията.

Π‘ Ρ‚Π°Π·ΠΈ ΠΌΠ°Π»ΠΊΠ° модификация във Ρ„Π°ΠΉΠ»Π° с конфигурация, прСдоставихмС Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Ρ‚ тяхната послСдоватСлност ΠΈ производитСлност.

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

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