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'); mytable FROM h['a'] ТАҢДАУ; UPDATE mytable SET h['c'] = 'жаңа';

  • Ауқымдарды анықтауға арналған түрлер тобы жаңа «көп диапазон» түрлерімен кеңейтілді, бұл мәндердің бір-біріне сәйкес келмейтін ауқымдарының реттелген тізімдерін көрсетуге мүмкіндік береді. Әрбір бар диапазон түріне қосымша, оның өзіндік көп диапазон түрі ұсынылады, мысалы, “int4range” түрі “int4multirange” түріне, ал “daterange” түрі “datemmultirange” түріне сәйкес келеді. Жаңа типтерді пайдалану ауқымдардың күрделі тізбектерін басқаратын сұраулардың дизайнын жеңілдетеді. ТАҢДАУ '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Көптеген қосылымдарды өңдейтін жоғары жүктемелі жүйелердің өнімділігін жақсарту үшін оңтайландырулар жасалды. Кейбір сынақтарда өнімділіктің екі есе артуы байқалады.
  • B-ағаш индекстерінің тиімділігі жақсарды және кестелер жиі жаңартылған кезде индекстің өсуіне қатысты мәселе шешілді.
  • Сұраныстарды жіберудің клиенттік (libpq деңгейінде іске асырылған) режиміне қолдау қосылды, бұл шағын жазу операцияларының үлкен санын (INSERT/UPDATE/DELETE) орындаумен байланысты дерекқор сценарийлерін айтарлықтай жылдамдатуға мүмкіндік береді. алдыңғы сұраудың нәтижесін күтпестен келесі сұрау. Сондай-ақ режим пакетті жеткізудің ұзақ кідірісі бар қосылымдардағы жұмысты жылдамдатуға көмектеседі.
  • Бірнеше PostgreSQL серверлерін қамтитын таратылған конфигурацияларға арналған кеңейтілген мүмкіндіктер. Логикалық репликацияны жүзеге асыруда енді үлкен транзакцияларды репликациялау өнімділігін айтарлықтай жақсартуға мүмкіндік беретін орындалу процесіндегі транзакцияларды ағынды режимде жіберу мүмкін болады. Сонымен қатар, логикалық репликация кезінде алынған деректердің логикалық декодтауы оңтайландырылды.
  • Сыртқы кестелерді қосу механизмі Foreign Data Wrapper (postgres_fdw) сұранысты параллель өңдеуге қолдауды қосты, ол қазіргі уақытта басқа PostgreSQL серверлеріне қосылғанда ғана қолданылады. postgres_fdw сонымен қатар пакеттік режимде сыртқы кестелерге деректерді қосу үшін қолдауды қосады және «СЫРТҚЫ СХЕМАНЫ ИМПОРТТАУ» директивасын көрсету арқылы бөлінген кестелерді импорттау мүмкіндігін қосады.
  • ВАКУМ операциясын (қоқыстарды жинау және дискілерді сақтауды орау) енгізуге оңтайландырулар жасалды. Транзакция идентификаторын орау шарттары жасалса, маңызды емес тазалау әрекеттерін өткізіп жіберетін төтенше тазалау режимі қосылды. B-Tree пішіміндегі индекстерді өңдеу кезіндегі үстеме шығындар азайтылды. Мәліметтер қорының жұмысы туралы статистикалық мәліметтерді жинайтын «ТАЛДАУ» операциясын орындау айтарлықтай жеделдетілді.
  • TOAST жүйесінде қолданылатын қысу әдісін конфигурациялау мүмкіндігі қосылды, ол мәтін блоктары немесе геометриялық ақпарат сияқты үлкен деректерді сақтауға жауап береді. pglz қысу әдісіне қосымша, TOAST енді LZ4 алгоритмін пайдалана алады.
  • ДҚБЖ жұмысын бақылау құралдары кеңейтілді. COPY пәрмендерінің орындалу барысын (pg_stat_progress_copy), репликация слоттары туралы статистиканы (pg_stat_replication_slots) және WAL транзакция журналына (pg_stat_wal) қатысты әрекетті бақылау үшін қосылды. pg_stat_activity және EXPLAIN VERBOSE сияқты әртүрлі ішкі жүйелерге әрбір сұрау үшін бірегей идентификатор тағайындау арқылы сұрауларды бақылауға мүмкіндік беретін есептеу_сұрау_идентификаторы функциясы қосылды.
  • Сұрауларды параллельді өңдеуді жақсарту және жазбаларды дәйекті сканерлеу операцияларын бір уақытта орындау өнімділігін жақсарту, «RETURN QUERY» пәрменін пайдаланып PL/pgSQL сұрауларды параллель орындау және « МАТЕРИАЛДАНҒАН КӨРІНІСІ ЖАҢАРТУ». Циклдік кірістірілген біріктірулердің (қосылулардың) өнімділігін жақсарту үшін қосымша кэштеуді қолдау жүзеге асырылды.
  • Жетілдірілген статистиканы енді өрнектерді оңтайландыру үшін пайдалануға болады, ал енді терезе функцияларын оңтайландыру үшін қосымша сұрыптауды пайдалануға болады.
  • Код блоктарындағы транзакцияларды басқаруға мүмкіндік беретін сақталған процедуралар енді "OUT" параметрлері арқылы қайтару деректерін анықтауды қолдайды.
  • Белгіленген интервалға сәйкес уақыт белгісі мәндерін дөңгелектеу үшін date_bin функциясы қосылды. SELECT date_bin('15 минут', УАҚЫТ БЕРГЕМЕСІ '2020-02-11 15:44:17', УАҚЫТ БЕРГЕМЕСІ '2001-01-01'); 2020 02:11:15
  • Рекурсивті жалпы кесте өрнектеріндегі (CTE) циклдерге тапсырыс беруді және анықтауды жеңілдету үшін SQL стандартында анықталған SEARCH және CYCLE өрнектері қосылды. РЕКУРСИВТІ іздеу_ағашымен(id, сілтеме, деректер) AS ( ТАҢДАУ t.id, t.link, t.data FROM t UNION БАРЛЫҚ ТАҢДАУ t.id, t.link, t.data FROM ағаш t, search_tree st ҚАЙДА t. id = st.link ) ІЗДЕУ ТЕРЕҢДІГІН БІРІНШІ ID ОРНАТУ ordercol ТАҢДАУ * search_tree FROM ORDER BY ordercol;
  • Psql утилитасында қойындылары бар командаларды автотолтыру жетілдірілді, функция аргументтерін көрсету мүмкіндігі «\df» пәрменіне қосылды, ал көрсетілетін статистика «\dX» пәрменіне дейін кеңейтілді.
  • Пайдаланушыларға тек оқуға немесе тек жазуға арналған артықшылықтарды тағайындауға болады. Артықшылықтарды pg_read_all_data және pg_write_all_data алдын ала анықталған рөлдерін пайдаланып жеке кестелерге, көріністерге және схемаларға орнатуға болады. 1 пайдаланушыға pg_read_all_data БЕРУ;
  • Жаңа орнатулар әдепкі бойынша md256 орнына SCRAM-SHA-5 арқылы құпия сөз аутентификациясы болып табылады (postgresql.conf жасау кезіндегі "password_encryption" параметрі енді "scram-sha-256" күйіне орнатылған).

Ақпарат көзі: opennet.ru

пікір қалдыру