ΠΠΎ-ΠΌΠΎΠ΅ΠΌΡ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΠ»ΡΡ Π²ΡΠΏΡΡΠΊΠΎΠ², PostgreSQL 12 Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄Π½ΠΎΠΉ-Π΄Π²ΡΡ ΡΠ΅Π²ΠΎΠ»ΡΡΠΈΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ (ΠΊΠ°ΠΊ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π·Π°ΠΏΡΠΎΡΠΎΠ²). Π― ΠΊΠ°ΠΊ-ΡΠΎ ΠΏΠΎΡΡΡΠΈΠ», ΡΡΠΎ Π³Π»Π°Π²Π½Π°Ρ ΡΠΈΡΠΊΠ° PostgreSQL 12 β Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ. Π ΡΠ°Π·Π²Π΅ Π½Π΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π²Π°ΡΠ΅Π³ΠΎ Π±ΠΈΠ·Π½Π΅ΡΠ°?
ΠΠΎ PostgreSQL 12 ΡΡΠΈΠΌ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ: Ρ Π½ΠΎΠ²ΡΠΌΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΈ ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΡΡΡΠ΅, Π° ΠΎΡ Π²Π°Ρ Π²ΡΠ΅Π³ΠΎ-Π½Π°Π²ΡΠ΅Π³ΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄!
(ΠΡ, ΠΌΠΎΠΆΠ΅Ρ, Π΅ΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΈΡΡ, Π½ΠΎ Π² ΡΡΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ ΡΡΡΠ°ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ.)
ΠΠΎΡ Π±ΡΠ΄Π΅Ρ Π·Π΄ΠΎΡΠΎΠ²ΠΎ β Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄Π½ΡΡΡ PostgreSQL ΠΈ ΡΡΠ°Π·Ρ Π½Π°ΡΠ»Π°ΠΆΠ΄Π°ΡΡΡΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡΠΌΠΈ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ
ΡΠ΅Π»ΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄ Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ PostgreSQL 9.4 Π΄ΠΎ PostgreSQL 10 ΠΈ ΡΠ²ΠΈΠ΄Π΅Π», ΠΊΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΠ»ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ»ΡΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π² PostgreSQL 10. Π, Π³Π»Π°Π²Π½ΠΎΠ΅, ΠΎΡ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΡΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ (Π²ΡΠ΅Π³ΠΎ-ΡΠΎ Π·Π°Π΄Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ max_parallel_workers
).
Π‘ΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π»ΡΡΡΠ΅. Π ΠΌΡ ΠΎΡΠ΅Π½Ρ ΡΡΠ°ΡΠ°Π΅ΠΌΡΡ ΡΠ°Π΄ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, Π²Π΅Π΄Ρ Ρ PostgreSQL ΠΈΡ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅.
Π ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ Π΄ΠΎ PostgreSQL 12 ΡΠ΄Π΅Π»Π°Π΅Ρ Π²Π°Ρ ΡΡΠ°ΡΡΠ»ΠΈΠ²ΡΠΌ? Π‘Π΅ΠΉΡΠ°Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ.
Π‘Π΅ΡΡΠ΅Π·Π½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ΅Π· ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ ΡΠ΅Π΄Π΅Ρ. Π ΠΊΠ°ΠΊ Π΅ΡΠ΅ Π±ΡΡΡΡΠΎ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ? Π€ΡΠ½Π΄Π°ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ PostgreSQL Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ
ΠΡ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ CREATE INDEX ON some_table (some_column)
, Π° PostgreSQL ΠΏΡΠΎΠ΄Π΅Π»ΡΠ²Π°Π΅Ρ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°, ΠΏΠΎΠΊΠ° ΠΌΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌ, ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΠΌ ΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. ΠΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅, ΠΊΠ°ΠΊ ΠΏΠΎ Π²ΠΎΠ»ΡΠ΅Π±ΡΡΠ²Ρ.
ΠΠΎ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² PostgreSQL Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° β ΠΎΠ½ΠΈ
PostgreSQL 12 ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² B-Π΄Π΅ΡΠ΅Π²Π°, ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ Ρ ΡΠ΅ΡΡΠ°ΠΌΠΈ ΡΠΈΠΏΠ° TPC-C ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ, ΡΡΠΎ ΠΌΠ΅ΡΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ, Π½Π° 40% ΠΌΠ΅Π½ΡΡΠ΅. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΡΠ°ΡΠΈΠΌ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² B-Π΄Π΅ΡΠ΅Π²Π° (ΡΠΎ Π΅ΡΡΡ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΈΡΠΈ), Π½ΠΎ ΠΈ Π½Π° ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ , Π²Π΅Π΄Ρ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΡΡΠ°Π»ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠ²ΠΎΠΈ ΡΠ°Π±Π»ΠΈΡΡ β ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠΎ OLTP-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄Π° ΡΡΠ΅Π±ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΈΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ B-Π΄Π΅ΡΠ΅Π²Π°, ΡΡΠΎΠ±Ρ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Π PostgreSQL 12 Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ΅ ΠΎΠ΄Π½Π° ΡΡΡΠΊΠ°, Π³Π΄Π΅ Π½Π΅ ΠΎΠ±ΠΎΡΠ»ΠΎΡΡ Π±Π΅Π· Π²ΠΎΠ»ΡΠ΅Π±ΡΡΠ²Π°, β
Π PostgreSQL 12 ΡΠΎΠΊΡΠ°ΡΠΈΠ»ΠΈΡΡ ΠΈΠ·Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ WAL, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠ°ΠΌΠΈ GiST, GIN ΠΈ SP-GiST ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ°. ΠΡΠΎ Π΄Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΡΡΠΈΠΌΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²: Π·Π°ΠΏΠΈΡΠΈ WAL Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ΅ΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅, Π° Π΄Π°Π½Π½ΡΠ΅ Π±ΡΡΡΡΠ΅Π΅ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ ΠΈΠ»ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΡΠ°ΠΊΠΈΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ Π² ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΅ΠΎΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ PostGIS ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ GiST), ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° ΡΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ Π±Π΅Π·ΠΎ Π²ΡΡΠΊΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ.
Π‘Π΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ β Π±ΠΎΠ»ΡΡΠ΅, Π»ΡΡΡΠ΅, Π±ΡΡΡΡΠ΅Π΅
Π PostgreSQL 10 ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ
Π PostgreSQL 12 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π»Π° Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΡΡΡΠ΅, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΡΡΡΡΠΈ ΡΠ΅ΠΊΡΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅Π³ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠΈΠΉ Π² ΡΠ°Π±Π»ΠΈΡΠ΅, Π³Π΄Π΅ ΠΈΡ ΡΡΡΡΡΠΈ, ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΡΡΡΡΠ΅Π΅. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ»ΡΡΡΠ΅Π½Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² Π·Π°ΠΏΡΠΎΡΠΎΠ². ΠΡΠ΅ Π²Ρ Π·Π°ΠΌΠ΅ΡΠΈΡΠ΅, ΠΊΠ°ΠΊ ΡΡΠΊΠΎΡΠΈΠ»ΠΈΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ INSERT Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΡΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ΅ΠΊΡΠΈΠΉ.
ΠΠ°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ
Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΡΠΈΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°ΠΌ Π² PostgreSQL ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π½Π°Π±ΠΎΡΡ Π΄Π°Π½Π½ΡΡ Π΅ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π° ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ ΠΈΡ ΡΡΠ°Π»ΠΎ ΠΏΡΠΎΡΠ΅. Π Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ Ρ Π²Π°ΡΠ΅ΠΉ ΡΡΠΎΡΠΎΠ½Ρ. ΠΡΠ»ΠΈ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ½ΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ², ΠΏΡΠΎΡΡΠΎΠΉ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΡ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Π Ρ ΠΎΡΡ ΡΡΠΎ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΈΠ· ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ Β«Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄Π½ΡΠ»ΠΈ ΠΈ ΡΠ°Π΄ΡΠ΅ΠΌΡΡΒ», Π² PostgreSQL 12 ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΊΠ»ΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ, ΡΡΠΎΠ±Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ½ΠΎΡΠΈΠ»Π° ΠΎΠ΄Π½ΠΎ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅.
ΠΠ°ΠΏΡΠΎΡΡ WITH ΡΡΠ°Π»ΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅
ΠΠΎΠ³Π΄Π°
Π― ΡΠ°ΡΡΠΎ Π·Π°ΠΌΠ΅ΡΠ°Ρ, ΡΡΠΎ Π½ΠΎΠ²ΠΈΡΠΊΠΈ Π² SQL Π»ΡΠ±ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ CTE: Π΅ΡΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΡΠΌΠΎ ΡΡΠ²ΡΡΠ²ΡΠ΅ΡΡ, ΡΡΠΎ ΠΏΠΈΡΠ΅ΡΡ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΈΡΠ½ΠΎ Ρ Π»ΡΠ±ΠΈΠ» ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΡΠΈ Π·Π°ΠΏΡΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ Π±Π΅Π· CTE ΠΈ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. Π‘Π΅ΠΉΡΠ°Ρ Π²ΡΠ΅ ΠΈΠ½Π°ΡΠ΅.
PostgreSQL 12 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΡΡΠ°ΠΈΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ CTE Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ
ΡΡΡΠ΅ΠΊΡΠΎΠ² (SELECT
), ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π±Π»ΠΈΠΆΠ΅ ΠΊ ΠΊΠΎΠ½ΡΡ Π·Π°ΠΏΡΠΎΡΠ°. ΠΡΠ»ΠΈ Π±Ρ Ρ Π²Π΅Π» ΡΡΠ°ΡΠΈΡΡΠΈΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ CTE, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π», Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΈΠ· Π½ΠΈΡ
ΠΏΠΎΠΏΠ°Π»ΠΈ Π±Ρ Π² ΡΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΏΠ΅ΡΡ Π΅ΡΠ΅ ΠΈ Π±ΡΡΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, PostgreSQL 12 ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL ΡΠ°ΠΌ, Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π΄Π΅Π»Π°ΡΡ. Π Ρ ΠΎΡΡ ΡΠ΅ΠΏΠ΅ΡΡ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, Π·Π΄ΠΎΡΠΎΠ²ΠΎ, ΡΡΠΎ PostgreSQL ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Π·Π°ΠΏΡΠΎΡΠΎΠ².
Just-in-Time (JIT) β ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
Π ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
PostgreSQL 12 Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ
Π Π°Π· JIT Π²ΠΊΠ»ΡΡΠ΅Π½ Π² PostgreSQL 12 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ»ΡΡΡΠΈΡΡΡ ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅, Π½ΠΎ Ρ ΡΠΎΠ²Π΅ΡΡΡ ΠΏΠΎΡΠ΅ΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² PostgreSQL 11, Π³Π΄Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ JIT, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΡΠ·Π½Π°ΡΡ, Π½ΡΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ.
Π ΠΊΠ°ΠΊ ΠΆΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½ΠΎΠ²ΡΠ΅ ΡΠΈΡΠΈ PostgreSQL 12?
Π PostgreSQL 12 ΡΠΉΠΌΠ° Π½ΠΎΠ²ΡΡ
ΠΊΠ»Π°ΡΡΠ½ΡΡ
ΡΠΈΡ β ΠΎΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ·ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ JSON Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ
Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΡΡΡΠ° SQL/JSON Π΄ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ°ΠΊΡΠΎΡΠ½ΠΎΠΉ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ clientcert=verify-full
, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ
ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. Π₯Π²Π°ΡΠΈΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΡ.
ΠΠ°ΠΊ ΠΈ PostgreSQL 10, PostgreSQL 12 ΠΏΠΎΠ²ΡΡΠΈΡ ΠΎΠ±ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄Π°. Π£ Π²Π°Ρ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΡΡ β ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΡ ΠΎΠΆΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π² ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π» Ρ Ρ PostgreSQL 10. ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ PostgreSQL 12 ΡΠΆΠ΅ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π΅Π΅, ΡΠ΅ΠΌ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π», Π½Π΅ Π»Π΅Π½ΠΈΡΠ΅ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²ΡΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ Π² ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com