PostgreSQL 11: sadalīšanas evolūcija no Postgres 9.6 uz Postgres 11

Lai visiem lieliska piektdiena! Līdz kursa sākumam paliek arvien mazāk laika "Relāciju DBVS", tāpēc šodien dalāmies ar vēl viena noderīga materiāla tulkojumu par šo tēmu.

Attīstības stadijā PostgreSQL 11 Ir paveikts iespaidīgs darbs, lai uzlabotu tabulu sadalīšanu. Sadalīšanas tabulas - šī ir funkcija, kas pastāvēja PostgreSQL diezgan ilgu laiku, bet tā, tā teikt, būtībā nepastāvēja līdz 10. versijai, kurā tā kļuva par ļoti noderīgu funkciju. Iepriekš mēs norādījām, ka tabulu mantošana ir mūsu sadalīšanas īstenošana, un tā ir taisnība. Tikai šī metode lika jums veikt lielāko daļu darba manuāli. Piemēram, ja vēlaties, lai INSERT laikā sadaļās tiktu ievietoti korteži, jums ir jākonfigurē trigeri, lai to izdarītu jūsu vietā. Sadalīšana, izmantojot mantojumu, bija ļoti lēna, un tai bija grūti izstrādāt papildu funkcionalitāti.

Operētājsistēmā PostgreSQL 10 mēs redzējām “deklaratīvas sadalīšanas” dzimšanu — līdzekli, kas izstrādāts, lai atrisinātu daudzas problēmas, kuras nebija atrisināmas, izmantojot veco mantojuma metodi. Tas radīja daudz jaudīgāku rīku, kas ļāva mums sadalīt datus horizontāli!

Funkciju salīdzinājums

PostgreSQL 11 ievieš iespaidīgu jaunu funkciju kopumu, kas palīdz uzlabot veiktspēju un padara sadalītās tabulas pārskatāmākas lietojumprogrammām.

PostgreSQL 11: sadalīšanas evolūcija no Postgres 9.6 uz Postgres 11
PostgreSQL 11: sadalīšanas evolūcija no Postgres 9.6 uz Postgres 11
PostgreSQL 11: sadalīšanas evolūcija no Postgres 9.6 uz Postgres 11
1. Ierobežojošo izņēmumu izmantošana
2. Pievieno tikai mezglus
3. Tikai sadalītai tabulai, kas atsaucas uz nesadalītu tabulu
4. Indeksos jāsatur visas nodalījuma galvenās kolonnas
5. Sadaļu ierobežojumiem abās pusēs ir jāsakrīt

Производительность

Arī šeit mums ir labas ziņas! Pievienota jauna metode sadaļu dzēšana. Šis jaunais algoritms var noteikt piemērotas sadaļas, aplūkojot vaicājuma nosacījumu WHERE. Iepriekšējais algoritms savukārt pārbaudīja katru sadaļu, lai noteiktu, vai tā atbilst nosacījumam WHERE. Tas izraisīja papildu plānošanas laika pieaugumu, palielinoties sadaļu skaitam.

Programmā 9.6, izmantojot sadalīšanu, izmantojot mantošanu, kortežu maršrutēšana nodalījumos parasti tika veikta, ierakstot trigera funkciju, kas saturēja virkni IF priekšrakstu, lai ievietotu korešu pareizajā nodalījumā. Šo funkciju izpilde var būt ļoti lēna. Ja 10. versijā ir pievienota deklaratīvā sadalīšana, tas darbojas daudz ātrāk.

Izmantojot sadalītu tabulu ar 100 nodalījumiem, mēs varam novērtēt veiktspēju, ielādējot 10 miljonus rindu tabulā ar 1 BIGINT kolonnu un 5 INT kolonnām.

PostgreSQL 11: sadalīšanas evolūcija no Postgres 9.6 uz Postgres 11

Vaicājumu veikšana šajā tabulā, lai atrastu vienu indeksētu ierakstu un izpildītu DML, lai manipulētu ar vienu ierakstu (izmantojot tikai 1 procesoru):

PostgreSQL 11: sadalīšanas evolūcija no Postgres 9.6 uz Postgres 11

Šeit mēs redzam, ka katras darbības veiktspēja ir ievērojami palielinājusies kopš PG 9.6. Pieprasījumi SELECT izskatās daudz labāk, īpaši tie, kas vaicājuma plānošanas laikā spēj izslēgt vairākus nodalījumus. Tas nozīmē, ka plānotājs var izlaist daudz darba, kas tam būtu bijis jāpaveic iepriekš. Piemēram, vairs netiek būvēti celiņi nevajadzīgiem posmiem.

Secinājums

Tabulu sadalīšana sāk kļūt par ļoti jaudīgu līdzekli PostgreSQL. Tas ļauj ātri parādīt datus tiešsaistē un izmantot tos bezsaistē, negaidot lēnu, masīvu DML darbību pabeigšanu.. Tas nozīmē arī to, ka saistītos datus var glabāt kopā, kas nozīmē, ka nepieciešamajiem datiem var piekļūt daudz efektīvāk. Šajā versijā veiktie uzlabojumi nebūtu iespējami bez izstrādātājiem, recenzentiem un izstrādātājiem, kuri nenogurstoši strādāja pie visām šīm funkcijām.
Paldies viņiem visiem! PostgreSQL 11 izskatās fantastiski!

Šeit ir tik īss, bet diezgan interesants raksts. Dalieties savos komentāros un neaizmirstiet reģistrēties Atvērto durvju diena, kura ietvaros tiks detalizēti izklāstīta kursa programma.

Avots: www.habr.com

Pievieno komentāru