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

Какво е новото в PostgreSQL 11

PostgreSQL 11 беше пуснат на 10 октомври 2018 г. и по график, отбелязвайки 23-тата годишнина на все по-популярната база данни с отворен код.

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

Например на страницата с бележки по версията „Обвързването на канала за SCAM удостоверяване“ е заровено под изходния код, докато матрицата го има в секцията за сигурност. За любопитните ето екранна снимка на интерфейса:

Матрица с функции на PostgreSQL

Освен това страницата с бележки по изданието на Bucardo Postgres, свързана по-горе, е удобна по свой начин, което улеснява търсенето на ключова дума във всички версии.

Какво ново? С буквално стотици промени ще премина през разликите, изброени в матрицата на функциите.

Покриващи индекси за B-дървета (ВКЛЮЧИ)

CREATE INDEX получи клаузата INCLUDE, която позволява на индексите да включват неключови колони . Неговият случай на използване за чести идентични заявки е добре описан в комита на Tom Lane от 22 ноември, който актуализира документацията за разработка (което означава, че текущата документация на PostgreSQL 11 все още я няма), така че за пълния текст вижте раздел 11.9. Сканира само индекс и индекси за покриване във версията за разработка.

Паралелизиран CREATE INDEX за индекси на B-дърво

Както се посочва в името, тази функция е внедрена само за индексите на B-дървото и от регистрационния файл на Робърт Хаас научаваме, че реализацията може да бъде прецизирана в бъдеще. Както е отбелязано от документацията CREATE INDEX, докато методите за създаване на паралелни и паралелни индекси се възползват от множеството процесори, в случай на CONCURRENT само първото сканиране на таблицата ще се извършва паралелно.

Свързани с тази нова функция са конфигурационните параметри maintenance_work_mem и maintenance_parallel_maintenance_workers .

И накрая, броят на паралелните работници може да бъде зададен за таблица с помощта на командата ALTER TABLE и задаване на стойност за parallel_workers .

Изтеглете Бялата книга днес Управление и автоматизация на PostgreSQL с ClusterControl Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате PostgreSQLD Изтеглете Бялата книга

Точно навреме (JIT) компилация за оценка на израза и деформиране на кортежи

Със своя собствена глава за JIT в документацията, тази нова функция разчита на това, че PostgreSQL се компилира с поддръжка на LLVM (използвайте pg_config за проверка).

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

Паралелизирани хеш присъединявания

Това подобрение на производителността към паралелните заявки е резултат от добавянето на споделена хеш таблица, която, както обяснява Томас Мънро в своя блог Parallel Hash for PostgreSQL, избягва разделянето на хеш таблицата, при условие че се вписва в work_mem , което досега за PostgreSQL изглежда по-добро решение от алгоритъма за първи дял. Същият блог описва препятствията в архитектурата на PostgreSQL, които авторът трябваше да преодолее в стремежа си да добави паралелизиране към хеш съединения, което говори за сложността на работата, която е била необходима, за да приложи тази функция.

Дял по подразбиране

Това е дял за улавяне на всички за съхраняване на редове, които не съответстват на друг дефиниран дял. В случаите, когато се добавя нов дял, се препоръчва ограничение CHECK, за да се избегне сканиране на дяла по подразбиране, което може да бъде бавно, когато дялът по подразбиране съдържа голям брой редове.

Поведението на дяла по подразбиране е обяснено в документацията на ALTER TABLE и CREATE TABLE.

Разделяне чрез хеш ключ

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

За повече подробности и пример вижте страницата с документация CREATE TABLE.

Поддръжка за ПЪРВЕН КЛЮЧ, ВЪНШЕН КЛЮЧ, Индекси и задействания на разделени таблици

Разделянето на таблици вече е голяма стъпка в подобряването на производителността на големи таблици и добавянето на тези функции се справя с ограниченията, които са имали разделените таблици след PostgreSQL 10, когато е въведено „декларативното разделяне“ в модерен стил.

Работата на Алваро Ерера е в ход за разрешаване на външни ключове да препращат към първични ключове и е насрочена за следващата основна версия 12 на PostgreSQL.

АКТУАЛИЗИРАНЕ на ключ на дял

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

Свързване на канал за SCRAM удостоверяване

Това е мярка за сигурност, целяща предотвратяване на атаки „човек в средата“ при SASL удостоверяване и е подробно описана в блога на автора. Функцията изисква минимум OpenSSL 1.0.2.

СЪЗДАВАНЕ НА ПРОЦЕДУРА и Синтаксис на CALL за SQL съхранени процедури

PostgreSQL има CREATE FUNCTION от 1996 г. с версия 1.0.1 , обаче, функциите не могат да обработват транзакции. Както е споменато в документацията, командата CREATE PROCEDURE не е напълно съвместима със стандарта SQL.

Забележка:Следете за предстоящ блог, който се гмурка дълбоко в тази функция

Заключение

Основните актуализации на PostgreSQL 11 се фокусират върху подобрения в производителността чрез паралелно изпълнение, разделяне и компилация Just-In-Time. Съхранените процедури позволяват пълен контрол на транзакциите и могат да бъдат написани на различни PL езици.


  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

  2. Тествайте за нула във функция с различни параметри

  3. sql заявка, която групира различни елементи в кофи

  4. java.lang.NoSuchFieldError:NONE в хибернация с Spring 3, maven, JPA, c3p0

  5. Множество бази данни в docker и docker-compose