PostgreSQL 11: Evolúsje fan partitionearring fan Postgres 9.6 nei Postgres 11

In moaie freed allegear! Hieltyd minder tiid bliuwt foardat de kursus begjint "Relasjonele DBMS", dus hjoed diele wy de oersetting fan in oar nuttich materiaal oer it ûnderwerp.

Op ûntwikkeling poadium PostgreSQL 11 D'r is wat yndrukwekkend wurk dien dien om tafelferdieling te ferbetterjen. Partitioning tabellen - dit is in funksje dy't bestien hat yn PostgreSQL foar in lange tiid, mar it, om sa te sizzen, yn essinsje bestie net oant ferzje 10, wêryn it in tige brûkbere funksje waard. Wy hawwe earder sein dat tabelfererving ús ymplemintaasje fan partitionering is, en dit is wier. Allinich dizze metoade twong jo om it measte wurk mei de hân te dwaan. As jo ​​​​bygelyks tupels woene wurde ynfoege yn seksjes tidens INSERTs, soene jo triggers moatte konfigurearje om dit foar jo te dwaan. Partitioning fia erfenis wie tige stadich en dreech te ûntwikkeljen ekstra funksjonaliteit boppe op.

Yn PostgreSQL 10 seagen wy de berte fan "declarative partitioning," in funksje ûntworpen om in protte problemen op te lossen dy't ûnoplosber wiene mei de âlde erfskipmetoade. Dit late ta in folle machtiger ark dat ús tastien om gegevens horizontaal te splitsen!

Feature ferliking

PostgreSQL 11 yntrodusearret in yndrukwekkende set fan nije funksjes dy't helpe ferbetterjen prestaasjes en meitsje partitioned tabellen mear transparant foar applikaasjes.

PostgreSQL 11: Evolúsje fan partitionearring fan Postgres 9.6 nei Postgres 11
PostgreSQL 11: Evolúsje fan partitionearring fan Postgres 9.6 nei Postgres 11
PostgreSQL 11: Evolúsje fan partitionearring fan Postgres 9.6 nei Postgres 11
1. Mei help fan beheinende útsûnderings
2. Foeget allinnich knopen
3. Allinne foar in partitioned tabel ferwiist nei in net-partitioned
4. Yndeksen moatte befetsje alle kaai kolommen fan de dieling
5. Seksje beheinings oan beide kanten moatte oerien

Produktiviteit

Wy hawwe hjir ek goed nijs! Nije metoade tafoege seksjes wiskje. Dit nije algoritme kin passende seksjes bepale troch te sjen nei de query-betingst WHERE. It foarige algoritme kontrolearre op syn beurt elke seksje om te bepalen oft it oan de betingst koe foldwaan WHERE. Dit resultearre yn in ekstra ferheging fan planning tiid as it oantal seksjes tanommen.

Yn 9.6, mei partitionearring fia erfskip, waard it routing fan tuples yn partysjes typysk dien troch it skriuwen fan in triggerfunksje dy't in searje IF-útspraken befette om de tuple yn de juste partysje yn te foegjen. Dizze funksjes kinne heul traach wêze om út te fieren. Mei deklarative partitioning tafoege yn ferzje 10, wurket dit folle rapper.

Mei help fan in partitioned tabel mei 100 partysjes, kinne wy ​​evaluearje de prestaasjes fan it laden fan 10 miljoen rigen yn in tabel mei 1 BIGINT kolom en 5 INT kolommen.

PostgreSQL 11: Evolúsje fan partitionearring fan Postgres 9.6 nei Postgres 11

Prestaasje fan it opfreegjen fan dizze tabel om ien yndeksearre record te finen en DML út te fieren om ien record te manipulearjen (mei mar 1 prosessor):

PostgreSQL 11: Evolúsje fan partitionearring fan Postgres 9.6 nei Postgres 11

Hjir kinne wy ​​​​sjogge dat de prestaasjes fan elke operaasje signifikant tanommen binne sûnt PG 9.6. Fersiken SELECT sjoch folle better, benammen dyjingen dy't by steat binne om útslute meardere partysjes tidens query planning. Dit betsjut dat de planner in soad wurk kin oerslaan dat it earder dien hie. Der wurde bygelyks gjin paden mear oanlein foar ûnnedige stikken.

konklúzje

Tabelferdieling begjint in heul krêftige funksje te wurden yn PostgreSQL. It lit jo gegevens fluch online werjaan en offline nimme sûnder te wachtsjen op stadige, massive DML-operaasjes om te foltôgjen.. Dit betsjut ek dat relatearre gegevens tegearre kinne wurde opslein, wat betsjuttet dat de gegevens dy't jo nedich binne folle effisjinter tagonklik wurde kinne. De ferbetteringen makke yn dizze ferzje soene net mooglik west hawwe sûnder de ûntwikkelders, resinsinten en committers dy't ûnfermindere wurken oan al dizze funksjes.
Mei tank oan harren allegearre! PostgreSQL 11 sjocht der fantastysk út!

Hjir is sa'n koart, mar frij nijsgjirrich artikel. Diel jo opmerkingen en ferjit net oan te melden foar Iepen dei, wêryn't it kursusprogramma yn detail beskreaun wurdt.

Boarne: www.habr.com

Add a comment