Upgrade fir déi faul: wéi PostgreSQL 12 d'Performance verbessert

Upgrade fir déi faul: wéi PostgreSQL 12 d'Performance verbessert

12. PostgreSQL XNUMX, déi lescht Versioun vun "déi bescht Open Source relational Datebank vun der Welt", kënnt an e puer Wochen eraus (wann alles no Plang geet). Dëst follegt dem üblechen Zäitplang fir eng nei Versioun mat enger Tonn vun neie Featuren eemol d'Joer ze verëffentlechen, a éierlech gesot, dat ass beandrockend. Dofir sinn ech en aktive Member vun der PostgreSQL Gemeinschaft ginn.

Menger Meenung no, am Géigesaz zu fréiere Verëffentlechungen, enthält PostgreSQL 12 keng oder zwee revolutionär Features (wéi Partitionéierung oder Ufroparallelismus). Ech hunn eemol de Geck gemaach datt d'Haaptfeature vum PostgreSQL 12 méi Stabilitéit ass. Ass dat net wat Dir braucht wann Dir Är kritesch Donnéeën vun Ärem Geschäft verwalt?

Awer PostgreSQL 12 hält net do op: mat neie Featuren a Verbesserunge wäerten d'Applikatioune besser Leeschtung, an alles wat Dir maache musst ass Upgrade!

(Ma, vläicht d'Indexen nei opbauen, awer an dëser Verëffentlechung ass et net sou grujeleg wéi mir gewinnt sinn.)

Et wäert super sinn PostgreSQL ze upgraden an direkt wesentlech Verbesserungen ze genéissen ouni onnéideg Fuss. Virun e puer Joer hunn ech en Upgrade vu PostgreSQL 9.4 op PostgreSQL 10 iwwerpréift a gesinn wéi d'Applikatioun duerch de verbesserte Query-Parallalismus am PostgreSQL 10 beschleunegt gouf. max_parallel_workers).

Averstanen, et ass bequem wann Uwendungen direkt no engem Upgrade besser funktionnéieren. A mir probéieren ganz schwéier d'Benotzer ze gefalen, well PostgreSQL huet ëmmer méi vun hinnen.

Also wéi kann en einfachen Upgrade op PostgreSQL 12 Iech glécklech maachen? Ech soen Iech elo.

Grouss Indexéierungsverbesserungen

Ouni Indexéierung wäert eng Datebank net wäit goen. Wéi soss kënnt Dir séier Informatiounen fannen? Dem PostgreSQL säi fundamentale Indexéierungssystem gëtt genannt B-Bam. Dës Zort Index ass fir Späichersystemer optimiséiert.

Mir benotzen einfach den Bedreiwer CREATE INDEX ON some_table (some_column), a PostgreSQL mécht vill Aarbecht fir den Index um neiste Stand ze halen wärend mir dauernd Wäerter setzen, aktualiséieren a läschen. Alles funktionnéiert eleng, wéi duerch Zauber.

Awer PostgreSQL Indexen hunn ee Problem - si sinn opgeblosen an huelen extra Plaatz Plaz an reduzéieren d'Performance vun Daten Erhuelung an Aktualiséierung opgetrueden. Mat "bloat" mengen ech ineffektiv d'Indexstruktur z'erhalen. Dëst kann - oder vläicht net - Zesummenhang mat de Gerempels tuples datt et läscht VAKUUM (Merci dem Peter Gaghan fir d'Informatioun)Peter Geoghegan)). Indexbloat ass besonnesch bemierkbar an Aarbechtsbelaaschtungen, wou den Index aktiv ännert.

PostgreSQL 12 verbessert d'Performance vu B-Bam Indexen immens, an Experimenter mat Benchmarks wéi TPC-C hu gewisen datt am Duerchschnëtt 40% manner Plaz elo benotzt gëtt. Elo verbrénge mir manner Zäit net nëmmen fir B-Bam Indexen z'erhalen (dat heescht op Schreifoperatioune), awer och fir Daten zréckzekommen, well d'Indexe vill méi kleng sinn.

Uwendungen déi hir Dëscher aktiv aktualiséieren - typesch OLTP Uwendungen (Echtzäit Transaktiounsveraarbechtung) - wäert Disk benotzen an Ufroen vill méi effizient veraarbecht. Wat méi Disk Space, dest méi Plaz muss d'Datebank wuessen ouni d'Infrastruktur ze upgraden.

E puer Upgradestrategien erfuerderen B-Bam Indexen nei opzebauen fir vun dëse Virdeeler ze profitéieren (z. pg_upgrade wäert d'Indexen net automatesch opbauen). A fréiere Versioune vu PostgreSQL, nei opzebauen vun groussen Indexen op Dëscher huet zu bedeitende Downtime gefouert well Ännerungen net an der Tëschenzäit gemaach kënne ginn. Awer PostgreSQL 12 huet eng aner cool Feature: elo kënnt Dir Indexen parallel mam Kommando opbauen REINDEX GEMENGfir komplett Ausdauer ze vermeiden.

Et ginn aner Verbesserunge vun der Indexéierungsinfrastruktur am PostgreSQL 12. Eng aner Saach wou et eng Magie war - schreiwen-ahead Log, aka WAL (Write-ahead Log). E Write-ahead Log registréiert all Transaktioun am PostgreSQL am Fall vu Feeler a Replikatioun. Uwendungen benotzen et fir Archivéieren an Punkt-zu-Zäit Erhuelung. Natierlech gëtt de Write-ahead Log op Disk geschriwwe, wat d'Performance beaflosse kann.

PostgreSQL 12 huet d'Overhead vu WAL-Records reduzéiert, déi vun de GiST, GIN, a SP-GiST Indexen erstallt ginn wärend dem Indexkonstruktioun. Dëst bitt e puer konkret Virdeeler: WAL records huelen manner Plaatz op, an Daten ginn méi séier erëmgespillt, sou wéi während der Katastrophen Erhuelung oder Punkt-an-Zäit Erhuelung. Wann Dir esou Indexen an Ären Uwendungen benotzt (zum Beispill PostGIS-baséiert geospatial Uwendungen benotzen de GiST Index vill), ass dëst eng aner Feature déi d'Erfahrung wesentlech verbessert ouni Effort vun Ärem Deel.

Partitionéieren - méi grouss, besser, méi séier

PostgreSQL 10 agefouert deklarativ Partitionéierung. Am PostgreSQL 11 ass et vill méi einfach ze benotzen ginn. Am PostgreSQL 12 kënnt Dir d'Skala vun de Sektiounen änneren.

Am PostgreSQL 12 ass d'Performance vum Partitionéierungssystem wesentlech besser ginn, besonnesch wann et Tausende vu Partitionen an der Tabell sinn. Zum Beispill, wann eng Ufro nëmmen e puer Partitionen an enger Tabell mat Dausende vun hinnen beaflosst, wäert se vill méi séier ausféieren. D'Performance gëtt net nëmme verbessert fir dës Aarte vu Ufroen. Dir wäert och bemierken wéi séier INSERT Operatiounen op Dëscher mat multiple Partitionen sinn.

Recording Daten benotzt KOPIER - iwwregens, dëst ass e super Wee bulk Daten erofzelueden an hei ass e Beispill JSON kréien - Partitionéiert Dëscher am PostgreSQL 12 sinn och méi effizient ginn. Mat COPY war alles scho séier, awer am PostgreSQL 12 flitt et absolut.

Dank dëse Virdeeler erlaabt PostgreSQL Iech nach méi grouss Datesets ze späicheren an se méi einfach ze recuperéieren. A keen Effort vun Ärer Säit. Wann d'Applikatioun vill Partitionen huet, sou wéi d'Opnam vun Zäitreihendaten, wäert en einfachen Upgrade seng Leeschtung wesentlech verbesseren.

Och wann dëst net genau eng "Upgrade a genéisst" Verbesserung ass, erlaabt PostgreSQL 12 Iech auslännesch Schlësselen ze kreéieren déi op partitionéiert Dëscher referenzéieren, wat d'Partitionéierung e Genoss mécht fir mat ze schaffen.

MAT Ufroen just vill besser ginn

Wéini e Patch gouf fir agebaute gemeinsame Tabellausdréck applizéiert (alias CTE, aka MAT Ufroen), Ech konnt net waarden en Artikel iwwer ze schreiwen wéi glécklech Applikatioun Entwéckler mat PostgreSQL waren. Dëst ass eng vun deene Funktiounen déi d'Applikatioun beschleunegen. Ausser Dir benotzt natierlech CTE.

Ech fannen dacks datt Newbies zu SQL gär CTEs benotzen; wann Dir se op eng gewësse Manéier schreift, fillt et wierklech wéi wann Dir en imperativen Programm schreift. Perséinlech hunn ech gär dës Ufroen iwwerschreiwe fir ronderëm ze kommen ouni CTE an d'Produktivitéit erhéijen. Elo ass alles anescht.

PostgreSQL 12 erlaabt Iech eng spezifesch Zort CTE ouni Nebenwirkungen z'inlineéieren (SELECT), déi nëmmen eemol um Enn vun der Ufro benotzt gëtt. Wann ech d'CTE Ufroen verfollegen, déi ech nei geschriwwen hunn, géifen déi meescht vun hinnen an dës Kategorie falen. Dëst hëlleft Entwéckler e klore Code ze schreiwen deen elo och séier leeft.

Ausserdeem optiméiert PostgreSQL 12 SQL Ausféierung selwer, ouni datt Dir eppes maache musst. An och wann ech elo wahrscheinlech net sou Ufroen muss optimiséieren, ass et flott datt PostgreSQL weider un der Ufrooptiméierung schafft.

Just-in-Time (JIT) - elo Standard

Op PostgreSQL 12 Systemer mat Ënnerstëtzung LLVM JIT Kompilatioun ass par défaut aktivéiert. Als éischt kritt Dir Ënnerstëtzung JIT fir e puer intern Operatiounen, an zweetens, Ufroe mat Ausdréck (dat einfachst Beispill ass x + y) a wielt Lëschten (déi Dir no SELECT hutt), Aggregaten, Ausdréck mat WHERE Klauselen an anerer kënnen JIT benotzen fir d'Leeschtung ze verbesseren.

Zënter datt JIT als Standard am PostgreSQL 12 aktivéiert ass, wäert d'Performance eleng verbesseren, awer ech recommandéieren d'Applikatioun am PostgreSQL 11 ze testen, deen JIT agefouert huet, fir d'Queryleistung ze moossen an ze kucken ob Dir eppes muss ofstëmmen.

Wat iwwer de Rescht vun den neie Featuren am PostgreSQL 12?

PostgreSQL 12 huet eng Tonn vu coolen neie Featuren, vun der Fäegkeet fir JSON Daten mat Standard SQL / JSON Route Ausdréck ze iwwerpréiwen bis Multi-Faktor Authentifikatioun mat engem Parameter clientcert=verify-full, Sailen erstallt a vill méi. Genuch fir eng separat Post.

Wéi PostgreSQL 10, wäert PostgreSQL 12 d'Gesamtleistung direkt nom Upgrade verbesseren. Dir kënnt natierlech Ären eegene Wee hunn - Test d'Applikatioun ënner ähnlechen Konditiounen um Produktiounssystem ier Dir Verbesserungen erméiglecht, wéi ech mat PostgreSQL 10 gemaach hunn. Och wann PostgreSQL 12 scho méi stabil ass wéi ech erwaart hunn, sidd net faul beim Testen Uwendungen grëndlech, ier se an d'Produktioun verëffentlecht ginn.

Source: will.com

Setzt e Commentaire