sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL 11:Wat is er nieuw?

De nieuwste en beste release van PostgreSQL, v11, komt deze week uit! Hier volgt een korte blik op de nieuwe functies in deze versie.

Verbeteringen in partitionering

De grootste reeks verbeteringen heeft betrekking op partitieondersteuning. Postgres 11 ondersteunt:

  • rijen bijwerken kan ze over partities verplaatsen
  • standaard partities
  • automatische indexcreatie
  • beperkingen voor buitenlandse sleutels worden ondersteund op gepartitioneerde tabellen
  • unieke indexen
  • aggregatie omlaag duwen naar partities
  • partitie op hash
  • partitie kinderen op externe servers (postgres_fdw) kunnen worden bijgewerkt
  • INSERT..ON CONFLICT wordt ondersteund op gepartitioneerde tabellen
  • efficiëntere zoekopdrachten en snellere uitvoering van zoekopdrachten

Lees hier meer over deze verbeteringen.

Meer parallellisme

Er zijn een aantal verbeteringen over de hele linie met betrekking tot toegenomen parallellisme. Joins, unions, creatie van tabellen en views met “CREATE..AS SELECT”, btree index creatie en meer voordeel van deze veranderingen.

Hier is een artikel over prestatieverbeteringen bij het maken van indexen in Postgres 11.

JIT-complied-query's

Hoewel standaard uitgeschakeld in 11, is op LLVM gebaseerde JIT-compilatie van query's nu ingebouwd in Postgres. De server kan er nu voor kiezen om bepaalde query's (die met uitvoeringsschattingen hoger dan een drempelwaarde) te compileren met behulp van LLVM, wat resulteert in snellere query's. Deze compilatie is automatisch en transparant voor de applicatie.

Hier zijn enkele cijfers.

Dekkende indexen

Dekkende indexen, beschikbaar in andere RDBMS-en maar niet in PostgreSQL, zijn nu toegevoegd. Hiermee is het mogelijk om een ​​index als deze te hebben (nieuwe syntaxis):

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

Zo'n index bevat extra attributen (hier “empname”) in de index zelf, en maakt het mogelijk om te voldoen aan vragen als:

SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;

volledig gebruikmakend van alleen-index scans en de hoop helemaal niet aanraken.

Lees hier meer over het afdekken van indexen.

Opgeslagen procedures

Opgeslagen procedures zijn nog een andere instantie van PostgreSQL die andere RDBMS'en inhaalt. Ze zijn natuurlijk vergelijkbaar met opgeslagen functies die PostgreSQL al lang ondersteunt, maar het enige belangrijke dat alleen mogelijk is door procedures te gebruiken, is transactiecontrole. U kunt transacties vastleggen en terugdraaien vanuit opgeslagen procedures.

Bekijk de CREATE PROCEDUREdocumentatie.

Kolommen aan tabellen toevoegen

Het wijzigen van een tabel om een ​​nieuwe NOT NULL-kolom toe te voegen met een DEFAULT-waarde was een beetje lastig in PostgreSQL, omdat dit ervoor zorgde dat de server de hele tabel herschreef. Met v11 is het nu mogelijk om DDL-instructies als deze te hebben:

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

uitvoeren in constante tijd. Rijen worden niet aangeraakt wanneer dit wordt uitgevoerd, en worden in plaats daarvan "lui" bijgewerkt.

Lees hier meer over deze functie.

SHA-functies

En tot slot, degenen onder u die pgcrypto alleen voor SHA-functies hebben gebruikt, kunnen nu overschakelen naar de functies die zijn ingebouwd in 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. Oracle Instant Client voor op ARM gebaseerd Debian-apparaat

  2. MySQL en GROUP_CONCAT() maximale lengte

  3. Kolomkop verwijderen in het uitvoertekstbestand

  4. Selecteer TOP X (of onderste) procent voor numerieke waarden in MySQL