PostgreSQL 11: A particionálás evolúciója Postgres 9.6-ról Postgres 11-re

Szép pénteket mindenkinek! Egyre kevesebb idő van hátra a tanfolyam indulásáig "Relációs DBMS", ezért ma egy újabb hasznos anyag fordítását osztjuk meg a témában.

Fejlesztési szakaszban PostgreSQL 11 Lenyűgöző munkát végeztek a tábla particionálás javítása érdekében. Elválasztó táblák - ez a PostgreSQL-ben elég régóta létező függvény, de úgymond lényegében nem létezett egészen a 10-es verzióig, amiben nagyon hasznos funkcióvá vált. Korábban kijelentettük, hogy a tábla öröklődése a particionálásunk megvalósítása, és ez igaz. Csak ez a módszer kényszerítette arra, hogy a munka nagy részét kézzel végezze el. Például, ha azt szeretné, hogy az INSERT-ek során sorok legyenek beszúrva a szakaszokba, akkor ehhez be kell állítania a triggereket. Az öröklődés útján történő particionálás nagyon lassú volt, és ezen felül nehéz volt további funkciókat fejleszteni.

A PostgreSQL 10-ben megszületett a „deklaratív particionálás”, egy olyan funkció, amelyet számos olyan probléma megoldására terveztek, amelyek a régi öröklési módszerrel megoldhatatlanok voltak. Ez egy sokkal hatékonyabb eszközhöz vezetett, amely lehetővé tette az adatok vízszintes felosztását!

Funkció-összehasonlítás

A PostgreSQL 11 lenyűgöző új funkciókat mutat be, amelyek javítják a teljesítményt és átláthatóbbá teszik a particionált táblákat az alkalmazások számára.

PostgreSQL 11: A particionálás evolúciója Postgres 9.6-ról Postgres 11-re
PostgreSQL 11: A particionálás evolúciója Postgres 9.6-ról Postgres 11-re
PostgreSQL 11: A particionálás evolúciója Postgres 9.6-ról Postgres 11-re
1. Korlátozó kivételek használata
2. Csak csomópontokat ad hozzá
3. Csak particionált táblához, amely nem particionáltra hivatkozik
4. Az indexeknek tartalmazniuk kell a partíció összes kulcsoszlopát
5. A szakaszkorlátozásoknak mindkét oldalon egyeznie kell

termelékenység

Itt is van egy jó hírünk! Új módszer hozzáadva szakaszok törlése. Ez az új algoritmus meg tudja határozni a megfelelő szakaszokat a lekérdezési feltétel alapján WHERE. Az előző algoritmus viszont minden szakaszt megvizsgált, hogy eldöntse, megfelel-e a feltételnek WHERE. Ez a szakaszok számának növekedésével további tervezési időnövekedést eredményezett.

A 9.6-ban az örökléssel történő particionálás esetén a sorok partíciókba irányítása általában egy trigger függvény írásával történt, amely egy sor IF utasítást tartalmazott a leíró beillesztéséhez a megfelelő partícióba. Ezek a funkciók nagyon lassúak lehetnek. A 10-es verzióban hozzáadott deklaratív particionálással ez sokkal gyorsabban működik.

Egy 100 partíciós particionált tábla segítségével értékelhetjük 10 millió sor betöltésének teljesítményét egy 1 BIGINT oszlopot és 5 INT oszlopot tartalmazó táblába.

PostgreSQL 11: A particionálás evolúciója Postgres 9.6-ról Postgres 11-re

A tábla lekérdezésének teljesítménye egy indexelt rekord megtalálásához és a DML végrehajtásához egy rekord kezeléséhez (csak 1 processzor használatával):

PostgreSQL 11: A particionálás evolúciója Postgres 9.6-ról Postgres 11-re

Itt láthatjuk, hogy az egyes műveletek teljesítménye jelentősen megnőtt a PG 9.6 óta. Kérések SELECT sokkal jobban néznek ki, különösen azok, amelyek képesek több partíció kizárására a lekérdezés tervezése során. Ez azt jelenti, hogy az ütemező sok olyan munkát kihagyhat, amelyet korábban meg kellett volna tennie. Például már nem építenek utakat a felesleges szakaszokhoz.

Következtetés

A táblaparticionálás kezd egy nagyon hatékony funkcióvá válni a PostgreSQL-ben. Lehetővé teszi az adatok gyors online megjelenítését és offline módba helyezését anélkül, hogy megvárná a lassú, hatalmas DML-műveletek befejezését.. Ez azt is jelenti, hogy a kapcsolódó adatok együtt tárolhatók, vagyis a szükséges adatok sokkal hatékonyabban érhetők el. Az ebben a verzióban végrehajtott fejlesztések nem jöhettek volna létre a fejlesztők, lektorok és elkötelezettek nélkül, akik fáradhatatlanul dolgoztak ezeken a funkciókon.
Köszönet nekik mindannyiuknak! A PostgreSQL 11 fantasztikusan néz ki!

Itt van egy ilyen rövid, de nagyon érdekes cikk. Oszd meg észrevételeidet, és ne felejts el regisztrálni Nyílt nap, amelyen belül a tanfolyam programja is részletesen körvonalazódik.

Forrás: will.com

Hozzászólás