Най-новата и най-добра версия на PostgreSQL, v11, предстои по-късно тази седмица! Ето бърз поглед към новите функции в тази версия.
Подобрения при разделянето на дялове
Най-големият набор от подобрения са за поддръжка на дялове. Postgres 11 поддържа:
- актуализирането на редове може да ги премести между дялове
- раздели по подразбиране
- автоматично създаване на индекс
- ограниченията на външния ключ се поддържат в разделени таблици
- уникални индекси
- обединяването се изтласква до дялове
- разделяне по хеш
- Деще на дялове на отдалечени сървъри (postgres_fdw) могат да бъдат актуализирани
- INSERT..ON CONFLICT се поддържа в разделени таблици
- по-ефективни планове за заявки и по-бързо изпълнение на заявки
Прочетете повече за тези подобрения тук.
Повече паралелизъм
Има куп подобрения навсякъде, свързани с увеличения паралелизъм. Обединявания, обединения, създаване на таблици и изгледи с „CREATE..AS SELECT“, създаване на индекс на btree и други ползи от тези промени.
Ето статия за подобренията в производителността при създаване на индекси в Postgres 11.
Заявки, изпълнени с JIT
Въпреки че е деактивирана по подразбиране в 11, базираната на LLVM JIT компилация на заявки вече е вградена в Postgres. Сървърът вече може да избере да компилира определени заявки (тези с оценки за изпълнение, по-високи от праг), като използва LLVM, което води до по-бързи заявки. Тази компилация е автоматична и прозрачна за приложението.
Ето няколко числа.
Покриващи индекси
Покриващи индекси, налични в други RDBMS, но не и в PostgreSQL, са добавени сега. С това е възможно да имате индекс като този (нов синтаксис):
CREATE INDEX empid_idx ON employees(empid) INCLUDE (empname);
Такъв индекс включва допълнителни атрибути (тук „empname“) в самия индекс и прави възможно задоволяването на заявки като:
SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;
изцяло използвайки сканирания само за индекси и изобщо не докосвайте купчината.
Прочетете повече за покриването на индекси тук.
Съхранени процедури
Съхранените процедури са още един екземпляр на PostgreSQL, който наваксва други RDBMS. Разбира се, те са подобни на съхранените функции, които PostgreSQL поддържа от дълго време, но единственото голямо нещо, което е възможно само при използване на процедури, е контролът на транзакциите. Можете да извършвате и връщате транзакции от съхранени процедури.
Разгледайте документацията CREATE PROCEDURE.
Добавяне на колони към таблици
Промяната на таблица за добавяне на нова колона NOT NULL със стойност ПО ПОДРАЗБИРАНЕ беше малко болка в PostgreSQL, тъй като това накара сървъра да пренапише цялата таблица. С v11 вече е възможно да имате DDL изрази като този:
ALTER TABLE users ADD COLUMN foo_factor integer NOT NULL DEFAULT 42;
изпълняват в постоянно време. Редовете не се докосват, когато това се изпълни, а вместо това се актуализират „мързеливо“.
Прочетете повече за тази функция тук.
SHA функции
И накрая, тези от вас, които са използвали pgcrypto само за SHA функции, сега могат да преминат към използването на вградените в PostgreSQL 11:
bench=# \df pg_catalog.sha*
List of functions
Schema | Name | Result data type | Argument data types | Type
------------+--------+------------------+---------------------+------
pg_catalog | sha224 | bytea | bytea | func
pg_catalog | sha256 | bytea | bytea | func
pg_catalog | sha384 | bytea | bytea | func
pg_catalog | sha512 | bytea | bytea | func
(4 rows)
bench=# SELECT sha256('hello');
sha256
--------------------------------------------------------------------
\x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
(1 row)