PostgreSQL 11: Evoluo de dispartigo de Postgres 9.6 al Postgres 11

Bonan vendredon al ĉiuj! Malpli kaj malpli da tempo restas antaŭ ol la kurso komenciĝas "Relacia DBMS", do hodiaŭ ni dividas la tradukon de alia utila materialo pri la temo.

En evolufazo PostgreSQL 11 Estis iu impona laboro farita por plibonigi tabeldispartigon. Dispartigaj tabloj - ĉi tio estas funkcio kiu ekzistis en PostgreSQL dum sufiĉe longa tempo, sed ĝi, por tiel diri, esence ne ekzistis ĝis versio 10, en kiu ĝi fariĝis tre utila funkcio. Ni antaŭe deklaris, ke tabela heredo estas nia efektivigo de dispartigo, kaj ĉi tio estas vera. Nur ĉi tiu metodo devigis vin fari la plej grandan parton de la laboro permane. Ekzemple, se vi volus ke opoj estu enmetitaj en sekciojn dum INSERToj, vi devus agordi ellasilon por fari tion por vi. Dispartigo per heredo estis tre malrapida kaj malfacile disvolvi plian funkciecon aldone.

En PostgreSQL 10, ni vidis la naskiĝon de "deklara dispartigo", trajto desegnita por solvi multajn problemojn, kiuj estis nesolveblaj per la malnova hereda metodo. Ĉi tio kondukis al multe pli potenca ilo, kiu permesis al ni disigi datumojn horizontale!

Karakterizaĵa komparo

PostgreSQL 11 enkondukas imponan aron de novaj funkcioj, kiuj helpas plibonigi rendimenton kaj fari dividitajn tabelojn pli travideblaj al aplikaĵoj.

PostgreSQL 11: Evoluo de dispartigo de Postgres 9.6 al Postgres 11
PostgreSQL 11: Evoluo de dispartigo de Postgres 9.6 al Postgres 11
PostgreSQL 11: Evoluo de dispartigo de Postgres 9.6 al Postgres 11
1. Uzante Limigajn Esceptojn
2. Aldonas nur nodojn
3. Nur por dividita tabelo referencanta ne-dispartita tabelo
4. Indeksoj devas enhavi ĉiujn ŝlosilajn kolumnojn de la sekcio
5. Sekciaj limigoj ambaŭflanke devas kongrui

Produkteco

Ni ankaŭ havas bonajn novaĵojn ĉi tie! Nova metodo aldonita forigante sekciojn. Ĉi tiu nova algoritmo povas determini taŭgajn sekciojn rigardante la demandkondiĉon WHERE. La antaŭa algoritmo, siavice, kontrolis ĉiun sekcion por determini ĉu ĝi povis renkonti la kondiĉon WHERE. Tio rezultigis kroman pliiĝon en planada tempo kiam la nombro da sekcioj pliiĝis.

En 9.6, kun dispartigo per heredo, vojigo de opoj en sekciojn estis tipe farita skribante ellasilfunkcion kiu enhavis serion de IF-deklaroj por enigi la opon en la ĝustan sekcion. Ĉi tiuj funkcioj povus esti tre malrapide plenumi. Kun deklara dispartigo aldonita en versio 10, tio funkcias multe pli rapide.

Uzante dividitan tablon kun 100 sekcioj, ni povas taksi la agadon de ŝarĝo de 10 milionoj da vicoj en tabelon kun 1 BIGINT-kolumno kaj 5 INT-kolumnoj.

PostgreSQL 11: Evoluo de dispartigo de Postgres 9.6 al Postgres 11

Agado de pridemando de ĉi tiu tablo por trovi unu indeksitan rekordon kaj ekzekuti DML por manipuli unu rekordon (uzante nur 1 procesoron):

PostgreSQL 11: Evoluo de dispartigo de Postgres 9.6 al Postgres 11

Ĉi tie ni povas vidi, ke la agado de ĉiu operacio signife pliiĝis ekde PG 9.6. Petoj SELECT aspektas multe pli bone, precipe tiuj, kiuj kapablas ekskludi plurajn subdiskojn dum demanda planado. Ĉi tio signifas, ke la planisto povas preterlasi multan laboron, kiun ĝi devus esti farinta antaŭe. Ekzemple, vojoj ne plu estas konstruitaj por nenecesaj sekcioj.

konkludo

Tabla dispartigo komencas fariĝi tre potenca funkcio en PostgreSQL. Ĝi permesas vin rapide montri datumojn interrete kaj preni ĝin eksterrete sen atendi malrapidajn, amasajn DML-operaciojn por plenumi.. Ĉi tio ankaŭ signifas, ke rilataj datumoj povas esti konservitaj kune, tio signifas, ke la datumoj, kiujn vi bezonas, povas esti alireblaj multe pli efike. La plibonigoj faritaj en ĉi tiu versio ne estus eblaj sen la programistoj, recenzistoj kaj komitantoj, kiuj senlace laboris pri ĉiuj ĉi tiuj funkcioj.
Dankon al ili ĉiuj! PostgreSQL 11 aspektas mirinda!

Jen tiel mallonga sed sufiĉe interesa artikolo. Kunhavigu viajn komentojn kaj ne forgesu registriĝi Malferma Tago, ene de kiu la kursprogramo estos detale skizita.

fonto: www.habr.com

Aldoni komenton