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

Nové a vyvíjející se podnikové funkce PostgreSQL s nejnovějšími verzemi

PostgreSQL také zavedl mnoho dalších průlomových funkcí ve verzích 10 až 11, 12 a 13, které z něj dělají skutečného konkurenta Oracle, jako jsou vylepšení dělení, paralelní dotaz a logická replikace. V tomto příspěvku na blogu představíme některé nové a pozoruhodné funkce PostgreSQL obsažené v novějších verzích PostgreSQL.

Funkce rozdělení

Deklarativní rozdělení

Až do PostgreSQL verze 9.4 neexistovalo v PostgreSQL žádné skutečné rozdělení. Bylo toho dosaženo pouze prostřednictvím dědičnosti tabulky, která nabízela velmi omezenou funkčnost a výkonnostní výhody. Velká část funkcí je spravována ručně pomocí spouštěčů nebo příkazů SQL. Například jsme museli použít spouštěče k nasměrování řádku před INSERT do správného oddílu. Musíme vytvořit indexy pro každý oddíl zvlášť. PostgreSQL verze 10 dala vzniknout deklarativnímu dělení na oddíly, ale i tak jsme museli pro každý oddíl vytvořit omezení a indexy.

PostgreSQL 11 je dodáván s velmi působivou sadou nových funkcí pro dělení, které pomáhají zlepšit výkon a také pomáhají zprůhlednit rozdělené tabulky pro aplikace.

Logická replikace dělených tabulek

S PostgreSQL 13 zavedli podporu pro logické replikování rozdělených tabulek. Dříve jste byli nuceni replikovat oddíly do pohotovostních režimů jednotlivě. Nyní však můžete automaticky replikovat všechny své oddíly současně

Metody rozdělení

Aktuálně podporované metody rozdělení jsou rozsah, seznam a hash.

Klíče a indexy

Plná podpora cizích klíčů v dělených tabulkách byla přidána do PostgreSQL 12. PostgreSQL se také může pochlubit podporou primárních klíčů, indexů a spouštěčů v dělených tabulkách.

Výchozí oddíl

PostgreSQL umožňuje vytvoření „výchozího“ oddílu pro ukládání dat, který neodpovídá žádnému ze zbývajících oddílů. Uživatelé Oracle budou tuto funkci milovat, protože není dostupná v databázi Oracle.

Pohyb řádků

Příkazy UPDATE, které mění sloupec klíče oddílu, nyní způsobí, že se dotčené řádky přesunou do příslušných oddílů.

Prořezávání oddílů

Zlepšete výkon SELECT pomocí vylepšených strategií eliminace oddílů během plánování a provádění dotazů. Byla přidána nová metoda provádění odstraňování oddílů. Tento nový algoritmus je schopen určit odpovídající oddíly pohledem na klauzuli WHERE dotazu. Předchozí algoritmus postupně zkontroloval každý oddíl, aby zjistil, zda může odpovídat klauzuli WHERE dotazu. To vedlo k dalšímu prodloužení doby plánování, protože počet oddílů rostl.

Prořezávání oddílu během provádění dotazu

Jako u připravených příkazů nejsou parametry dotazu před provedením známy. Query Planner nemůže během fáze plánování odstranit oddíly, protože parametry nejsou známy. Exekutor tedy provede prořezávání oddílu během provádění, aby měl přístup pouze k oddílům, které odpovídají parametrům.

Nové a vyvíjející se podnikové funkce PostgreSQL s nejnovějšími verzemi Kliknutím na Tweet

Funkce indexování

Krycí index

PostgreSQL nyní umožňuje přidávat neklíčové sloupce do indexu btree. Vzhledem k tomu, že dotazy obvykle potřebují získat více sloupců než jen ty, ve kterých hledají, PostgreSQL vám umožňuje vytvořit index, ve kterém jsou některé sloupce pouze „užitnou zátěží“ a nejsou součástí vyhledávacího klíče. Pomáhá při provádění pouze skenování pouze indexu k načtení požadovaných řádků.

Přeindexovat souběžně

Po spuštění PostgreSQL 12 je možné SOUČASNĚ přestavět index pomocí REINDEX, aniž by bylo nutné zamykat tabulku pro čtení/zápis, stejně jako příkaz Oracle REBUILD INDEX.

Vytvoření paralelního indexu

S paralelním vytvářením indexů (zavedeno v PostgreSQL 11, aktuálně použitelné pouze pro indexy b-stromu) lze indexy vytvářet rychleji až do hodnoty max_parallel_workers a nastavením maintenance_work_mem dostatečně velké, aby pojal více kopie dat. Paralelní vytváření indexu může výrazně zkrátit dobu vytváření indexu.

Deduplikace dat v indexech B-stromu

Někdy budou v rejstříku duplicitní položky. To znamená, že listový uzel v indexu B-Strom s alespoň dvěma položkami indexu ve stejném indexu obsahuje stejná data pro všechny sloupce indexu. S přidáním deduplikace v PostgreSQL 13 můžete tyto duplicitní položky indexu B-Stromu seskupit a shromáždit je do skupinové položky. Výhodou je úspora místa a nižší zatížení disku a paměti RAM, protože nebudete muset duplikovat data sloupců. Duplicitní položky také způsobují nežádoucí nafouknutí indexu.

Ověření

SCRAM-SHA-256

V PostgreSQL 11 přišla podpora pro ověřování hesla SCRAM-SHA-256. Tato metoda zabraňuje odposlouchávání hesel na nedůvěryhodných připojeních a umožňuje ukládat vaše hesla v kryptograficky hašované podobě.

Ze všech aktuálně podporovaných metod ověřování hesla je tato nejbezpečnější.

GSSAPI

GSSAPI umožňuje bezpečné ověřování a také automatické jednotné přihlášení pro systémy, které jej podporují. Tato metoda ověřování se opírá o knihovnu zabezpečení kompatibilní s GSSAPI. Data odeslaná přes databázové připojení budou nešifrovaná, pokud není použito SSL; samotná autentizace je však bezpečná. GSSAPI s ověřováním Kerberos je možné s PostgreSQL podle průmyslových standardů. Při použití Kerberos se používá standardní principál ve formátu „název_služby/název_hostitele@realm“. Jakýkoli principál zahrnutý do tabulky klíčů používané serverem bude serverem PostgreSQL přijat.

LDAP

Tato metoda ověřování funguje podobně jako ověřování heslem a používá jako metodu ověření LDAP. Používá se pouze k ověření párů uživatelského jména a hesla, proto musí uživatel v databázi již existovat, aby autentizace fungovala. Autentizace LDAP funguje buď v režimu jednoduché vazby, nebo v tom, co se nazývá vyhledávání+vazba. Search+bind vám umožňuje používat jiné identifikátory ve srovnání s režimem jednoduché vazby, který umožňuje použití pouze rozlišujícího názvu, názvu domény nebo e-mailu.

Certifikát

Metoda autentizace pomocí certifikátu používá k ověření certifikáty SSL. V důsledku toho je k dispozici pouze pro připojení SSL. Při ověřování certifikátem není vyžadováno žádné heslo. Klient jednoduše potřebuje poskytnout platný a důvěryhodný certifikát, aby se mohl ověřit. Běžné jméno certifikátu bude porovnáno s uživatelským jménem databáze, a pokud bude nalezena shoda, klient bude přihlášen.

Další pozoruhodné funkce

Paralelní vakuum

S vydáním PostgreSQL 13 byla implementována vylepšení příkazu VACUUM. Předmětným vylepšením je přidaná volba parametru PARALLEL. S PARALLEL můžete provádět fáze indexového vakua a indexového čištění VACUUM. To vám umožňuje paralelně vysávat více indexů odpovídajících jedné tabulce.

Paralelní dotaz

Většina dotazů přehledů, které obecně skenují velké množství dat, trpí snížením výkonu kvůli nutnosti skenovat nebo agregovat data z mnoha řádků i při skenování indexu. Tyto dotazy mohou do 9.4 používat pouze jeden CPU a spouštět je sériově.

S paralelním dotazem (který nabízí paralelní sekvenční skenování, slučovací spojení, hashovací spojení, agregaci a další funkce plánu paralelních dotazů) mohou tyto dotazy využívat výhody více pracovníků a výkon zlepšit z 2x na 10x podle dokumentace.

Podívejte se na tento příspěvek, kde se dozvíte, kdy používat paralelní dotazy.

Nativní logická replikace

PostgreSQL zavedl nativní logickou replikaci ve verzi 10, aby poskytl flexibilnější možnost replikace, na rozdíl od streamingové replikace a podobně jako Oracle Streams, pro replikaci konkrétních tabulek, sloupců nebo řádků. To lze použít k rozdělení mezi více databází nebo konsolidaci z více databází. A může se také replikovat mezi různými hlavními verzemi PostgreSQL.

Uložené procedury s vloženými transakcemi

Další doplněk, díky kterému je PostgreSQL kompatibilní pro migraci z databáze Oracle.

V programu pgsql nemáme ve verzi 9.4 žádnou kontrolu transakcí (blok nebo funkce DO) a ke spuštění a potvrzení/vrácení transakcí musíme použít řešení, jako je dblink .

Díky uloženým procedurám, které měly premiéru ve verzi 11, můžeme nyní implementovat řízení transakcí v jakékoli struktuře pgsql, jako je smyčka while, smyčka for nebo příkaz if else. Přestože jsou uložené procedury podobné funkcím, musí být vyvolány příkazem CALL a mohou fungovat jako nezávislé programy.

Generované sloupce

Stejně jako databáze Oracle mohou generované sloupce v PostgreSQL ukládat data automaticky vypočítaná z jiných sloupců v řádku. To urychluje dotazy tím, že není nutné počítat hodnotu během provádění dotazu a místo toho je vygenerovaná hodnota sloupce vypočítána při INSERT nebo UPDATE do řádku.

Kompilace JIT

Všechny PostgreSQL 11, 12 a 13 podporují kompilaci Just-in-Time (JIT), která byla přidána v roce 2018. Kompilace JIT je proces přeměny interpretovaného hodnocení programu na nativní program. S kompilací JIT lze tento proces provést za běhu. Výhodou JIT je možnost generování funkcí specifických pro výraz, které může CPU nativně provádět. Tento proces vám zase zrychlí.

Kontrolní součty stránky

Kontrolní součty stránky je funkce, která vám pomáhá ověřit integritu dat uložených na disku. Dříve jste mohli povolit kontrolní součty stránek pouze během inicializace clusteru PostgreSQL. PostgreSQL 12 zavedl možnost povolit nebo zakázat kontrolní součty stránek v offline clusteru pomocí příkazu pg_checksums.

Shrnutí

Jak můžete vidět z tohoto článku, PostgreSQL je neustále se vyvíjející databázový systém, který přináší mnoho výkonných funkcí. Každá nová verze přidává nové vzrušující funkce, díky nimž je skutečným konkurentem jiných databází, jako je Oracle. Jeho funkce pro dělení a indexování získávají mnoho nových aktualizací, které přidávají do jeho již tak rozsáhlé sady nástrojů.

Pokud hledáte spravované řešení pro svou databázi PostgreSQL, neváhejte se podívat na naši službu ScaleGrid pro PostgreSQL. Poskytujeme bezplatnou 30denní zkušební verzi, která vám umožní používat všechny naše funkce správy bez omezení. Cena začíná na pouhých 10 $ měsíčně a poskytuje vám přístup k plně spravovanému hostingovému řešení PostgreSQL na podnikové úrovni s nepřetržitou podporou.


  1. existuje nějaký způsob, jak zaznamenat všechny neúspěšné příkazy SQL v oracle 10g

  2. SQL Server Převod celého čísla na binární řetězec

  3. Jak funguje funkce to_number() v PostgreSQL

  4. Hibernate:Vytvořte tabulky Mysql InnoDB namísto MyISAM