Както всяка година между септември и октомври, беше обявено издаването на новата версия на PostgreSQL 17 и както при всички предишни версии, приоритетът остава подобряването на производителността и оптимизирането на ресурсите, особено за операции като VACUUM, I/O и заявки, докато най-важната нова функция на тази версия е инкременталното архивиране.
За бизнес потребителите актуализацията носи множество подобрения, които опростяват управлението и използването на бази данни. Въпреки че PostgreSQL исторически е била релационна база данни, тази версия разширява нейната интеграция с разширена функционалност за работа с JSON документи, функция, която обикновено се свързва с MongoDB Atlas.
Какво е новото в PostgreSQL 17
В тази нова версия на PostgreSQL 17 е въведена нова структура от данни в операцията VACUUM, която намалява консумацията на памет до 20 пъти, позволявайки тези операции да бъдат по-бързи и по-ефективни по отношение на споделените ресурси.
Що се отнася до подобренията в производителността, управлението на регистрите за запис (WAL) е оптимизирано, постигайки до два пъти по-висока производителност при запис в системи с много едновременни заявки. Предложен е интерфейс за стрийминг на входно/изходни данни, който подобрява последователното търсене и актуализациите на статистиката след операцията ANALYZE.
Освен това са внедрени подобрения в заявки с клаузи "IN" при използване на B-дървовидни индекси, както и паралелното конструиране на BRIN индекси, оптимизирането на проверките "NOT NULL" и ускоряването на обработката на общи таблични изрази (CTE). За интензивни изчисления са включени SIMD инструкции, като AVX-512, за ускоряване на операции като функцията `bit_count`.
Друга новост, която се откроява е нови функции за JSON, от Потребителите вече могат да заявяват JSON типове данни, като използват стандартни SQL команди. Това е възможно благодарение на новата функционалност на таблицата json, който трансформира JSON данни в таблична структура. Оттам потребителите могат да правят заявки, използвайки клаузата FROM в SQL, което позволява данните да бъдат върнати в релационен формат. Добавена е функция `JSON_TABLE` за конвертиране на JSON данни в стандартни PostgreSQL таблици.
Заслужава да се отбележи и новата функционалност за инкрементално архивиране в PostgreSQL 17, която ви позволява да архивирате само промените, направени след последното пълно или инкрементално архивиране , оптимизирайки използването на честотна лента и намалявайки изискванията за съхранение. Докато PostgreSQL вече предлагаше решения като WAL Archiving, което репликираше лога Write-Ahead (WAL), за да поддържа необходимите секции от базата данни, версия 17 въвежда за първи път вграден механизъм за извършване на инкрементално архивиране. Тази система не само минимизира оперативните прекъсвания, като има по-малко въздействие върху производителността, но и значително намалява времето за възстановяване – ключов аспект, тъй като възстановяването на резервни копия често е бавен и разочароващ процес за потребителите.
Внедрена е платформено-независима машина за обработка на свойствата на локала, което позволява последователно сортиране на резултатите от заявките. Тази машина взема предвид фактори като наличието на специални символи и чувствителността към главни и малки букви при сортиране на стойностите. Механизмът за логическа репликация вече опростява процеса на надграждане на базата данни, елиминирайки необходимостта от изтриване на слотове за логическа репликация или повторно синхронизиране на данни при мигриране към нова версия.
Други забележителни промени включват :
- Експортирането на дълги низове с командата `COPY` е ускорено до два пъти.
- Оптимизирано копиране, когато кодирането на източника и местоназначението съвпадат.
- Опцията `ON_ERROR` е добавена, за да позволи импортирането да продължи въпреки грешки при вмъкване на данни.
- Добавена е възможност за използване на колони с уникални идентификатори в разделени таблици.
- Внедрена е функция за превключване към резервен сървър в устойчиви на грешки конфигурации.
- Добавена е нова помощна програма pg_createsubscriber за преобразуване на физическа реплика в логическа реплика.
- Въведена е опция „sslnegotiation“ за директно договаряне на сигурни TLS връзки с помощта на разширението ALPN TLS.
- Добавена е предварително дефинирана роля pg_maintain, която дава на потребителите правото да извършват операции, свързани с поддръжката на СУБД
И накрая, ако се интересувате да научите повече, можете да намерите подробностите на следния линк.