Dina pamanggih kuring, teu kawas release saméméhna, PostgreSQL 12 henteu ngandung hiji atawa dua fitur revolusioner (kawas partitioning atanapi query parallelism). Kuring sakali guyonan yén fitur utama PostgreSQL 12 nyaéta stabilitas anu langkung ageung. Henteu éta anu anjeun peryogikeun nalika anjeun ngatur data kritis bisnis anjeun?
Tapi PostgreSQL 12 henteu eureun di dinya: kalayan fitur anyar sareng perbaikan, aplikasi bakal langkung saé, sareng sadaya anu anjeun kedah laksanakeun nyaéta ningkatkeun!
(Muhun, panginten tiasa ngawangun deui indéks, tapi dina sékrési ieu henteu pikasieuneun sapertos biasa.)
Éta bakal saé pikeun ningkatkeun PostgreSQL sareng langsung ngaraosan perbaikan anu signifikan tanpa riweuh anu teu perlu. Sababaraha taun ka pengker, abdi reviewed pamutahiran ti PostgreSQL 9.4 mun PostgreSQL 10 sarta nempo kumaha aplikasi sped up berkat paralelisme query ningkat dina PostgreSQL 10. Jeung, paling importantly, ampir euweuh anu diperlukeun ti kuring (ngan nyetel parameter konfigurasi. max_parallel_workers
).
Satuju, éta merenah lamun aplikasi dianggo hadé langsung saatos pamutahiran. Sareng urang nyobian pisan pikeun nyenangkeun pangguna, sabab PostgreSQL ngagaduhan seueur deui.
Janten kumaha pamutahiran saderhana ka PostgreSQL 12 tiasa ngajantenkeun anjeun bagja? Abdi badé nyarios ayeuna.
perbaikan indexing utama
Tanpa indéks, pangkalan data moal jauh. Kumaha deui anjeun tiasa gancang mendakan inpormasi? Sistim indéks dasar PostgreSQL disebut
Urang ngan ngagunakeun operator CREATE INDEX ON some_table (some_column)
, sareng PostgreSQL ngalakukeun seueur padamelan pikeun ngajaga indéks énggal-énggal nalika urang terus-terusan nyelapkeun, ngapdet, sareng ngahapus nilai. Sagalana jalan sorangan, saolah-olah ku magic.
Tapi indéks PostgreSQL gaduh hiji masalah - aranjeunna
PostgreSQL 12 greatly ngaronjatkeun kinerja indexes B-tangkal, sarta percobaan kalawan tolok ukur kawas TPC-C geus ditémbongkeun yén rata-rata 40% kirang spasi ayeuna dipaké. Ayeuna urang nyéépkeun waktos sakedik henteu ngan ukur pikeun ngajaga indéks B-tangkal (nyaéta, dina operasi nulis), tapi ogé pikeun nyandak data, sabab indéksna langkung alit.
Aplikasi anu aktip ngamutahirkeun tabelna - biasana aplikasi OLTP (
Sababaraha strategi pamutahiran merlukeun ngawangun deui indéks B-tangkal pikeun ngamangpaatkeun kauntungan ieu (misalna.
Aya perbaikan séjén pikeun infrastruktur indexing di PostgreSQL 12. Lain hal dimana aya sihir -
PostgreSQL 12 parantos ngirangan overhead rékaman WAL anu diciptakeun ku indéks GiST, GIN, sareng SP-GIST salami konstruksi indéks. Ieu nyadiakeun sababaraha mangpaat nyata: rékaman WAL nyokot spasi disk kirang, sarta data diputer deui gancang, kayaning mangsa recovery musibah atawa recovery point-in-time. Upami anjeun nganggo indéks sapertos kitu dina aplikasi anjeun (contona, aplikasi geospasial basis PostGIS nganggo indéks GiST pisan), ieu mangrupikeun fitur sanés anu bakal ningkatkeun pangalaman sacara signifikan tanpa usaha naon waé.
Partitioning - leuwih badag, hadé, gancang
PostgreSQL 10 diwanohkeun
Dina PostgreSQL 12, kinerja sistem partisi parantos langkung saé, khususna upami aya rébuan partisi dina tabél. Contona, upami pamundut mangaruhan ukur sababaraha partisi dina tabel kalawan rébuan di antarana, éta bakal ngajalankeun leuwih gancang. Kinerja henteu ngan ukur ningkat pikeun jinis patarosan ieu. Anjeun ogé bakal perhatikeun kumaha gancangna operasi INSERT dina tabel sareng sababaraha partisi.
Ngarékam data ngagunakeun
Hatur nuhun kana kaunggulan ieu, PostgreSQL ngamungkinkeun anjeun pikeun nyimpen set data anu langkung ageung sareng ngagampangkeun pikeun nyandak deui. Sareng henteu aya usaha pikeun anjeun. Upami aplikasina ngagaduhan seueur partisi, sapertos ngarékam data séri waktos, pamutahiran saderhana bakal ningkatkeun kinerjana.
Sanaos ieu sanés ngan ukur "ngaronjatkeun sareng nikmati" perbaikan, PostgreSQL 12 ngamungkinkeun anjeun nyiptakeun konci asing anu ngarujuk kana tabel anu dipisahkeun, ngajantenkeun partisi janten senang dianggo.
WITH queries ngan meunang pisan hadé
iraha
Kuring mindeng manggihan yén newbies kana SQL resep ngagunakeun CTEs; lamun nulis aranjeunna cara nu tangtu, bener karasaeun kawas nu nuju nulis hiji program imperatif. Pribadi, abdi resep nulis ulang queries ieu meunang sabudeureun tanpa CTE sareng ningkatkeun produktivitas. Ayeuna sagalana geus béda.
PostgreSQL 12 ngidinan Anjeun pikeun inline tipe husus CTE tanpa efek samping (SELECT
), nu dipaké ngan sakali deukeut tungtung pamundut. Upami kuring ngalacak patarosan CTE anu kuring rewrote, kalolobaanana bakal digolongkeun kana kategori ieu. Ieu ngabantosan pamekar nyerat kode anu jelas anu ayeuna ogé jalan gancang.
Sumawona, PostgreSQL 12 ngaoptimalkeun palaksanaan SQL sorangan, tanpa anjeun kedah ngalakukeun nanaon. Sareng sanaos kuring sigana henteu kedah ngaoptimalkeun patarosan sapertos ayeuna, éta saé yén PostgreSQL terus ngerjakeun optimasi pamundut.
Just-in-Time (JIT) - ayeuna standar
Dina sistem PostgreSQL 12 kalayan dukungan
Kusabab JIT diaktipkeun sacara standar dina PostgreSQL 12, kinerja bakal ningkat sorangan, tapi kuring nyarankeun nguji aplikasi dina PostgreSQL 11, anu ngenalkeun JIT, pikeun ngukur kinerja query sareng ningali upami anjeun kedah nyetél nanaon.
Kumaha upami sesa fitur anyar dina PostgreSQL 12?
PostgreSQL 12 gaduh seueur fitur énggal, tina kamampuan pikeun nguji data JSON nganggo ekspresi jalur SQL / JSON standar pikeun auténtikasi multi-faktor sareng parameter. clientcert=verify-full
, nyiptakeun kolom sareng seueur deui. Cukup pikeun pos misah.
Kawas PostgreSQL 10, PostgreSQL 12 bakal ningkatkeun kinerja sakabéh langsung saatos pamutahiran. Anjeun, tangtosna, tiasa gaduh cara sorangan - nguji aplikasi dina kaayaan anu sami dina sistem produksi sateuacan ngaktipkeun perbaikan, sapertos anu kuring lakukeun ku PostgreSQL 10. Sanaos PostgreSQL 12 parantos langkung stabil tibatan anu kuring ngarepkeun, ulah puguh dina nguji. aplikasi sacara saksama, sateuacan dileupaskeun kana produksi.
sumber: www.habr.com