sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL 11:Co je nového

Nejnovější a největší verze PostgreSQL, v11, má být vydán tento týden! Zde je rychlý pohled na nové funkce v této verzi.

Vylepšení dělení

Největší sada vylepšení se týká podpory oddílů. Postgres 11 podporuje:

  • aktualizace řádků je může přesunout mezi oddíly
  • výchozí oddíly
  • automatické vytváření indexu
  • U dělených tabulek jsou podporována omezení cizího klíče
  • jedinečné indexy
  • posunutí agregace dolů na oddíly
  • rozdělení podle hash
  • podřízené oddíly na vzdálených serverech (postgres_fdw) lze aktualizovat
  • U dělených tabulek je podporována funkce INSERT..ON CONFLICT
  • efektivnější plány dotazů a rychlejší provádění dotazů

Přečtěte si více o těchto vylepšeních zde.

Více paralelnosti

Všeobecně existuje řada vylepšení souvisejících se zvýšenou paralelností. Spojení, sjednocení, vytváření tabulek a pohledů pomocí „CREATE..AS SELECT“, vytváření indexu btree a další výhody z těchto změn.

Zde je článek o vylepšení výkonu při vytváření indexů v Postgres 11.

Dotazy vyhovující JIT

Ačkoli je ve výchozím nastavení v 11 zakázáno, kompilace dotazů JIT založená na LLVM je nyní zabudována do Postgresu. Server se nyní může rozhodnout kompilovat určité dotazy (ty, které mají odhady provedení vyšší než prahová hodnota) pomocí LLVM, což má za následek rychlejší dotazy. Tato kompilace je automatická a pro aplikaci transparentní.

Zde jsou některá čísla.

Pokrývající indexy

Nyní byly přidány krycí indexy dostupné v jiných RDBMS, ale ne v PostgreSQL. Díky tomu je možné mít index jako tento (nová syntaxe):

CREATE INDEX empid_idx ON employees(empid) INCLUDE (empname);

Takový index obsahuje další atributy (zde „empname“) v samotném indexu a umožňuje uspokojit dotazy jako:

SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;

zcela pomocí skenování pouze s indexem a vůbec se nedotýkat hromady.

Přečtěte si více o pokrytí indexů zde.

Uložené procedury

Uložené procedury jsou další instancí hry PostgreSQL, která dohání další RDBMS. Jsou samozřejmě podobné uloženým funkcím, které PostgreSQL podporuje již dlouho, ale jedna velká věc možná pouze pomocí procedur je kontrola transakcí. Transakce můžete potvrdit a vrátit zpět z uložených procedur.

Podívejte se na dokumentaci CREATE PROCEDURE.

Přidávání sloupců do tabulek

Úprava tabulky za účelem přidání nového sloupce NOT NULL s hodnotou DEFAULT byla v PostgreSQL trochu bolestivá, protože to způsobilo, že server přepsal celou tabulku. S verzí 11 je nyní možné mít příkazy DDL takto:

ALTER TABLE users ADD COLUMN foo_factor integer NOT NULL DEFAULT 42;

provádět v konstantním čase. Řádky se při provádění nedotýkají a místo toho se aktualizují „líně“.

Přečtěte si více o této funkci zde.

Funkce SHA

A konečně ti z vás, kteří používali pgcrypto pouze pro funkce SHA, mohou nyní přejít na používání funkcí zabudovaných do 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)

  1. Je možné nastavit časový limit pro SQL dotaz na Microsoft SQL Server?

  2. Přehled metod JOIN v PostgreSQL

  3. MySQL S klauzulí

  4. existuje v ms-access funkce group_concat?