PostgreSQL 11: Postgres 9.6-дан Postgres 11-ге дейін бөлу эволюциясы

Баршаңызға жұма мүбәрәк болсын! Курстың басталуына аз уақыт қалды «Реляциялық ДҚБЖ», сондықтан бүгін біз тақырып бойынша тағы бір пайдалы материалдың аудармасымен бөлісеміз.

Даму сатысында PostgreSQL 11 Кестені бөлуді жақсарту үшін кейбір әсерлі жұмыстар жасалды. Бөлу кестелері - бұл PostgreSQL-де ұзақ уақыт болған функция, бірақ ол, былайша айтқанда, 10-нұсқаға дейін болған жоқ, ол өте пайдалы функцияға айналды. Біз бұрын кесте мұрасы - бұл бөлуді жүзеге асыру деп айтқан болатынбыз және бұл дұрыс. Тек осы әдіс жұмыстың көп бөлігін қолмен орындауға мәжбүр етті. Мысалы, INSERT кезінде бөлімдерге кортеждердің кірістірілуін қаласаңыз, мұны сіз үшін орындау үшін триггерлерді конфигурациялау қажет болады. Мұрагерлік арқылы бөлу өте баяу болды және оның үстіне қосымша функционалдылықты дамыту қиын болды.

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 BIGINT бағаны және 1 INT бағандары бар кестеге 5 миллион жолды жүктеу өнімділігін бағалай аламыз.

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

пікір қалдыру