PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL 11:Co nowego

Najnowsza i najlepsza wersja PostgreSQL, v11, ukaże się w tym tygodniu! Oto krótkie spojrzenie na nowe funkcje w tej wersji.

Ulepszenia partycjonowania

Największy zestaw ulepszeń dotyczy obsługi partycji. Postgres 11 obsługuje:

  • aktualizacja wierszy może przenosić je między partycjami
  • domyślne partycje
  • automatyczne tworzenie indeksów
  • Ograniczenia kluczy obcych są obsługiwane w tabelach podzielonych na partycje
  • unikalne indeksy
  • agregacja przesuwa się w dół do partycji
  • partycjonowanie przez hash
  • dzieci partycji na zdalnych serwerach (postgres_fdw) mogą być aktualizowane
  • Wstawianie..ON CONFLICT jest obsługiwane w tabelach podzielonych na partycje
  • bardziej wydajne plany zapytań i szybsze wykonywanie zapytań

Przeczytaj więcej o tych ulepszeniach tutaj.

Więcej równoległości

Istnieje wiele ulepszeń na całej planszy związanych ze zwiększoną równoległością. Połączenia, unii, tworzenie tabel i widoków za pomocą „CREATE..AS SELECT”, tworzenie indeksów b-drzewa i więcej korzyści z tych zmian.

Oto artykuł na temat poprawy wydajności tworzenia indeksów w Postgres 11.

Zapytania zgodne z JIT

Chociaż domyślnie wyłączone w 11, kompilacja zapytań JIT oparta na LLVM jest teraz wbudowana w Postgres. Serwer może teraz zdecydować się na kompilację niektórych zapytań (tych z oszacowaniami wykonania wyższymi niż próg) przy użyciu LLVM, co skutkuje szybszymi zapytaniami. Ta kompilacja jest automatyczna i przejrzysta dla aplikacji.

Oto kilka liczb.

Indeksy pokrycia

Dodano teraz indeksy obejmujące, dostępne w innych systemach RDBMS, ale nie w PostgreSQL. Dzięki temu możliwe jest posiadanie takiego indeksu (nowa składnia):

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

Taki indeks zawiera dodatkowe atrybuty (tu „empname”) w samym indeksie i umożliwia spełnienie zapytań takich jak:

SELECT empname FROM employees WHERE empid BETWEEN 1000 and 2000;

całkowicie przy użyciu skanowania tylko indeksu i w ogóle nie dotykać stosu.

Przeczytaj więcej o pokrywaniu indeksów tutaj.

Procedury przechowywane

Procedury składowane to kolejna instancja PostgreSQL w nadrabianiu zaległości w stosunku do innych systemów RDBMS. Są one oczywiście podobne do funkcji składowanych, które PostgreSQL obsługuje od dawna, ale jedyną wielką rzeczą, jaką można osiągnąć tylko przy użyciu procedur, jest kontrola transakcji. Możesz zatwierdzać i wycofywać transakcje z procedur przechowywanych.

Zajrzyj do dokumentacji UTWÓRZ PROCEDURĘ.

Dodawanie kolumn do tabel

Zmienianie tabeli w celu dodania nowej kolumny NOT NULL z wartością DEFAULT było trochę uciążliwe w PostgreSQL, ponieważ spowodowało to, że serwer przepisał całą tabelę. W wersji 11 można teraz mieć takie instrukcje DDL:

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

wykonać w stałym czasie. Wiersze nie są dotykane podczas wykonywania, a zamiast tego są aktualizowane „leniwie”.

Przeczytaj więcej o tej funkcji tutaj.

Funkcje SHA

I wreszcie, ci z was, którzy używali pgcrypto tylko do funkcji SHA, mogą teraz przełączyć się na te wbudowane w 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie bazy danych PostgreSQL

  2. Jak mogę wstawić obiekt JSON do Postgresa za pomocą przygotowanego Javy?

  3. Dlaczego najlepiej przechowywać numer telefonu jako ciąg, a nie jako liczbę całkowitą?

  4. Ustawianie limitu czasu połączenia z PDO

  5. Zaktualizuj wiele kolumn w funkcji wyzwalacza w plpgsql