PostgreSQL 14 DBMS versiyasi

Bir yillik rivojlanishdan so‘ng PostgreSQL 14 DBMSning yangi barqaror filiali nashr etildi.Yangi filial uchun yangilanishlar besh yil davomida 2026-yil noyabrigacha chiqariladi.

Asosiy innovatsiyalar:

  • Massivlar bilan ishlashni eslatuvchi iboralar yordamida JSON maʼlumotlariga kirish uchun qoʻshilgan yordam: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE details['attributes']['size'] = '"medium"';

    Shunga o'xshash sintaksis hstore turi tomonidan taqdim etilgan kalit/qiymat ma'lumotlari uchun amalga oshiriladi. Ushbu sintaksis dastlab universal ramka yordamida amalga oshirildi, kelajakda u boshqa turlar uchun ishlatilishi mumkin. hstore turiga misol: INSERT INTO mytable VALUES ('a=>b, c=>d'); mytable dan h[‘a’] NI TANGLASH; mytable SETni YANGILASH h[‘c’] = ‘yangi’;

  • Diapazonlarni aniqlash uchun turlar turkumi yangi “ko‘p diapazonli” turlar bilan kengaytirildi, ular bir-biriga mos kelmaydigan qiymat diapazonlarining tartiblangan ro‘yxatini belgilash imkonini beradi. Har bir mavjud diapazon turiga qo'shimcha ravishda o'zining ko'p diapazonli turi taklif etiladi, masalan, "int4range" turi "int4multirange" ga, "daterange" turi esa "datemultirange" ga mos keladi. Yangi turlardan foydalanish diapazonlarning murakkab ketma-ketligini boshqaradigan so'rovlar dizaynini soddalashtiradi. '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Ko'p sonli ulanishlarni qayta ishlaydigan yuqori yuklangan tizimlarning ish faoliyatini yaxshilash uchun optimallashtirishlar amalga oshirildi. Ba'zi testlarda ishlashning ikki barobar ortishi kuzatiladi.
  • B-daraxt indekslarining samaradorligi yaxshilandi va jadvallar tez-tez yangilanganda indeks o'sishi bilan bog'liq muammo hal qilindi.
  • So'rovlarni uzatishning mijoz tomoni (libpq darajasida amalga oshirilgan) rejimini qo'llab-quvvatlash qo'shildi, bu sizga ko'p sonli kichik yozish operatsiyalarini (INSERT/UPDATE/DELETE) bajarish bilan bog'liq ma'lumotlar bazasi stsenariylarini sezilarli darajada tezlashtirish imkonini beradi. oldingi so'rovning natijasini kutmasdan keyingi so'rov. Ushbu rejim, shuningdek, paketlarni yetkazib berishning uzoq kechikishi bilan ulanishlar ustida ishlashni tezlashtirishga yordam beradi.
  • Bir nechta PostgreSQL serverlarini o'z ichiga olgan taqsimlangan konfiguratsiyalar uchun kengaytirilgan imkoniyatlar. Mantiqiy replikatsiyani amalga oshirish endilikda amalga oshirilayotgan tranzaktsiyalarni oqim rejimida jo'natish imkoniyatiga ega bo'lib, bu yirik tranzaksiyalarni replikatsiya qilish samaradorligini sezilarli darajada yaxshilashi mumkin. Bundan tashqari, mantiqiy replikatsiya paytida olingan ma'lumotlarning mantiqiy dekodlanishi optimallashtirildi.
  • Tashqi jadvallarni ulash mexanizmi (postgres_fdw) so'rovlarni parallel qayta ishlash uchun qo'shimcha qo'llab-quvvatladi, bu hozircha faqat boshqa PostgreSQL serverlariga ulanishda qo'llaniladi. postgres_fdw shuningdek, ommaviy rejimda tashqi jadvallarga ma'lumotlarni qo'shishni qo'llab-quvvatlaydi va "IMPORT FOREIGN SCHEMA" direktivasini belgilash orqali bo'lingan jadvallarni import qilish imkoniyatini qo'shadi.
  • VAKUUM operatsiyasini amalga oshirish uchun optimallashtirishlar amalga oshirildi (axlatni yig'ish va diskni saqlash uchun qadoqlash). Tranzaksiya identifikatorini oʻrash shartlari yaratilgan boʻlsa, muhim boʻlmagan tozalash operatsiyalarini oʻtkazib yuboradigan favqulodda tozalash rejimi qoʻshildi. B-Tree formatida indekslarni qayta ishlashda qo'shimcha xarajatlar kamayadi. Ma'lumotlar bazasining ishlashi to'g'risida statistik ma'lumotlarni to'playdigan "TAHLIL QILISh" operatsiyasini bajarish sezilarli darajada tezlashdi.
  • Matn bloklari yoki geometrik ma'lumotlar kabi katta ma'lumotlarni saqlash uchun mas'ul bo'lgan TOAST tizimida qo'llaniladigan siqish usulini sozlash imkoniyati qo'shildi. Pglz siqish usuliga qo'shimcha ravishda, TOAST endi LZ4 algoritmidan foydalanishi mumkin.
  • DBMS faoliyatini nazorat qilish vositalari kengaytirildi. COPY buyruqlari (pg_stat_progress_copy), replikatsiya slotlari haqidagi statistika (pg_stat_replication_slots) va WAL tranzaksiya jurnali (pg_stat_wal) bilan bog'liq faoliyatni kuzatish uchun ko'rinishlar qo'shildi. pg_stat_activity va EXPLAIN VERBOSE kabi turli quyi tizimlarga har bir so‘rov uchun noyob identifikator belgilash orqali so‘rovlarni kuzatish imkonini beruvchi compute_query_id funksiyasi qo‘shildi.
  • So'rovlarni parallel qayta ishlashni yaxshilash va ketma-ket yozuvlarni skanerlash operatsiyalarini bir vaqtning o'zida bajarish, "RETURN QUERY" buyrug'i yordamida PL/pgSQL so'rovlarini parallel bajarish va "" da so'rovlarni parallel bajarish uchun so'rovlarni rejalashtiruvchiga optimallashtirishlar qo'shildi. Moddiylashtirilgan ko‘rinishni yangilang”. Tsiklik ichki birlashma (qo'shilish) ish faoliyatini yaxshilash uchun qo'shimcha keshlashni qo'llab-quvvatlash amalga oshirildi.
  • Murakkab statistik ma'lumotlar endi ifodalarni optimallashtirish uchun ishlatilishi mumkin va qo'shimcha tartiblash endi oyna funksiyalarini optimallashtirish uchun ishlatilishi mumkin.
  • Kod bloklarida tranzaktsiyalarni boshqarish imkonini beruvchi saqlangan protseduralar endi "OUT" parametrlari yordamida qaytish ma'lumotlarini aniqlashni qo'llab-quvvatlaydi.
  • Belgilangan oraliq bo'yicha vaqt tamg'asi qiymatlarini yaxlitlash uchun date_bin funksiyasi qo'shildi. SELECT date_bin('15 daqiqa', VAQT BORGASI '2020-02-11 15:44:17', VAQT TA'KARI '2001-01-01'); 2020-02-11 15:30:00
  • Rekursiv Common Table Expressions (CTE) da sikllarni tartibga solish va aniqlashni osonlashtirish uchun SQL standartida belgilangan QIDIRUV va CYCLE ifodalari qo‘shildi. BILAN 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 daraxt t, search_tree st WHERE t. id = st.link ) ID SET BIRINChI QIDIRISH CHUQURLIGI ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Psql yordam dasturida yorliqlar bilan buyruqlarni avtomatik to'ldirish yaxshilandi, funksiya argumentlarini ko'rsatish imkoniyati "\df" buyrug'iga qo'shildi va ko'rsatilgan statistika "\dX" buyrug'iga kengaytirildi.
  • Foydalanuvchilarga faqat o'qish yoki faqat yozish uchun imtiyozlarni belgilash mumkin. Imtiyozlarni oldindan belgilangan pg_read_all_data va pg_write_all_data rollari yordamida alohida jadvallar, ko'rinishlar va sxemalarga o'rnatish mumkin. 1 foydalanuvchiga pg_read_all_data BERISH;
  • Yangi oʻrnatishlar standart parolni md256 oʻrniga SCRAM-SHA-5 yordamida autentifikatsiya qiladi (postgresql.conf ni yaratishda “password_encryption” parametri endi “scram-sha-256” ga oʻrnatiladi).

Manba: opennet.ru

a Izoh qo'shish