Π Π΅Π»ΠΈΠ· Π½Π° Π‘Π£Π‘Π” PostgreSQL 18

Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, Π½ΠΎΠ²Π°Ρ‚Π° стабилна вСрсия Π½Π° Π‘Π£Π‘Π” PostgreSQL 18 Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½Π°. АктуализациитС Π·Π° Π½ΠΎΠ²Π°Ρ‚Π° вСрсия Ρ‰Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Ρ‚ Π² ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅Ρ‚ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π΄ΠΎ Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ 2030 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° PostgreSQL 13.x, Π½Π°ΠΉ-старата вСрсия с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Ρ‰Π΅ бъдС ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚Π΅Π½Π° Π½Π° 13 Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ.

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

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ подсистСма Π·Π° асинхронСн Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄, която позволява Π΄Π° сС ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈ пропускната способност ΠΈ Π΄Π° сС ΠΏΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ забавянията. ОсвСн унивСрсалната рСализация Π½Π° AIO (io_method=worker), Π½Π°Π»ΠΈΡ‡Π½Π° Π½Π° всички ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ, Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° многопроцСсорна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° (ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ 3), Π² Linux ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΡŠΡ‚ Π·Π° асинхронСн Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄ io_uring (io_method=io_uring), ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½ ΠΎΡ‚ ядрото Π½Π° Linux 5.1. Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° асинхронният Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° само Π·Π° ускоряванС Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма, ΠΊΠ°Ρ‚ΠΎ сСквСнционно ΠΎΠ±Ρ…ΠΎΠΆΠ΄Π°Π½Π΅, сканиранС Π½Π° индСкси ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° почистванС (vacuum). Π’ някои тСстовС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° AIO Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° производитСлността с 2-3 ΠΏΡŠΡ‚ΠΈ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° запис всС ΠΎΡ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π² синхронСн Ρ€Π΅ΠΆΠΈΠΌ, Π·Π° Π΄Π° сС спазят изискванията Π½Π° ACID.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ оптимизация "skip scan" Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΡΡ‚ΡŠΠ»Π±Ρ†ΠΎΠ²ΠΈ индСкси, Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° която ΠΈΠ½Π΄Π΅ΠΊΡΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ само Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ индСксиран ΡΡ‚ΡŠΠ»Π±Π΅Ρ† ΠΈ ΠΏΡŠΠ»Π½Π°Ρ‚Π° комбинация Π½Π° ΡΡ‚ΡŠΠ»Π±Ρ†ΠΈΡ‚Π΅, Π½ΠΎ ΠΈ Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° останалитС индСксирани ΡΡ‚ΡŠΠ»Π±Ρ†ΠΈ ΠΏΠΎΠΎΡ‚Π΄Π΅Π»Π½ΠΎ. НапримСр, ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π°, ΠΏΡ€ΠΈ създаванС Π½Π° B-tree индСкс Π²ΡŠΡ€Ρ…Ρƒ ΡΡ‚ΡŠΠ»Π±Ρ†ΠΈΡ‚Π΅ "(status, date)", ΠΈΠ½Π΄Π΅ΠΊΡΡŠΡ‚ сС ΠΏΡ€ΠΈΠ»Π°Π³Π°ΡˆΠ΅ само Π·Π° заявки, ΠΊΠΎΠΈΡ‚ΠΎ провСряват ΠΏΠΎΠ»Π΅Ρ‚ΠΎ "status" ΠΈΠ»ΠΈ ΠΈ Π΄Π²Π΅Ρ‚Π΅ ΠΏΠΎΠ»Π΅Ρ‚Π° "status" ΠΈ "date", Π° ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° заявка само Π·Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ "date" сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΡˆΠ΅ сканиранС Π½Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π°. Π Π΅ΠΆΠΈΠΌΡŠΡ‚ "skip scan" позволява Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ ситуации Π΄Π° сС сканира ΠΈΠ½Π΄Π΅ΠΊΡΡŠΡ‚ ΠΏΡ€ΠΈ заявка само Π·Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ "date". Π Π΅ΠΆΠΈΠΌΡŠΡ‚ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° само Π·Π° B-tree индСкси, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π² заявката сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° условСн ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ "=" Π²ΡŠΡ€Ρ…Ρƒ индСксирано ΠΏΠΎΠ»Π΅, Π² ситуации, ΠΊΠΎΠ³Π°Ρ‚ΠΎ пропуснатото ΠΏΠΎΠ»Π΅ ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ стойности (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, оптимизацията Ρ‰Π΅ Π·Π°Ρ€Π°Π±ΠΎΡ‚ΠΈ, Π°ΠΊΠΎ ΠΏΠΎΠ»Π΅Ρ‚ΠΎ статус "status" ΠΈΠΌΠ° няколко фиксирани стойности).
  • Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ индСкситС Π·Π° заявки, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ конструкции Β«ORΒ» ΠΈ Β«IN (…)Β» Π² Π±Π»ΠΎΠΊΠ° Β«WHEREΒ», ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΏΠΎΠ²ΠΈΡˆΠ°Π²Π°Ρ‰ΠΈ производитСлността ΠΏΡ€ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½Π΅ ΠΈ изпълнСниС Π½Π° обСдинСния Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ускорСн Π΅ ΠΊΠΎΠ΄ΡŠΡ‚ Π·Π° сливанС Π½Π° Ρ…Π΅ΡˆΠΎΠ²Π΅ ΠΈ Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ сортиранС ΠΏΡ€ΠΈ сливанС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ).
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° GIN (ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½ ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ индСкс), ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° индСксиранС Π½Π° слоТни стойности, ΠΊΠ°Ρ‚ΠΎ масиви, ΠΈ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ ΠΏΠΎ ΠΏΡŠΠ»Π½ΠΎΡ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΠΈ Π΄Π°Π½Π½ΠΈ ΠΈΠ»ΠΈ структури JSON.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° създаванС Π½Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ прСдставяния ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π·Π° сСкциониранС Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ с ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ индСкси, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ структура B-tree.
  • ПовишСна Π΅ ΠΎΠ±Ρ‰Π°Ρ‚Π° производитСлност Π½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π²Π°Π½ΠΈΡΡ‚Π° Π·Π° заявки, Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ с голямо количСство Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ΠΈ са Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ подобрСния Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° заявки към сСкционирани Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ, ускоряващи отсяванСто Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ сСкции ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сливанС (JOIN).
  • УскорСни са ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ с тСкст, ΠΊΠ°Ρ‚ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π·Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π² Π³ΠΎΡ€Π΅Π½/Π΄ΠΎΠ»Π΅Π½ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€. Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Ρ€Π΅ΠΆΠΈΠΌ PG_UNICODE_FAST Π·Π° ускоряванС Π½Π° ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° свойствата Π½Π° Π»ΠΎΠΊΠ°Π»ΠΈΡ‚Π΅ Π½Π° Unicode-символитС.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° статистиката Π½Π° планирания заявка слСд Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ вСрсии Π½Π° PostgreSQL. Π’ΠΎΠ²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ позволява Π΄Π° сС ΠΈΠ·Π±Π΅Π³Π½Π΅ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° рСсурсоСмката опСрация Β«ANALYZEΒ» слСд стартиранС Π½Π° Π½ΠΎΠ²Π° вСрсия, ΠΏΡ€Π΅Π΄ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° която сС наблюдава спад Π² производитСлността Π½Π° Π‘Π£Π‘Π”.
  • ПовишСна Π΅ производитСлността Π½Π° ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° pg_upgrade, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π·Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Ρ…ΠΎΠ΄Π° към Π½ΠΎΠ²Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° вСрсия Π½Π° PostgreSQL. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ са особСно Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΈ ΠΏΡ€ΠΈ обновяванС Π½Π° Π‘Π”, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ голям Π±Ρ€ΠΎΠΉ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ ΠΈ послСдоватСлности. Π—Π° ускоряванС Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π°, pg_upgrade Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Ρ„Π»Π°Π³ Β«β€”jobs NΒ» Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈΡ‚Π΅ Π² N ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ Ρ„Π»Π°Π³ Β«β€”swapΒ» Π·Π° замяна Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с Π΄Π°Π½Π½ΠΈ изцяло Π±Π΅Π· поставянС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ, Π±Π΅Π· ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½Π΅ ΠΈ Π±Π΅Π· ΠΊΠΎΠΏΠΈΡ€Π°Π½Π΅ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, чиято стойност сС изчислява Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° заявки, Π±Π΅Π· Π΄Π° сС Π·Π°ΠΏΠ°Π·Π²Π° Π½Π° диск. Ако Π² ΠΈΠ·Ρ€Π°Π·Π° β€žCREATE TABLEβ€¦β€œ Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° само ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π°Ρ‚Π° Π΄ΡƒΠΌΠ° β€žGENERATEDβ€œ Π±Π΅Π· уточняванС Π½Π° Ρ‚ΠΈΠΏΠ° (STORED ΠΈΠ»ΠΈ VIRTUAL), новият Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ вмСсто старото изпълнСниС. Π’ старото изпълнСниС стойноститС сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ…Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€žINSERTβ€œ ΠΈΠ»ΠΈ β€žUPDATEβ€œ ΠΈ сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ…Π° Π½Π° диск Π·Π° послСдваща ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°. ΠΠ΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ Π΅ Π½Π΅Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π² индСкси, Π° прСдимството Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚Ρ‚Π° Π·Π° нормализация ΠΈ промяна Π½Π° Π΄Π°Π½Π½ΠΈ Π² Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с JSON Π΄Π°Π½Π½ΠΈ). Π©ΠΎ сС отнася Π΄ΠΎ класичСскитС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΈ, Π² Π½ΠΎΠ²ΠΎΡ‚ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π΅ осигурСна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° Π»ΠΎΠ³ΠΈΡ‡Π½Π°Ρ‚Π° рСпликация.
  • Π’ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈΡ‚Π΅ INSERT, UPDATE, DELETE ΠΈ MERGE Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ (OLD) ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈ (CURRENT) стойности Π² ΠΈΠ·Ρ€Π°Π·Π° RETURNING. НапримСр, β€žUPDATE… RETURNING WITH (OLD AS o, NEW AS n) o.*, n.*.β€œ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ функция uuidv7() Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° случайни ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° UUIDv7. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ старата функция Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° UUID (gen_random_uuid), която сСга Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π°Π»ΠΈΡ‡Π½Π° ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Ρ‚ΠΎ uuidv4(), Π² UUIDv7, освСн случайна стойност, сС Π²ΠΊΠ»ΡŽΡ‡Π²Π° ΠΈ Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π½Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅. НаличиСто Π½Π° ΠΏΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΈ части Π² стойността Π½Π° UUID (ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ 12 символа β€” Π΅ΠΏΠΎΡ…Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅, Π° слСдващитС 18 β€” случайна стойност) ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° СфСктивността Π½Π° сортиранС ΠΈ индСксиранС, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ UUID ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΠΏΡŠΡ€Π²ΠΈΡ‡Π½ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅, създадСни Π² Π±Π»ΠΈΠ·ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅, сС Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‚ Π±Π»ΠΈΠ·ΠΎ Π΅Π΄ΠΈΠ½ Π΄ΠΎ Π΄Ρ€ΡƒΠ³ Π² индСкса).
  • Π’ опСрацията β€žLIKEβ€œ Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° съвпадСния с тСкст, Π² ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€Π°Π½ΠΈ свойства Π½Π° локализация β€žcollationβ€œ, позволяващи ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° съвпадСния с ΠΎΠ³Π»Π΅Π΄ Π½Π° смисъла Π½Π° символитС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ сравнСниС ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ сС Π²Π·Π΅ΠΌΠ° ΠΏΠΎΠ΄ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π·Π½Π°ΠΊΡŠΡ‚ Π½Π° ΡƒΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅Ρ‚ΠΎ). Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ функция CASEFOLD Π·Π° промяна Π½Π° рСгистра Π½Π° символитС с ΠΎΠ³Π»Π΅Π΄ Π½Π° свойствата Π½Π° локализация β€žcollationβ€œ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, някои символи ΠΈΠΌΠ°Ρ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΄Π²Π° ΠΌΠ°Π»ΠΊΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ сравнСниС изискват ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½Π΅ Π² Π³ΠΎΡ€Π΅Π½ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€, Π° Π½Π΅ Π² Π΄ΠΎΠ»Π΅Π½).
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ограничСния (temporal constraint). Π’ стойноститС Β«PRIMARY KEYΒ» ΠΈ Β«UNIQUEΒ» Π·Π° добавянС Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ограничСния слСдва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·Ρ€Π°Π·ΡŠΡ‚ Β«WITHOUT OVERLAPSΒ», Π° Π² стойността Β«FOREIGN KEYΒ» β€” ΠΈΠ·Ρ€Π°Π·ΡŠΡ‚ PERIOD. НапримСр, ΠΏΡ€ΠΈ опрСдСлянС Π½Π° основни ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Ρ‚ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅ с ΠΏΡ€ΠΈΠΏΠΎΠΊΡ€ΠΈΠ²Π°Ρ‰ΠΈ сС Π²Ρ€Π΅ΠΌΠ΅Π²ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Β«CREATE FOREIGN TABLE … LIKE commandΒ» Π·Π° създаванС Π½Π° схСма Π½Π° външна Ρ‚Π°Π±Π»ΠΈΡ†Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ към Π‘Π£Π‘Π”, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ аутСнтификация Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° OAUTH 2.0 с ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠΊΠ΅Π½ Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ вмСсто ΠΏΠ°Ρ€ΠΎΠ»Π°. Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° OAUTH позволява Π΄Π° Π½Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π² Π‘Π”, Π° идСнтификацията Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‡Ρ€Π΅Π· външни услуги, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°Ρ‚ΠΎ Π΄Π²ΡƒΡ„Π°ΠΊΡ‚ΠΎΡ€Π½Π° аутСнтификация ΠΈ Π΅Π΄ΠΈΠ½Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π·Π° Π²Ρ…ΠΎΠ΄ (SSO).
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° функция ssl_tls13_ciphers(), Ρ‡Ρ€Π΅Π· която ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ списък Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° ΠΊΡ€ΠΈΠΏΡ‚ΠΈΡ€Π°Π½Π΅, допустими ΠΏΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» TLSv1.3.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π·Π° аутСнтификация с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΠ° md5 Π·Π° Ρ…Π΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ Π΅ прСмСстСна Π² катСгорията Π½Π° остарСлитС ΠΈ ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°Π½Π΅. ВмСсто md5 сС ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ SCRAM (SCRAM-SHA-256), ΠΊΠΎΠΉΡ‚ΠΎ Π΅ прСдставСн Π² PostgreSQL 10. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ сС отбСлязва рСализацията Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° проброс Π½Π° аутСнтификация Π½Π° Π±Π°Π·Π° SCRAM ΠΏΡ€ΠΈ ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Ρ‡Ρ€Π΅Π· postgres_fdw ΠΈ dblink към външни PostgreSQL ΡΡŠΡ€Π²ΡŠΡ€ΠΈ.
  • ΠŸΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° опСрация Β«EXPLAIN ANALYZEΒ» Π΅ осигурСн ΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° информация Π·Π° броя Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π² индСкситС ΠΏΡ€ΠΈ сканиранС Π½Π° индСкса ΠΈ броя Π½Π° Π΄ΠΎΡΡ‚ΡŠΠΏΠΈΡ‚Π΅ Π΄ΠΎ Π±ΡƒΡ„Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ изпълнСниС Π½Π° Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ. Π’ ΠΈΠ·Ρ…ΠΎΠ΄Π° Β«EXPLAIN ANALYZE VERBOSEΒ» Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° статистика Π·Π° CPU, WAL ΠΆΡƒΡ€Π½Π°Π»Π° ΠΈ интСнзивността Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° pg_stat_all_tables са Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, ΠΏΡ€Π΅ΠΊΠ°Ρ€Π°Π½ΠΎ Π·Π° опСрация VACUUM ΠΈ Π°Π½Π°Π»ΠΈΠ· Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π΅Π½Π° Π΅ статистика Π·Π° интСнзивността Π½Π° Π²Ρ…ΠΎΠ΄/ΠΈΠ·Ρ…ΠΎΠ΄ ΠΈ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° WAL ΠΆΡƒΡ€Π½Π°Π»Π° ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠΈ. Π’ pg_stat_subscription_stats ΠΈ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° информация с диагностика Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ ΠΏΡ€ΠΈ ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π° запис ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° логичСска рСпликация.
  • Π’ Π½ΠΎΠ²ΠΈΡ‚Π΅ инсталации ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΈ суми Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° цСлостта Π½Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ. Π—Π° Π΄Π° сС ΠΎΡ‚ΠΌΠ΅Π½ΠΈ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈ стартиранС Π½Π° initdb, слСдва Π΄Π° сС Π·Π°Π΄Π°Π΄Π΅ опцията Β«β€”no-data-checksumsΒ».
  • Π’ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°Ρ‚Π° pg_createsubscriber Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Ρ„Π»Π°Π³ Β«β€”allΒ» Π·Π° създаванС Π½Π° логичСски Ρ€Π΅ΠΏΠ»ΠΈΠΊΠΈ с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Π΅Π΄Π½Π°Π³Π° Π·Π° всички Π‘Π”.
  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π° Π΅ Π½ΠΎΠ²Π° вСрсия (3.2) Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° взаимодСйствиС с външни ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΈ със Π‘Π£Π‘Π” ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libpq. ΠŸΡ€Π΅Π΄ΠΈΡˆΠ½ΠΎΡ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° бСшС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΎ Π² PostgreSQL 7.4 (2003 Π³ΠΎΠ΄ΠΈΠ½Π°). Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° libpq ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° вСрсия 3.0.

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

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