По мом мишљењу, за разлику од претходних издања, ПостгреСКЛ 12 не садржи једну или две револуционарне карактеристике (као што је партиционисање или паралелизам упита). Једном сам се нашалио да је главна карактеристика ПостгреСКЛ 12 већа стабилност. Није ли то оно што вам треба када управљате критичним подацима вашег пословања?
Али ПостгреСКЛ 12 се ту не зауставља: са новим функцијама и побољшањима, апликације ће радити боље, и све што треба да урадите је да надоградите!
(Па, можда поново изградити индексе, али у овом издању то није тако страшно као што смо навикли.)
Биће сјајно надоградити ПостгреСКЛ и одмах уживати у значајним побољшањима без непотребне гужве. Пре неколико година, прегледао сам надоградњу са ПостгреСКЛ 9.4 на ПостгреСКЛ 10 и видео како се апликација убрзала захваљујући побољшаном паралелизму упита у ПостгреСКЛ 10. И, што је најважније, од мене се скоро ништа није захтевало (само подесите конфигурациони параметар max_parallel_workers
).
Слажем се, згодно је када апликације боље раде одмах након надоградње. И веома се трудимо да задовољимо кориснике, јер их ПостгреСКЛ има све више.
Па како вас једноставна надоградња на ПостгреСКЛ 12 може учинити срећним? сад ћу ти рећи.
Велика побољшања индексирања
Без индексирања, база података неће ићи далеко. Како другачије можете брзо пронаћи информације? ПостгреСКЛ-ов основни систем индексирања се зове
Једноставно користимо оператор CREATE INDEX ON some_table (some_column)
, а ПостгреСКЛ много ради на одржавању индекса ажурним док ми константно убацујемо, ажурирамо и бришемо вредности. Све функционише само од себе, као магијом.
Али ПостгреСКЛ индекси имају један проблем - они
ПостгреСКЛ 12 у великој мери побољшава перформансе индекса Б-стабла, а експерименти са мерилима као што је ТПЦ-Ц показали су да се сада користи у просеку 40% мање простора. Сада трошимо мање времена не само на одржавање индекса Б-стабла (тј. на операције писања), већ и на преузимање података, јер су индекси много мањи.
Апликације које активно ажурирају своје табеле - обично ОЛТП апликације (
Неке стратегије надоградње захтевају поновну изградњу индекса Б-стабла да би се искористиле ове предности (нпр.
Постоје и друга побољшања инфраструктуре за индексирање у ПостгреСКЛ 12. Још једна ствар у којој је било неке магије -
ПостгреСКЛ 12 је смањио трошкове ВАЛ записа које креирају ГиСТ, ГИН и СП-ГиСТ индекси током конструкције индекса. Ово пружа неколико опипљивих предности: ВАЛ записи заузимају мање простора на диску, а подаци се брже репродукују, на пример током опоравка од катастрофе или опоравка у тренутку. Ако користите такве индексе у својим апликацијама (на пример, геопросторне апликације засноване на ПостГИС-у доста користе ГиСТ индекс), ово је још једна карактеристика која ће значајно побољшати искуство без икаквог напора са ваше стране.
Партиционисање - веће, боље, брже
Представљен ПостгреСКЛ 10
У ПостгреСКЛ 12, перформансе система партиционирања су постале знатно боље, посебно ако постоје хиљаде партиција у табели. На пример, ако упит утиче на само неколико партиција у табели са хиљадама њих, извршиће се много брже. Перформансе нису побољшане само за ове врсте упита. Такође ћете приметити колико су брже ИНСЕРТ операције на табелама са више партиција.
Снимање података помоћу
Захваљујући овим предностима, ПостгреСКЛ вам омогућава да складиштите још веће скупове података и учините их лакшим за преузимање. И без труда са ваше стране. Ако апликација има много партиција, као што је снимање података временских серија, једноставна надоградња ће значајно побољшати њене перформансе.
Иако ово није баш побољшање „надоградите и уживајте“, ПостгреСКЛ 12 вам омогућава да креирате стране кључеве који упућују на партиционисане табеле, чинећи партиционисање задовољством за рад.
СА упитима је постало много боље
Када
Често откривам да почетници у СКЛ-у воле да користе ЦТЕ; ако их напишете на одређени начин, заиста се чини да пишете императиван програм. Лично, волео сам да препишем ове упите да бих се заобилазио без ЦТЕ и повећање продуктивности. Сада је све другачије.
ПостгреСКЛ 12 вам омогућава да уградите одређени тип ЦТЕ без нежељених ефеката (SELECT
), који се користи само једном при крају захтева. Ако бих пратио ЦТЕ упите које сам преписао, већина њих би спадала у ову категорију. Ово помаже програмерима да напишу јасан код који сада такође брзо ради.
Штавише, ПостгреСКЛ 12 оптимизује само извршавање СКЛ-а, а да ви не морате ништа да радите. И иако сада вероватно нећу морати да оптимизујем такве упите, сјајно је што ПостгреСКЛ наставља да ради на оптимизацији упита.
Јуст-ин-Тиме (ЈИТ) – сада подразумевано
На ПостгреСКЛ 12 системима са подршком
Пошто је ЈИТ подразумевано омогућен у ПостгреСКЛ 12, перформансе ће се побољшати саме од себе, али препоручујем да тестирате апликацију у ПостгреСКЛ 11, који је увео ЈИТ, да бисте измерили перформансе упита и видели да ли треба нешто да подесите.
Шта је са осталим новим функцијама у ПостгреСКЛ 12?
ПостгреСКЛ 12 има гомилу сјајних нових функција, од могућности да прегледа ЈСОН податке користећи стандардне СКЛ/ЈСОН изразе руте до вишефакторске аутентификације са параметром clientcert=verify-full
, креиране колоне и још много тога. Довољно за посебан пост.
Као и ПостгреСКЛ 10, ПостгреСКЛ 12 ће побољшати укупне перформансе одмах након надоградње. Ви, наравно, можете имати свој пут – тестирајте апликацију под сличним условима на производном систему пре него што омогућите побољшања, као што сам урадио са ПостгреСКЛ 10. Чак и ако је ПостгреСКЛ 12 већ стабилнији него што сам очекивао, немојте бити лењи у тестирању апликације темељно, пре него што их пусте у производњу.
Извор: ввв.хабр.цом