ВСрсия Π½Π° PostgreSQL 15

Π‘Π»Π΅Π΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° бСшС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π½ΠΎΠ² стабилСн ΠΊΠ»ΠΎΠ½ Π½Π° Π‘Π£Π‘Π” PostgreSQL 15. АктуализациитС Π·Π° новия ΠΊΠ»ΠΎΠ½ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ пуснати Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ‚ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π΄ΠΎ Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ 2027 Π³.

Основни ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° SQL ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° "MERGE", която ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π° Π½Π° ΠΈΠ·Ρ€Π°Π·Π° "INSERT ... ON CONFLICT". MERGE Π²ΠΈ позволява Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ условни SQL ΠΈΠ·Ρ€Π°Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ INSERT, UPDATE ΠΈ DELETE Π² Π΅Π΄ΠΈΠ½ ΠΈΠ·Ρ€Π°Π·. НапримСр, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ MERGE, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΡ‚Π΅ Π΄Π²Π΅ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΠΊΠ°Ρ‚ΠΎ Π²ΠΌΡŠΠΊΠ½Π΅Ρ‚Π΅ липсващи записи ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅. ΠžΠ‘Π›Π˜Π’ΠΠΠ• Π’ customer_account ca Π˜Π—ΠŸΠžΠ›Π—Π’ΠΠΠ• Π½Π° recent_transactions t ON t.customer_id = ca.customer_id WHEN MATCH THEN UPDATE SET balance = balance + transaction_value WHEN NOT MATCHED THEN INSERT (customer_id, balance) VALUES (t.customer_id, t.transaction_value);
  • АлгоритмитС Π·Π° сортиранС Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π½Π° диска са Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΈ. Π’ зависимост ΠΎΡ‚ Π²ΠΈΠ΄Π° Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅, тСстовСтС ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° скоростта Π½Π° сортиранС ΠΎΡ‚ 25% Π΄ΠΎ 400%.
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ row_number(), rank(), dense_rank() ΠΈ count(), са ускорСни.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ изпълнСниС Π½Π° заявки с ΠΈΠ·Ρ€Π°Π·Π° β€œSELECT DISTINCT”.
  • ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡŠΡ‚ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° външни Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Foreign Data Wrapper (postgres_fdw) Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° асинхронни Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ Π² допълнСниС към Π΄ΠΎΠ±Π°Π²Π΅Π½Π°Ρ‚Π° ΠΏΠΎ-Ρ€Π°Π½ΠΎ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° асинхронна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки към външни ΡΡŠΡ€Π²ΡŠΡ€ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LZ4 ΠΈ Zstandard (zstd) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° компрСсиранС Π½Π° рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π½Π° WAL Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈ някои натоварвания ΠΌΠΎΠΆΠ΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ производитСлността ΠΈ Π΄Π° спСсти дисково пространство. Π—Π° Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ слСд ΠΏΠΎΠ²Ρ€Π΅Π΄Π°, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·Π²Π»ΠΈΡ‡Π°Π½Π΅ Π½Π° страници, появяващи сС Π² ΠΆΡƒΡ€Π½Π°Π»Π° Π½Π° WAL.
  • ΠŸΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° pg_basebackup Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° компрСсиранС ΠΎΡ‚ страна Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π½Π° Π°Ρ€Ρ…ΠΈΠ²Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ gzip, LZ4 ΠΈΠ»ΠΈ zstd. Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ свои собствСни ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π±Π΅Π· нСобходимостта Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° shell.
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са сСрия ΠΎΡ‚ Π½ΠΎΠ²ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Π½ΠΈΠ·ΠΎΠ²Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° рСгулярни ΠΈΠ·Ρ€Π°Π·ΠΈ: regexp_count(), regexp_instr(), regexp_like() ΠΈ regexp_substr().
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π°Π³Ρ€Π΅Π³ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ с ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ (β€žmultirangeβ€œ) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към функцията range_agg().
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ security_invoker, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈ позволява Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΈΠ·Π³Π»Π΅Π΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‰ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π° Π½Π΅ ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ·Π΄Π°Ρ‚Π΅Π» Π½Π° ΠΈΠ·Π³Π»Π΅Π΄ΠΈ.
  • Π—Π° логичСска рСпликация Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ„ΠΈΠ»Ρ‚Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΈ ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡŠΡ†ΠΈ с ΠΊΠΎΠ»ΠΎΠ½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява ΠΎΡ‚ страна Π½Π° податСля Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ подмноТСство ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° Π·Π° рСпликация. Π’ допълнСниС, Π½ΠΎΠ²Π°Ρ‚Π° вСрсия опростява ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Π΅Ρ‡Π΅ Π΅ възмоТно Π΄Π° сС пропускат ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π½ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π΄Π° сС Π΄Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° Π°Π±ΠΎΠ½Π°ΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Π³Ρ€Π΅ΡˆΠΊΠ°. ЛогичСската рСпликация позволява ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π²ΡƒΡ„Π°Π·ΠΎΠ²ΠΈ Π°Π½Π³Π°ΠΆΠΈΠΌΠ΅Π½Ρ‚ΠΈ (2PC).
  • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² Π»ΠΎΠ³ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ - jsonlog, ΠΊΠΎΠΉΡ‚ΠΎ записва информацията Π² структуриран Π²ΠΈΠ΄ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° JSON Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.
  • ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° Π΄Π΅Π»Π΅Π³ΠΈΡ€Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»Π½ΠΈ ΠΏΡ€Π°Π²Π° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° промСнят ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° конфигурацията Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° PostgreSQL.
  • ΠŸΠΎΠΌΠΎΡ‰Π½Π°Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° psql Π΄ΠΎΠ±Π°Π²ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° информация Π·Π° настройки (pg_settings) с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° β€œ\dconfig”.
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° сподСлСна ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ осигурСно Π·Π° Π½Π°Ρ‚Ρ€ΡƒΠΏΠ²Π°Π½Π΅ Π½Π° статистика Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π΄Π° сС ΠΎΡ‚ΡŠΡ€Π²Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ процСс Π½Π° ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° статистика ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ Π½ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° диск.
  • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ICU Π»ΠΎΠΊΠ°Π»ΠΈΡ‚Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ β€žICU Collationβ€œ; ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° само Π»ΠΎΠΊΠ°Π»ΠΈΡ‚Π΅ Π½Π° libc ΠΌΠΎΠΆΠ΅Ρ…Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Π»ΠΎΠΊΠ°Π» ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ pg_walinspect, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΈ позволява Π΄Π° провСряватС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с WAL рСгистрационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° SQL заявки.
  • Π—Π° ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ‚Π° схСма всички ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° собствСника Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, ΠΈΠΌΠ°Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΈ ΠΏΡ€Π°Π²Π° Π·Π° изпълнСниС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° CREATE.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° Python 2 Π΅ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚Π° Π² PL/Python ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ Π΅ остарСлият ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ Π½Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅.

Π”ΠΎΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅: ΠžΡ‚ 19:00 Π΄ΠΎ 20:00 (MSK) Ρ‰Π΅ ΠΈΠΌΠ° ΡƒΠ΅Π±ΠΈΠ½Π°Ρ€ Π·Π° обсъТданС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Π½ΠΎΠ²Π°Ρ‚Π° вСрсия с ПавСл Π›ΡƒΠ·Π°Π½ΠΎΠ² (Postgres Professional). Π—Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΏΡ€ΠΈΡΡŠΠ΅Π΄ΠΈΠ½ΡΡ‚ към ΠΈΠ·Π»ΡŠΡ‡Π²Π°Π½Π΅Ρ‚ΠΎ, Π·Π°ΠΏΠΈΡΡŠΡ‚ Π½Π° юнския Π΄ΠΎΠΊΠ»Π°Π΄ Π½Π° ПавСл β€žPostgreSQL 15: MERGE ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅β€œ Π² PGConf.Russia Π΅ ΠΎΡ‚Π²ΠΎΡ€Π΅Π½.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

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