Π˜Π·Π»ΠΈΠ·Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π‘Π£Π‘Π” PostgreSQL 14

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

Основни нововъвСдСния:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ JSON Π΄Π°Π½Π½ΠΈ Ρ‡Ρ€Π΅Π· ΠΈΠ·Ρ€Π°Π·ΠΈ, наподобяващи Ρ€Π°Π±ΠΎΡ‚Π° с масиви: SELECT (β€˜{ Β«postgresΒ»: { Β«releaseΒ»: 14 }}’::jsonb)[β€˜postgres’][β€˜release’]; SELECT * FROM test WHERE details[β€˜attributes’][β€˜size’] = β€˜Β»mediumΒ»β€˜;

    Π‘ΡŠΡ‰ΠΈΡΡ‚ синтаксис Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΈ Π·Π° Π΄Π°Π½Π½ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠ»ΡŽΡ‡/стойност, прСдоставяни ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° hstore. ПодобСн синтаксис Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° унивСрсалСн Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΠΈ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Ρ‚ΠΈΠΏΠ° hstore: INSERT INTO mytable VALUES (β€˜a=>b, c=>d’); SELECT h[β€˜a’] FROM mytable; UPDATE mytable SET h[β€˜c’] = β€˜new’;

  • БСмСйството ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ²Π΅ Π·Π° опрСдСлянС Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΎ с Π½ΠΎΠ²ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅ β€žmultirangeβ€œ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ ΡΠΏΠΈΡΡŠΡ†ΠΈ ΠΎΡ‚ Π½Π΅ΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‰ΠΈ сС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ ΠΎΡ‚ стойности. Π’ допълнСниС към всСки ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅Π½ Ρ‚ΠΈΠΏ Π΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ своя multirange Ρ‚ΠΈΠΏ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΡŠΡ‚ β€žint4rangeβ€œ отговаря Π½Π° β€žint4multirangeβ€œ, Π° β€ždaterangeβ€œ β€” Π½Π° β€ždatemultirangeβ€œ. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ‚ΠΈΠΏΠΎΠ²Π΅ опростява Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° заявки, ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€Π°Ρ‰ΠΈ със слоТни послСдоватСлности ΠΎΡ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ. SELECT β€˜{[3,7), [8,9)}’::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • ВнСсСни са ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° подобряванС Π½Π° производитСлността Π½Π° високо Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½ΠΈ систСми, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈ голям Π±Ρ€ΠΎΠΉ Π²Ρ€ΡŠΠ·ΠΊΠΈ. Π’ някои тСстовС Π΅ наблюдаван Π΄Π²ΠΎΠ΅Π½ Ρ€ΡŠΡΡ‚ Π½Π° производитСлността.
  • ПовишСна Π΅ СфСктивността Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° индСкси B-tree ΠΈ Π΅ Ρ€Π΅ΡˆΠ΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ с ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° индСкси ΠΏΡ€ΠΈ чСсто обновяванС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° клиСнтска страна (Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π½Π° Π½ΠΈΠ²ΠΎ libpq) Ρ€Π΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π½Π° (pipeline) ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° заявки, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ускоряванС Π½Π° сцСнарии Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Π‘Π”, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° голям Π±Ρ€ΠΎΠΉ ΠΌΠ°Π»ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° запис (INSERT/UPDATE/DELETE) Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° слСдващата заявка, Π±Π΅Π· Π΄Π° сС Ρ‡Π°ΠΊΠ° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π°. Π Π΅ΠΆΠΈΠΌΡŠΡ‚ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ускоряванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΡ€ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ с Π³ΠΎΠ»Π΅ΠΌΠΈ закъснСния Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°.
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ са Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‰ΠΈ няколко. ΡΡŠΡ€Π²ΡŠΡ€ΠΈ PostgreSQL. Π’ рСализация Π½Π° Π»ΠΎΠ³ΠΈΡ‡Π½Π°Ρ‚Π° рСпликация сС появи Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Π² процСс Π½Π° изпълнСниС, Π² ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Ρ€Π΅ΠΆΠΈΠΌ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° производитСлността Π½Π° рСпликацията Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. ОсвСн Ρ‚ΠΎΠ²Π°, Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΡΡ‚ΡŠΠΏΠ²Π°Ρ‰ΠΈ Π² процСса Π½Π° Π»ΠΎΠ³ΠΈΡ‡Π½Π°Ρ‚Π° рСпликация, Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½ΠΎ.
  • Π’ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° външни Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Foreign Data Wrapper (postgres_fdw) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° заявки, която Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠ° само ΠΏΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с Π΄Ρ€ΡƒΠ³ΠΈ PostgreSQL ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π² postgres_fdw Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° добавянС Π½Π° Π΄Π°Π½Π½ΠΈ във външни Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° сСкционирани Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Ρ‡Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° 'IMPORT FOREIGN SCHEMA'.
  • ВнСсСни са ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² рСализацията Π½Π° опСрацията VACUUM (ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ ΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° дисковото Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅). Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ спСшСн Ρ€Π΅ΠΆΠΈΠΌ Π½Π° почистванС ('emergency mode'), пропускащ Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ почистванС, Π°ΠΊΠΎ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ условия Π·Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° Π²Ρ‚ΠΎΡ€ΠΈ Ρ†ΠΈΠΊΡŠΠ» Π½Π° Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ (transaction ID wraparound). НамалСни са Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° индСкси Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ B-Tree. Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΅ ускорСно ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° опСрацията 'ANALYZE', ΡΡŠΠ±ΠΈΡ€Π°Ρ‰Π° статистика Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π‘Π”.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° настройка Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π° компрСсия, ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½ Π² систСмата TOAST, ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π½Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠ°Ρ‚ΠΎ тСкстови Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈΠ»ΠΈ Π³Π΅ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈΡ‡Π½Π° информация. ОсвСн ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π° компрСсия pglz Π² TOAST сСга ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ LZ4.
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ са срСдствата Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π‘Π£Π‘Π”. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са прСдставяния Π·Π° прослСдяванС Π½Π° Π½Π°ΠΏΡ€Π΅Π΄ΡŠΠΊΠ° Π½Π° изпълнСниС Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ 'COPY' (pg_stat_progress_copy), статистика Π·Π° слотовС Π·Π° рСпликация (pg_stat_replication_slots) ΠΈ активност, ΡΠ²ΡŠΡ€Π·Π°Π½Π° с WAL-Π»ΠΎΠ³ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ (pg_stat_wal). Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ функцията compute_query_id, която Π²ΠΊΠ»ΡŽΡ‡Π²Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ подсистСми, ΠΊΠ°Ρ‚ΠΎ pg_stat_activity ΠΈ EXPLAIN VERBOSE, прослСдяванС Π½Π° заявки с присвояванС Π½Π° ΡƒΠ½ΠΈΠΊΠ°Π»Π΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π° всяка заявка.
  • Π’ планирания Π½Π° Π·Π°ΠΏΠΈΡ‚ΠΈΡ‚Π΅ бяха Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ подобряват ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½Π°Ρ‚Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° запитвания ΠΈ позволяват повишаванС Π½Π° производитСлността ΠΏΡ€ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π° изпълнСниС Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° послСдоватСлно сканиранС Π½Π° записи, ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ пусканС Π½Π° запитвания Π² PL/pgSQL с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«RETURN QUERYΒ» ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ изпълнСниС Π½Π° запитвания Π² Β«REFRESH MATERIALIZED VIEWΒ». Π—Π° подобряванС Π½Π° производитСлността Π½Π° Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ обСдинСния (join) Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅.
  • Π—Π° оптимизация Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ Π²Π΅Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° статистика, Π° Π·Π° оптимизация Π½Π° ΠΎΠΊΠΎΠ½Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½Π° сортировка.
  • Π’ Ρ…Ρ€Π°Π½ΠΈΠΌΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ‚ ΠΊΠΎΠ΄, Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° опрСдСлянС Π½Π° Π²Ρ€ΡŠΡ‰Π°Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Β«OUTΒ».
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ функцията date_bin Π·Π° Π·Π°ΠΊΡ€ΡŠΠ³Π»ΡΠ½Π΅ Π½Π° стойности с Ρ‚ΠΈΠΏ timestamp Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с зададСния ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». SELECT date_bin(’15 minutes’, TIMESTAMP β€˜2020-02-11 15:44:17’, TIMESTAMP β€˜2001-01-01’); 2020-02-11 15:30:00
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ‚Π΅ Π² стандарта SQL ΠΈΠ·Ρ€Π°Π·ΠΈ SEARCH ΠΈ CYCLE, ΠΊΠΎΠΈΡ‚ΠΎ опростяват ΠΏΠΎΠ΄Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π΅Ρ‚ΠΎ Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ Π² рСкурсивни ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π½ΠΈ ΠΈΠ·Ρ€Π°Π·ΠΈ (Common Table Expression, CTE). WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t.id = st.link ) SEARCH DEPTH FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° psql Π΅ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ с Ρ‚Π°Π±ΡƒΠ»Π°Ρ‚ΠΎΡ€Π°, Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«\dfΒ» Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ‚Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅, Π° Π² ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Β«\dXΒ» Π΅ Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π°Ρ‚Π° статистика.
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° Π½Π°Π·Π½Π°Ρ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π°Π²Π° Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅, допускащи само Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈΠ»ΠΈ само запис. ΠŸΡ€Π°Π²Π°Ρ‚Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² ΠΏΡ€ΠΈΠ²Ρ€ΡŠΠ·ΠΊΠ° към ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΠΈΠ·Π³Π»Π΅Π΄ΠΈ ΠΈ схСми с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ Ρ€ΠΎΠ»ΠΈ pg_read_all_data ΠΈ pg_write_all_data. GRANT pg_read_all_data TO user1;
  • Π’ Π½ΠΎΠ²ΠΈΡ‚Π΅ инсталации ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ осигурСно ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»Π½Π° автСнтикация с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° SCRAM-SHA-256 вмСсто md5 (ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ΡŠΡ‚ Β«password_encryptionΒ» ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° postgresql.conf сСга сС Π·Π°Π΄Π°Π²Π° Π½Π° стойност β€˜scram-sha-256’).

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

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