PostgreSQL 11: Еволуција на партиција од Postgres 9.6 до Postgres 11

Имајте одличен петок на сите! Сè помалку време останува пред почетокот на курсот „Релациски DBMS“, па затоа денес споделуваме превод на уште еден корисен материјал на темата.

На фаза на развој PostgreSQL 11 Направена е импресивна работа за да се подобри поделбата на табелите. Табели за преградување - ова е функција која постоеше во PostgreSQL доста долго време, но, така да се каже, во суштина не постоеше до верзијата 10, во која стана многу корисна функција. Претходно кажавме дека наследувањето на табелата е нашата имплементација на партиционирање, и тоа е точно. Само овој метод ве принуди поголемиот дел од работата да ја вршите рачно. На пример, ако сакате торките да се вметнуваат во делови за време на INSERTs, ќе треба да ги конфигурирате предизвикувачите за да го направат тоа наместо вас. Поделбата преку наследување беше многу бавна и тешко се развиваше дополнителна функционалност.

Во PostgreSQL 10, го видовме раѓањето на „декларативна партиција“, карактеристика дизајнирана да реши многу проблеми кои беа нерешливи со користење на стариот метод на наследување. Ова доведе до многу помоќна алатка која ни овозможи хоризонтално да ги делиме податоците!

Споредба на карактеристики

PostgreSQL 11 воведува импресивен сет на нови функции кои помагаат да се подобрат перформансите и да се направат поделените табели потранспарентни за апликациите.

PostgreSQL 11: Еволуција на партиција од Postgres 9.6 до Postgres 11
PostgreSQL 11: Еволуција на партиција од Postgres 9.6 до Postgres 11
PostgreSQL 11: Еволуција на партиција од Postgres 9.6 до Postgres 11
1. Користење на ограничувачки исклучоци
2. Додава само јазли
3. Само за поделена табела која упатува на непартицирана
4. Индексите мора да ги содржат сите клучни колони на партицијата
5. Ограничувањата на делот од двете страни мора да се совпаѓаат

Перформанси

Имаме добри вести и овде! Додаден е нов метод бришење на делови. Овој нов алгоритам може да одреди соодветни делови со гледање на состојбата на барањето WHERE. Претходниот алгоритам, пак, го проверуваше секој дел за да утврди дали може да го исполни условот WHERE. Ова резултираше со дополнително зголемување на времето за планирање како што се зголемуваше бројот на делови.

Во 9.6, со партиционирање преку наследување, рутирањето на торките во партиции обично се правеше со пишување на активирачка функција која содржеше серија IF изјави за да се вметне торката во правилната партиција. Овие функции може да бидат многу бавни за извршување. Со додадена декларативна партиција во верзијата 10, ова функционира многу побрзо.

Користејќи поделена табела со 100 партиции, можеме да ја оцениме изведбата на вчитување на 10 милиони редови во табела со 1 ГОЛЕМА колона и 5 INT колони.

PostgreSQL 11: Еволуција на партиција од Postgres 9.6 до Postgres 11

Изведба на барање на оваа табела за да се најде еден индексиран запис и да се изврши DML за да се манипулира со еден запис (со користење само 1 процесор):

PostgreSQL 11: Еволуција на партиција од Postgres 9.6 до Postgres 11

Овде можеме да видиме дека перформансите на секоја операција значително се зголемија од PG 9.6. Барања SELECT изгледаат многу подобро, особено оние кои се способни да исклучат повеќе партиции за време на планирањето на барањето. Ова значи дека распоредувачот може да прескокне многу работа што требало да ја направи претходно. На пример, патеките повеќе не се градат за непотребни делови.

Заклучок

Поделбата на табелите почнува да станува многу моќна карактеристика во PostgreSQL. Ви овозможува брзо прикажување на податоците онлајн и да ги однесете офлајн без да чекате да завршат бавните, масивни DML операции.. Ова исто така значи дека поврзаните податоци може да се складираат заедно, што значи дека до податоците што ви се потребни може да се пристапи многу поефикасно. Подобрувањата направени во оваа верзија немаше да бидат можни без програмерите, рецензентите и извршителите кои неуморно работеа на сите овие функции.
Благодарение на сите нив! PostgreSQL 11 изгледа фантастично!

Еве една кратка, но доста интересна статија. Споделете ги вашите коментари и не заборавајте да се регистрирате за Отворен ден, во чии рамки ќе биде детално изложена предметната програма.

Извор: www.habr.com

Додадете коментар