PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Най-добрите нови функции в PostgreSQL 14

Според StackOverflow, PostgreSQL е най-популярната база данни с отворен код, като все повече разработчици и администратори искат да работят с нея. PostgreSQL 14, най-новата версия, пусната през септември 2021 г., има повече от 200 подобрения и нови функции, които най-общо попадат в три области:сигурност, производителност и наблюдение.

Започвайки от версия 1.9.2, пусната по-рано тази година, ClusterControl вече поддържа най-новата версия на PostgreSQL 14.

В тази публикация ще разгледаме най-забележителните функции, основни актуализации и подобрения, налични в PostgreSQL 14.

Сигурност

Най-значимата промяна в сигурността на PostgreSQL 14 се премества към SCRAM, тъй като удостоверяването по подразбиране след удостоверяването SCRAM-SHA-256 беше въведено за първи път в PostgreSQL 10.  SCRAM предоставя много по-просто и мощно решение за регулиране на съответствието за данни за данни. сигурност. Предишното MD5 удостоверяване по подразбиране имаше някои експлоатирани слабости в миналото.

Наред с подобреното удостоверяване, PostgreSQL 14 опростява процеса на присвояване на възможности само за писане и само за четене на потребителите на таблици, изгледи и схеми, като въвежда две предварително дефинирани роли, pg_write_all_data и pg_taread_all. Предишната роля го прави удобно за създаване на привилегии, стилизирани от супер потребител. Въпреки че е удобен за дейности и достъп, този вид акаунт трябва да се използва пестеливо. Последната роля го прави удобен при предоставянето на достъп само за четене на потребителя до всички таблици, схеми и изгледи в базата данни. Тази роля ще има достъп за четене по подразбиране до всички новосъздадени таблици.

Ефективност

Корпорациите обработват все повече и повече данни, а скоростта, обемът и разнообразието (трите Vs на Big Data) не показват признаци на забавяне. PostgreSQL 14 направи някои много значителни промени, за да може да се увеличи и разшири, за да поддържа тези натоварвания и да подобри производителността. Това може да бъде най-добре групирано в следните пет области:

Мащабируемост и производителност

PostgreSQL 14 осигурява огромни постижения в производителността на изтривания и актуализации на таблици с голям брой дялове. Това позволява изтривания и актуализации на разделени таблици за използване на подрязване на дялове по време на изпълнение. Най-важното е, че тази версия може да се мащабира до повече дялове от преди, което позволява на PostgreSQL да се справя с много по-големи бази данни, отколкото беше възможно преди.

В PostgreSQL версия 14, дяловете вече могат да се отделят едновременно, което улеснява управлението на големи таблици с данни от времеви серии. Това е възможно благодарение на новата функция date_bin(), която позволява на потребителите да обобщават по-добре и по-лесно данните от времевите серии в периоди от време.

PostgreSQL 14 добави поддръжка за LZ4 компресия за TOAST. LZ4 използва най-новата технология за компресиране и се фокусира върху подобряване на скоростта на декомпресия и компресиране на данните на документа. LZ4 ще подобри приложенията с по-големи XML и JSON документи и този алгоритъм за компресия може да бъде конфигуриран както на ниво система, така и на ниво колона.

Разпределени бази данни и работни натоварвания

PostgreSQL 14 също така предлага подобрения в хоризонталното мащабиране на база данни, като въвежда две основни подобрения в postgres_fdw (обвивка на чужди данни), които са важни за подобряване на производителността на разпределените бази данни. Тези промени поддържат групово вмъкване на данни и паралелно сканиране на таблици на чужди таблици (когато е зададено async_capable).

Кеширането на връзки също подобрява производителността, като позволява отворени връзки между транзакции. Можем също да споменем Libpd тръбопроводен режим, който увеличава производителността на разпределените бази данни, като позволява предаването на потоци от промени, без да се чака потвърждение на мрежата за всяка команда.

Управляемост 

PostgreSQL 14 също се занимава с проблема с раздуването на индекса на B-дърво; индексите, които често се актуализират, се раздуват с течение на времето поради мъртви кортежи, които могат да бъдат премахнати чрез вакуумиране.

Поради това необратимо разделяне на страницата може да бъде причинено от вмъкване или актуализация, когато страницата се запълни между вакуумите. Тази версия е подобрила процеса на вакуумиране чрез откриване и премахване на мъртви кортежи между вакуумите (параметърът INDEX_CLEANUP е зададен на Auto).

Друго подобрение на вакуумната система е нетърпеливото премахване на изтритите страници. В предишните версии премахването на изтрити страници отнемаше два вакуумни цикъла, като първият маркира страницата като изтрита, а вторият цикъл действително освобождава това място.

Настройка на производителността на заявки и индекси

Управлението на индексите при настройката на приложението е друго голямо подобрение в PostgreSQL 14. По-специално, REINDEX CONCURRENTLY и CREATE INDEX CONCURRENTLY позволяват на няколко команди да се изпълняват наведнъж, без да пречат една на друга. Повече за индексите, BRIN индексите станаха по-гъвкави, тъй като могат да записват множество мин./максимални стойности за диапазон, което е ценно за групи от стойности във всеки диапазон на страници. Освен това BRIN индексите ефективно работят с данни, които не са добре локализирани в купчината, като използват филтри за разцвет.

Опцията FREEZE в командата COPY е подобрена чрез актуализиране на битовете за видимост на страницата за производителността на зареждане на данни. COPY в двоичен режим също е по-бърз.

PostgreSQL 14 усъвършенства паралелизма на заявките, като добави паралелизъм на заявки към ОБНОВЯВАНЕ НА МАТЕРИАЛИЗИРАН ИЗГЛЕД и ВРЪЩАНЕ НА ЗАЯВКАТА. Тези подобрения бяха въведени във вложени циклични съединения и паралелни последователни сканирания.

PostgreSQL 14 увеличи броя на местата, където разширената статистика може да се използва за изрази и оценка на клаузата ИЛИ. За разлика от преди, където статистиката беше само за колони, сега е разрешена за група изрази. Системният изглед pg_stats_ext_exprs отчита такава статистика.

Подобрена логическа репликация 

Логическата репликация е подобрена, за да позволи поточно предаване на дълги транзакции в процес на изпълнение чрез API или до абонати. В предишни версии транзакциите, по-големи от logical_decoding_work_mem, бяха записани на диск, докато транзакцията не бъде завършена, преди да се репликира транзакцията на абоната. С новите подобрения на място, логическата репликация обработва големи обеми DDL изрази по-ефективно.

След всяка команда логическата репликация записва съобщения за невалидиране на кеша в WAL за обработка чрез поточно предаване на транзакции в процес. Този процес създава значителни ползи за производителността.

Наблюдение 

Една от най-големите модни думи на 2022 г. е наблюдението, тъй като администраторите и разработчиците искат повече поглед върху производителността с течение на времето. PostgreSQL 14 въведе нови функции за подпомагане на наблюдението. Най-значимата промяна от всички тях е преместването на хеш системата на заявките от pg_stat_statement към основната база данни. Наблюдението на заявки е разрешено в няколко PostgreSQL системи и функции за регистриране с помощта на един идентификатор.

Тази версия също така въведе следните нови параметри за наблюдение:

  1. Idle_session_timeout

  2. REINDEX върху дъщерни индекси на разделена таблица

  3. Maintenance_io_concurrency

  4. Pg_stat_progress_copy

  5. Pg_stat_wal

Надстройване до PostgreSQL 14

Ако искате да надстроите текущата си версия на PostgreSQL до версия 14, имате три основни опции, които ще изпълнят тази задача:

  1. Pg_dumpall:Това е инструмент за логично архивиране, който ви позволява да изхвърлите данните си и да ги възстановите в новия PostgreSQL версия. Тук ще имате период на престой, който ще варира в зависимост от размера на вашите данни. Трябва да спрете системата или да избегнете нови данни в основния възел, да стартирате pg_dumpall, да преместите генерирания дъмп в новия възел на базата данни и да го възстановите. През това време не можете да пишете в основната си база данни PostgreSQL, за да избегнете несъответствие на данните.

  2. Pg_upgrade:Това е PostgreSQL инструмент за надграждане на вашата PostgreSQL версия. Може да бъде опасно в производствена среда и ние не препоръчваме този метод в този случай. Използвайки този метод, ще имате време за престой, но вероятно ще бъде значително по-малко от използването на предишния метод pg_dump.

  3. Логическа репликация:От PostgreSQL 10 можете да използвате този метод на репликация, който ви позволява да извършвайте основни надстройки на версията с нулев (или почти нулев) престой. По този начин можете да добавите резервен възел в последната версия на PostgreSQL и когато репликацията е актуална, можете да извършите процес на отказ, за ​​да популяризирате новия PostgreSQL възел.

За по-подробна информация относно новите функции на PostgreSQL 14 можете да се обърнете към Официалната документация.

Приключване

PostgreSQL 14 наистина подобри играта за потребителите на тази популярна база данни с отворен код. Сега разработчиците и администраторите имат подобрени възможности за повишаване на високата производителност и мащабируемост, подобрения за разпределени бази данни, подобрена наблюдаемост и други.

ClusterControl прави надграждането до най-новите технологични версии лесно и без стрес. Ако все още не използвате ClusterControl, можете да го оцените безплатно за 30 дни. За повече подробности относно най-новата версия на ClusterControl 1.9.2 вижте пълните бележки по версията.

Бъдете в крак с всички най-нови новини и най-добри практики за най-популярните бази данни с отворен код, като ни следвате в Twitter и LinkedIn и се абонирате за нашия бюлетин.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да промените типа данни на колона от символен към числов в PostgreSQL 8.4

  2. Преобразуване на заявки SELECT DISTINCT ON от Postgresql в MySQL

  3. Как да инсталирате PostgreSQL 12 на Fedora 33

  4. Postgres:Добавете ограничение, ако все още не съществува

  5. Django bulk_create с игнориране на редове, които причиняват IntegrityError?