PostgreSQL 11: Razvoj particioniranja iz Postgres 9.6 v Postgres 11

Lep petek vsem! Do začetka tečaja ostaja vse manj časa "Relacijska DBMS", zato danes delimo prevod drugega uporabnega gradiva na to temo.

Na stopnji razvoja PostgreSQL 11 Opravljenega je bilo nekaj impresivnega dela za izboljšanje particioniranja tabel. Predelne mize - to je funkcija, ki je v PostgreSQL obstajala precej dolgo, vendar tako rekoč v bistvu ni obstajala do različice 10, v kateri je postala zelo uporabna funkcija. Prej smo izjavili, da je dedovanje tabel naša izvedba particioniranja in to drži. Samo ta metoda vas je prisilila, da večino dela opravite ročno. Na primer, če želite, da se tuple vstavljajo v odseke med INSERT-i, bi morali konfigurirati sprožilce, da to naredijo namesto vas. Particioniranje prek dedovanja je bilo zelo počasno in poleg tega je bilo težko razviti dodatno funkcionalnost.

V PostgreSQL 10 smo videli rojstvo »deklarativne particije«, funkcije, zasnovane za reševanje številnih težav, ki jih ni bilo mogoče rešiti s staro metodo dedovanja. To je vodilo do veliko močnejšega orodja, ki nam je omogočilo vodoravno razdelitev podatkov!

Primerjava lastnosti

PostgreSQL 11 uvaja impresiven nabor novih funkcij, ki pomagajo izboljšati zmogljivost in naredijo particionirane tabele preglednejše za aplikacije.

PostgreSQL 11: Razvoj particioniranja iz Postgres 9.6 v Postgres 11
PostgreSQL 11: Razvoj particioniranja iz Postgres 9.6 v Postgres 11
PostgreSQL 11: Razvoj particioniranja iz Postgres 9.6 v Postgres 11
1. Uporaba omejevalnih izjem
2. Dodaja samo vozlišča
3. Samo za particionirano tabelo, ki se sklicuje na neparticionirano tabelo
4. Indeksi morajo vsebovati vse ključne stolpce particije
5. Omejitve odsekov na obeh straneh se morajo ujemati

Produktivnost

Tudi tukaj imamo dobre novice! Dodana nova metoda brisanje razdelkov. Ta novi algoritem lahko določi ustrezne odseke tako, da pogleda pogoj poizvedbe WHERE. Prejšnji algoritem je nato preveril vsak odsek, da bi ugotovil, ali lahko izpolni pogoj WHERE. To je povzročilo dodatno povečanje časa načrtovanja, saj se je povečalo število odsekov.

V 9.6 je bilo s particioniranjem prek dedovanja usmerjanje tulp v particije običajno opravljeno s pisanjem sprožilne funkcije, ki je vsebovala niz stavkov IF za vstavljanje tuple v pravilno particijo. Te funkcije se lahko izvajajo zelo počasi. Z deklarativnim particioniranjem, dodanim v različici 10, to deluje veliko hitreje.

Z uporabo particionirane tabele s 100 particijami lahko ocenimo zmogljivost nalaganja 10 milijonov vrstic v tabelo z 1 stolpcem BIGINT in 5 stolpci INT.

PostgreSQL 11: Razvoj particioniranja iz Postgres 9.6 v Postgres 11

Zmogljivost poizvedovanja po tej tabeli za iskanje enega indeksiranega zapisa in izvajanje DML za manipulacijo enega zapisa (z uporabo samo 1 procesorja):

PostgreSQL 11: Razvoj particioniranja iz Postgres 9.6 v Postgres 11

Tukaj lahko vidimo, da se je zmogljivost vsake operacije od PG 9.6 znatno povečala. Zahteve SELECT videti veliko bolje, zlasti tiste, ki lahko med načrtovanjem poizvedbe izključijo več particij. To pomeni, da lahko razporejevalnik preskoči veliko dela, ki bi ga moral opraviti prej. Na primer, poti niso več zgrajene za nepotrebne odseke.

Zaključek

Particioniranje tabel začenja postajati zelo zmogljiva funkcija v PostgreSQL. Omogoča vam, da hitro prikažete podatke na spletu in jih prenesete brez povezave, ne da bi čakali na dokončanje počasnih, obsežnih operacij DML.. To tudi pomeni, da je mogoče povezane podatke shraniti skupaj, kar pomeni, da je do podatkov, ki jih potrebujete, mogoče dostopati veliko bolj učinkovito. Izboljšave v tej različici ne bi bile mogoče brez razvijalcev, ocenjevalcev in komitatorjev, ki so neutrudno delali na vseh teh funkcijah.
Hvala vsem! PostgreSQL 11 izgleda fantastično!

Tukaj je tako kratek, a zelo zanimiv članek. Delite svoje komentarje in se ne pozabite prijaviti Odprt dan, v okviru katerega bo podrobneje začrtan program tečaja.

Vir: www.habr.com

Dodaj komentar