PostgreSQL ΠΈ спСцифични Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° настройки Π·Π° послСдоватСлност ΠΏΡ€ΠΈ запис

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

PostgreSQL ΠΈ спСцифични Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° настройки Π·Π° послСдоватСлност ΠΏΡ€ΠΈ запис

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

Π—Π°Ρ‰ΠΎ ΠΌΠΈ трябва?

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

Π‘Ρ€Π΅Ρ‰Π½Π΅Ρ‚Π΅ компромис

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

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

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

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

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

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

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

ΠšΠΎΠΌΠΏΡ€ΠΎΠΌΠΈΡ 3: Π‘Ρ€ΠΈΠ²ΠΎΠ²Π΅

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

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

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

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

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

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

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

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

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

SET SESSION synchronous_commit TO ON;  
// Your writes go here

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

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

BEGIN;  
SET LOCAL synchronous_commit TO ON;  
// Your writes go here
COMMIT;  

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

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° PostgreSQL

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

synchronous_commit = local  
synchronous_standby_names='*'

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

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

ΠžΡ‰Π΅ няколко Π΄ΡƒΠΌΠΈ...

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

PostgreSQL ΠΈ спСцифични Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° настройки Π·Π° послСдоватСлност ΠΏΡ€ΠΈ запис

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

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

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€