, ΠΏΠΎΡΠ»Π΅Π΄Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° βΠ½Π°ΠΉ-Π΄ΠΎΠ±ΡΠ°ΡΠ° Π² ΡΠ²Π΅ΡΠ° ΡΠ΅Π»Π°ΡΠΈΠΎΠ½Π½Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄β ΡΠ΅ ΠΈΠ·Π»Π΅Π·Π΅ ΡΠ»Π΅Π΄ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅Π΄ΠΌΠΈΡΠΈ (Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΎ Π²ΡΡΠ²ΠΈ ΠΏΠΎ ΠΏΠ»Π°Π½). Π’ΠΎΠ²Π° ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡ Π³ΡΠ°ΡΠΈΠΊ β Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½ΠΎΠ²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π° Π²Π΅Π΄Π½ΡΠΆ Π³ΠΎΠ΄ΠΈΡΠ½ΠΎ ΠΈ, ΡΠ΅ΡΡΠ½ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, ΡΠΎΠ²Π° Π΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΠ²Π°ΡΠΎ. ΠΠ°ΡΠΎΠ²Π° ΠΈ ΡΡΠ°Π½Π°Ρ Π°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ»Π΅Π½ Π½Π° ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° PostgreSQL.
Π‘ΠΏΠΎΡΠ΅Π΄ ΠΌΠ΅Π½, Π·Π° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΡ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ Π²Π΅ΡΡΠΈΠΈ, 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 ΠΏΡΠ΅ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠΈΡΠ΅ Π²ΠΎΠ΄Π΅ΡΠ΅ Π΄ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π΅Π½ ΠΏΡΠ΅ΡΡΠΎΠΉ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π² ΡΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π΅ Π±Π΅ΡΠ΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ. ΠΠΎ Π² PostgreSQL 12 ΠΈΠΌΠ° ΠΎΡΠ΅ Π΅Π΄Π½Π° ΡΡΠ΄Π΅ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ: ΡΠ΅Π³Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠ΅ΡΡΠΎΠΉ. Π PostgreSQL 12 ΠΈΠΌΠ° ΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π½Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅. ΠΡΠ΅ Π΅Π΄Π½Π° ΠΎΡΠΌΠ΅ΡΠΊΠ°, ΠΊΡΠ΄Π΅ΡΠΎ Π½Π΅ ΡΠ΅ ΠΌΠΈΠ½Π° Π±Π΅Π· ΠΌΠ°Π³ΠΈΡ, β
ΠΆΡΡΠ½Π°Π» Π·Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ . ΠΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΆΡΡΠ½Π°Π» ΡΠΏΡΠ΅ΠΆΠ΄Π°ΡΡΠ΅ΠΉ Π·Π°ΠΏΠΈΡΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π½Π° Π΄ΠΈΡΠΊ, Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π·ΠΈΡΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
Π PostgreSQL 12 ΡΠ°Π·Ρ ΠΎΠ΄ΠΈΡΠ΅ ΠΏΠΎ Π·Π°ΠΏΠΈΡΠΈΡΠ΅ WAL, ΡΡΠ·Π΄Π°Π²Π°Π½ΠΈ ΠΎΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠ΅ GiST, GIN ΠΈ SP-GiST ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½Π΄Π΅ΠΊΡ, Π½Π°ΠΌΠ°Π»ΡΠ²Π°Ρ. Π’ΠΎΠ²Π° ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π°: Π·Π°ΠΏΠΈΡΠΈΡΠ΅ WAL Π·Π°Π΅ΠΌΠ°Ρ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΌΡΡΡΠΎ Π½Π° Π΄ΠΈΡΠΊΠ° ΠΈ Π΄Π°Π½Π½ΠΈΡΠ΅ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΡΠ΅ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ ΡΠ»Π΅Π΄ ΡΡΠΈΠ² ΠΈΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ. ΠΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΈ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ° ΡΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π³Π΅ΠΎΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° PostGIS, ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ° GiST), ΡΠΎΠ²Π° Π΅ ΠΎΡΠ΅ Π΅Π΄Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΎΡ Π²Π°ΡΠ° ΡΡΡΠ°Π½Π°.
Π‘Π΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ β ΠΏΠΎΠ²Π΅ΡΠ΅, ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΎ, ΠΏΠΎ-Π±ΡΡΠ·ΠΎ
Π PostgreSQL 10 Π±Π΅ΡΠ΅ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ . Π PostgreSQL 11 ΡΡΠ°Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅. Π PostgreSQL 12 ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΌΠ°ΡΠ°Π±ΡΡ Π½Π° ΡΠ΅ΠΊΡΠΈΠΈΡΠ΅.
Π PostgreSQL 12 ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π°ΠΊΠΎ ΡΠ°Π±Π»ΠΈΡΠ°ΡΠ° ΠΈΠΌΠ° Ρ ΠΈΠ»ΡΠ΄ΠΈ ΡΠ΅ΠΊΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ Π·Π°ΡΠ²ΠΊΠ°ΡΠ° Π·Π°ΡΡΠ³Π° ΡΠ°ΠΌΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ΅ΠΊΡΠΈΠΈ Π² ΡΠ°Π±Π»ΠΈΡΠ° Ρ Ρ ΠΈΠ»ΡΠ΄ΠΈ, ΡΡ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ°ΠΊΠΈΠ²Π° ΡΠΈΠΏΠΎΠ²Π΅ Π·Π°ΡΠ²ΠΊΠΈ. Π‘ΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ INSERT Π² ΡΠ°Π±Π»ΠΈΡΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΠΈΠΈ ΡΠ΅ ΡΡΠΊΠΎΡΠΈΡ Π°.
ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΡΡΠ΅Π· β ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΎΡΠΎ, ΡΠΎΠ²Π° Π΅ ΠΎΡΠ»ΠΈΡΠ΅Π½ Π½Π°ΡΠΈΠ½ ΠΈ Π΅ΡΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡΠΈΠΌΠ΅Ρ β Π² ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ Π² PostgreSQL 12 ΡΡΡΠΎ ΡΡΠ°Π½Π° ΠΏΠΎ-Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. Π‘ COPY ΠΈ Π±Π΅Π· ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ Π±ΡΡΠ·ΠΎ, Π° Π² PostgreSQL 12 Π΅ Π½Π°ΠΏΡΠ°Π²ΠΎ Π±ΡΡΠ·ΠΎ.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²Π° Π² PostgreSQL ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΡ ΡΠ°Π½ΡΠ²Π°ΡΠ΅ Π½Π°Π±ΠΎΡΠΈ ΠΎΡ Π΄Π°Π½Π½ΠΈ Ρ ΠΎΡΠ΅ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΡΠ°Π·ΠΌΠ΅Ρ, Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ΡΠΎ ΠΈΠΌ ΡΡΠ°Π½Π° ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ. Π Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΎΡ Π²Π°ΡΠ° ΡΡΡΠ°Π½Π°. ΠΠΊΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π²ΠΈ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π°ΠΏΠΈΡΠ²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ Π²ΡΠ΅ΠΌΠ΅Π²ΠΈ ΡΠ΅Π΄ΠΎΠ²Π΅, ΠΏΡΠΎΡΡΠ°ΡΠ° Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ.
Π ΠΌΠ°ΠΊΠ°Ρ ΡΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π° Π½Π΅ Π΅ ΡΠΎΡΠ½ΠΎ ΠΎΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΡΠ° βΠ°ΠΏΠ³ΡΠ΅ΠΉΠ΄ ΠΈ ΡΠ΅ ΡΠ°Π΄Π²Π°Ρβ, Π² PostgreSQL 12 ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ Π²ΡΠ½ΡΠ½ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠΎΡΠ°Ρ ΠΊΡΠΌ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½ΠΈ ΡΠ°Π±Π»ΠΈΡΠΈ, Π·Π° Π΄Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΡΠ΅ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°Π½Π΅ΡΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΠ²ΠΈΠ΅.
ΠΠ°ΠΏΠΈΡΠ²Π°Π½ΠΈΡΡΠ° WITH ΡΡΠ°Π½Π°Ρ Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠΈ
ΠΠΎΠ³Π°ΡΠΎ (ΡΠ΅ ΡΡΡΠΎ ΡΠ° CTE, ΡΠ΅ ΡΡΡΠΎ ΡΠ° Π·Π°ΠΏΠΈΡΠ²Π°Π½ΠΈΡ WITH), Π½ΡΠΌΠ°ΠΌ ΡΡΡΠΏΠ΅Π½ΠΈΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ° ΡΡΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π°, . Π’ΠΎΠ²Π° Π΅ Π΅Π΄Π½Π° ΠΎΡ ΡΠ΅Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΡΠΊΠΎΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ. ΠΠΊΠΎ, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ CTE.
Π§Π΅ΡΡΠΎ Π·Π°Π±Π΅Π»ΡΠ·Π²Π°ΠΌ, ΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈΡΠ΅ Π² SQL ΠΎΠ±ΠΈΡΠ°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ CTE: Π°ΠΊΠΎ Π³ΠΈ Π½Π°ΠΏΠΈΡΠ΅Ρ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π°ΡΠΈΠ½, Π½Π°ΠΈΡΡΠΈΠ½Π° ΡΡΠ΅ΡΠ°Ρ, ΡΠ΅ ΠΏΠΈΡΠ΅Ρ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΠΈΡΠ½ΠΎ Π°Π· ΠΎΠ±ΠΈΡΠ°Ρ Π΄Π° ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°ΠΌ ΡΠ΅Π·ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Π·Π° Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Ρ Π±Π΅Π· Ρ CTE ΠΈ Π΄Π° ΡΠ²Π΅Π»ΠΈΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°. Π‘Π΅Π³Π° Π²ΡΠΈΡΠΊΠΎ Π΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎ.
PostgreSQL 12 ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠΈΠΏ CTE Π±Π΅Π· ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ Π΅ΡΠ΅ΠΊΡΠΈ (SELECT), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π²Π΅Π΄Π½ΡΠΆ ΠΏΠΎ-Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΊΡΠ°Ρ Π½Π° Π·Π°ΡΠ²ΠΊΠ°ΡΠ°. ΠΠΊΠΎ Π²ΠΎΠ΄Π΅Ρ
ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Ρ CTE, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ²Π°Ρ
, ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΡ ΡΡΡ
ΡΡΡ
Π° Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ Π² ΡΠ°Π·ΠΈ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ. Π’ΠΎΠ²Π° ΠΏΠΎΠΌΠ°Π³Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΏΠΈΡΠ°Ρ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΠ΅Π³Π° ΡΠ°Π±ΠΎΡΠΈ ΠΈ Π±ΡΡΠ·ΠΎ.
ΠΡΠ΅ ΠΏΠΎΠ²Π΅ΡΠ΅, PostgreSQL 12 ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° SQL ΡΠ°ΠΌ, Π½ΡΠΌΠ° Π΄Π° ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΠΏΡΠ°Π²ΠΈΡΠ΅ Π½ΠΈΡΠΎ. Π ΠΌΠ°ΠΊΠ°Ρ ΡΠ΅ ΡΠ΅Π³Π° ΡΠΈΠ³ΡΡΠ½ΠΎ Π½ΡΠΌΠ° Π΄Π° ΠΌΠΈ ΡΠ΅ Π½Π°Π»Π°Π³Π° Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°ΠΌ ΡΠ°ΠΊΠΈΠ²Π° Π·Π°ΡΠ²ΠΊΠΈ, Π΅ ΡΡΡΠ°Ρ ΠΎΡΠ½ΠΎ, ΡΠ΅ PostgreSQL ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π½Π°Π΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π·Π°ΡΠ²ΠΊΠΈΡΠ΅.
Just-in-Time (JIT) β ΡΠ΅Π³Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅
Π ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ PostgreSQL 12 Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. ΠΡΡΠ²ΠΎ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π·Π° Π½ΡΠΊΠΎΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, Π° Π²ΡΠΎΡΠΎ, Π·Π°ΡΠ²ΠΊΠΈΡΠ΅ Ρ ΠΈΠ·ΡΠ°Π·ΠΈ (Π½Π°ΠΉ-ΠΏΡΠΎΡΡΠΈΡΡ ΠΏΡΠΈΠΌΠ΅Ρ β x + y) Π² ΡΠΏΠΈΡΡΡΠΈΡΠ΅ Π·Π° ΠΈΠ·Π±ΠΎΡ (ΠΊΠΎΠΈΡΠΎ ΡΡΠΎΡΡ ΡΠ»Π΅Π΄ SELECT), Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ΅, ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ WHERE ΠΈ Π΄ΡΡΠ³ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ JIT Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ°.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ 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
