Објавување на PostgreSQL 14 DBMS

По една година развој, објавена е нова стабилна гранка на PostgreSQL 14 DBMS. Ажурирањата за новата гранка ќе бидат објавени во текот на пет години до ноември 2026 година.

Главните иновации:

  • Додадена е поддршка за пристап до податоци од JSON користејќи изрази слични на низа: SELECT ('{ "postgres": { "release": 14 }}'::jsonb)['postgres']['release']; SELECT * FROM test WHERE детали['attributes']['size'] = '"средно"';

    Слична синтакса е имплементирана за податоците за клучот/вредноста обезбедени од типот hstore. Оваа синтакса првично беше имплементирана со користење на универзална рамка, која во иднина може да се користи за други типови. Пример за типот на hstore: INSERT INTO mytable VALUES ('a=>b, c=>d'); ИЗБЕРИ h['a'] ОД mytable; АЖУРИРАЈ СЕТ за mytable h['c'] = 'нов';

  • Семејството на типови за дефинирање опсези е проширено со нови типови „повеќеопсег“, кои ви овозможуваат да наведете подредени списоци со опсези на вредности што не се преклопуваат. Дополнително на секој постоен тип на опсег, предложен е и негов тип со повеќе опсег, на пример, типот „int4range“ одговара на „int4multirange“, а типот „daterange“ одговара на „datemultirange“. Употребата на нови типови го поедноставува дизајнот на прашања кои манипулираат со сложени секвенци на опсези. ИЗБЕРИ '{[3,7), [8,9)}'::int4multirange; SELECT nummultirange(nummrange(1.0, 14.0), броевиnge(20.0, 25.0));
  • Направени се оптимизации за да се подобрат перформансите на системите со големо оптоварување кои обработуваат голем број врски. Во некои тестови, забележано е двојно зголемување на перформансите.
  • Ефикасноста на индексите на Б-дрвото е подобрена и проблемот со растот на индексите кога табелите често се ажурираат е решен.
  • Додадена е поддршка за режимот на клиентска страна (имплементиран на ниво libpq) на гасоводен пренос на барања, што ви овозможува значително да ги забрзате сценаријата на базата на податоци поврзани со извршување на голем број мали операции за пишување (INSERT/UPDATE/DELETE) со испраќање на следно барање без да се чека резултатот од претходното. Режимот, исто така, помага да се забрза работата на врските со долги доцнења во испораката на пакети.
  • Подобрени способности за дистрибуирани конфигурации кои вклучуваат повеќе PostgreSQL сервери. Во спроведувањето на логичката репликација, сега станува возможно да се испраќаат трансакции во режим на стриминг кои се во процес на извршување, што може значително да ги подобри перформансите на репликација на големи трансакции. Дополнително, оптимизирано е логичното декодирање на податоците добиени за време на логичката репликација.
  • Механизмот за поврзување на надворешни табели Foreign Data Wrapper (postgres_fdw) додаде поддршка за паралелна обработка на барања, која моментално е применлива само кога се поврзувате со други PostgreSQL сервери. postgres_fdw, исто така, додава поддршка за додавање податоци на надворешни табели во сериски режим и можност за увоз на партиционирани табели со специфицирање на директивата „УВОЗ СТРАНСКА ШЕМА“.
  • Направени се оптимизации за спроведување на операцијата VACUUM (собирање ѓубре и пакување на складирање на диск). Додаден е режим за итно чистење што ги прескокнува несуштинските операции за чистење доколку се создадат услови за заокружување на ID на трансакцијата. Намалени трошоци при обработка на индекси во формат B-Tree. Извршувањето на операцијата „АНАЛИЗА“ со која се собираат статистички податоци за работата на базата, е значително забрзано.
  • Додадена е можност за конфигурирање на методот на компресија што се користи во системот TOAST, кој е одговорен за складирање на големи податоци, како што се блокови од текст или геометриски информации. Покрај методот на компресија pglz, TOAST сега може да го користи алгоритмот LZ4.
  • Алатките за следење на работата на DBMS се проширени. Додадени прикази за следење на напредокот на командите 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“ и паралелно извршување на прашања во „ ОСВЕЖИ МАТЕРИЈАЛИЗИРАН ПОГЛЕД“. За да се подобрат перформансите на цикличните вгнездени спојувања (придружување), имплементирана е поддршка за дополнително кеширање.
  • Сега може да се користи напредната статистика за оптимизирање на изразите, а постепеното сортирање сега може да се користи за оптимизирање на функциите на прозорецот.
  • Зачуваните процедури кои ви дозволуваат да управувате со трансакции во блокови од код сега поддржуваат дефинирање на податоците за враќање со помош на параметрите „OUT“.
  • Додадена е функција date_bin на вредностите на временскиот печат за заокружување според одреден интервал. SELECT date_bin('15 минути', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00 часот
  • Додадени се SEARCH и CYCLE изрази дефинирани во SQL стандардот за полесно да се нарачуваат и идентификуваат циклусите во рекурзивните Common Table Expressions (CTE). СО РЕКУРЗИВНО search_tree(id, линк, податоци) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM дрво t, search_tree st WHERE t. id = st.link ) ДЛАБОЧИНА НА ПРЕБАРУВАЊЕ ПРВА ПО ИД ПОСТАВУВАЊЕ наредба колона ИЗБЕРЕ * ОД search_tree РЕД ПО наредба колона;
  • Во алатката psql, подобрено е автоматското пополнување на команди со јазичиња, способноста за прикажување на функционалните аргументи е додадена на командата „\df“, а прикажаната статистика е проширена на командата „\dX“.
  • Можно е да се доделат привилегии само за читање или само за пишување на корисниците. Привилегиите може да се постават на поединечни табели, прегледи и шеми користејќи ги однапред дефинираните улоги pg_read_all_data и pg_write_all_data. ДА ГО ДОДЕЛИ pg_read_all_data НА корисникот1;
  • Новите инсталации стандардно имаат автентикација со лозинка користејќи SCRAM-SHA-256 наместо md5 (параметарот „password_encryption“ кога се генерира postgresql.conf сега е поставен на „scram-sha-256“).

Извор: opennet.ru

Додадете коментар