Ntlafatsa bakeng sa ba botsoa: PostgreSQL 12 e ntlafatsa ts'ebetso joang

Ntlafatsa bakeng sa ba botsoa: PostgreSQL 12 e ntlafatsa ts'ebetso joang

PostgreSQL 12, mofuta oa morao-rao oa "database e ntle ka ho fetisisa ea lefats'e e bulehileng ea likamano," e tla tsoa ka mor'a libeke tse 'maloa (haeba tsohle li tsamaea ho ea ka morero). Sena se latela kemiso e tloaelehileng ea ho hlahisa mofuta o mocha o nang le likarolo tse ngata tse ncha hang ka selemo, 'me ho bua 'nete, seo sea khahla. Ke kahoo ke ileng ka ba setho se mafolofolo sa sechaba sa PostgreSQL.

Ka maikutlo a ka, ho fapana le litokollo tse fetileng, PostgreSQL 12 ha e na karolo e le 'ngoe kapa tse peli tsa phetoho (joalo ka ho arola kapa ho botsa lipotso). Ke kile ka soasoa hore karolo ea mantlha ea PostgreSQL 12 ke botsitso bo boholo. Na ha se seo u se hlokang ha u laola lintlha tsa bohlokoa tsa khoebo ea hau?

Empa PostgreSQL 12 ha e felle moo: ka likarolo tse ncha le lintlafatso, lits'ebetso li tla sebetsa betere, mme sohle seo o hlokang ho se etsa ke ho ntlafatsa!

(Ha e le hantle, mohlomong aha li-index, empa tokollong ena ha e tšabe joalo ka ha re tloaetse.)

Ho tla ba monate ho ntlafatsa PostgreSQL 'me hang-hang u natefeloe ke lintlafatso tse kholo ntle le likhohlano tse sa hlokahaleng. Lilemong tse 'maloa tse fetileng, ke ile ka hlahloba ntlafatso ho tloha PostgreSQL 9.4 ho PostgreSQL 10 mme ka bona kamoo ts'ebeliso e ileng ea potlaka ka lebaka la ho bapisa ho ntlafetseng ha lipotso ho PostgreSQL 10. 'Me, habohlokoa ka ho fetisisa, hoo e ka bang ha ho letho le neng le hlokoa ho' na (feela beha parameter ea tlhophiso. max_parallel_workers).

Lumellana, ho bonolo ha lits'ebetso li sebetsa hantle hang ka mor'a ho ntlafatsa. 'Me re leka ka matla ho khahlisa basebelisi, hobane PostgreSQL e na le tse ling tse ngata.

Joale ntlafatso e bonolo ho PostgreSQL 12 e ka u thabisa joang? Ke tla o bolella jwale.

Lintlafatso tse kholo tsa indexing

Ntle le indexing, database e ke ke ea ea hole. Ke joang hape u ka fumanang tlhahisoleseling kapele? Sistimi ea mantlha ea indexing ea PostgreSQL e bitsoa Sefate sa B. Mofuta ona oa index o ntlafalitsoe bakeng sa litsamaiso tsa polokelo.

Re sebelisa feela opareitara CREATE INDEX ON some_table (some_column), 'me PostgreSQL e etsa mosebetsi o mongata ho boloka index e le morao-rao ha re ntse re kenya, re ntlafatsa, le ho hlakola boleng. Ntho e 'ngoe le e 'ngoe e sebetsa ka boeona, joalokaha eka ke ka boselamose.

Empa li-index tsa PostgreSQL li na le bothata bo le bong - tsona a tletse moya le ho nka sebaka se eketsehileng sa disk le ho fokotsa ts'ebetso ea ho khutlisa le ho ntlafatsa data. Ka "bloat" ke bolela ho se boloke hantle sebopeho sa index. Sena se ka 'na - kapa che - se amana le lithōle tsa lithōle tseo e li tlosang VACUUM (ke leboha Peter Gaghan bakeng sa tlhahisoleseling)Peter Geoghegan)). Index bloat e bonahala ka ho khetheha mesebetsing e mengata moo index e fetohang ka mafolofolo.

PostgreSQL 12 e ntlafatsa haholo ts'ebetso ea li-index tsa lifate tsa B, 'me liteko tse nang le litekanyetso tse kang TPC-C li bontšitse hore ka karolelano sebaka se fokolang sa 40% se se se sebelisoa. Hona joale re qeta nako e fokolang eseng feela ka ho boloka li-index tsa B-tree (ke hore, ho ngola mesebetsi), empa hape le ho fumana lintlha, hobane li-index li nyenyane haholo.

Lisebelisoa tse ntlafatsang litafole tsa tsona - hangata ke lits'ebetso tsa OLTP (ts'ebetso ea ts'ebetso ea nako ea nnete) - e tla sebelisa disk le ho sebetsana le likopo ka mokhoa o atlehileng haholoanyane. Ha sebaka sa disk se ntse se le ngata, sebaka se eketsehileng sa polokelo ea litaba se lokela ho hola ntle le ho ntlafatsa lisebelisoa.

Maano a mang a ntlafatso a hloka ho aha li-index tsa lifate tsa B ho nka monyetla oa melemo ena (mohlala. pg_ntlafatsa e ke ke ea iketsetsa li-index ka bo eona). Liphetolelong tse fetileng tsa PostgreSQL, ho aha li-index tse kholo holim'a litafole ho felletse ka nako e kholo hobane liphetoho li ne li sa khone ho etsoa hajoale. Empa PostgreSQL 12 e na le tšobotsi e 'ngoe e pholileng: joale u ka khona ho haha ​​​​li-index ka ho tsamaisana le taelo. REINDEX NKONYANAho qoba ho theoha ka botlalo.

Ho na le lintlafatso tse ling molemong oa lisebelisoa tsa indexing ho PostgreSQL 12. Ntho e 'ngoe moo ho neng ho e-na le boselamose - ngola-pele log, aka WAL (ngola-pele log). Log e ngollang pele e tlaleha ts'ebetso e 'ngoe le e' ngoe ho PostgreSQL haeba e ka hloleha le ho pheta-pheta. Lisebelisoa li e sebelisetsa ho boloka le ho ho hlaphoheloa nako ka nako. Ha e le hantle, tlaleho ea pele-pele e ngotsoe ho disk, e ka amang tshebetso.

PostgreSQL 12 e fokolitse bokaholimo ba lirekoto tsa WAL tse entsoeng ke li-index tsa GiST, GIN, le SP-GiST nakong ea kaho ea index. Sena se fana ka melemo e 'maloa e bonahalang: Lirekoto tsa WAL li nka sebaka se senyenyane sa disk,' me data e bapaloa ka potlako, joalo ka nakong ea ho hlaphoheloa ha likoluoa ​​kapa ho hlaphoheloa ha nako. Haeba u sebelisa li-index tse joalo lits'ebetsong tsa hau (mohlala, lits'ebetso tsa geospatial tse thehiloeng ho PostGIS li sebelisa index ea GiST haholo), ena ke tšobotsi e 'ngoe e tla ntlafatsa boiphihlelo haholo ntle le boiteko ba hau.

Karohano - e kholoanyane, e betere, e potlakile

PostgreSQL 10 e hlahisitsoe karohano ya phatlalatso. Ho PostgreSQL 11 ho se ho le bonolo ho e sebelisa. Ho PostgreSQL 12 o ka fetola boholo ba likarolo.

Ho PostgreSQL 12, ts'ebetso ea sistimi ea karohano e se e le betere haholo, haholo haeba ho na le likarolo tse likete tafoleng. Mohlala, haeba potso e ama likarolo tse 'maloa feela tafoleng e nang le likete tsa tsona, e tla sebetsa kapele haholo. Ts'ebetso ha e ea ntlafatsoa feela bakeng sa mefuta ena ea lipotso. U tla hlokomela hape hore na ts'ebetso ea INSERT e potlakile hakae litafoleng tse nang le likarolo tse ngata.

Rekota data ka ho sebelisa Kopitsa - ka tsela, ena ke tsela e ntle ho jarolla data ka bongata mme mohlala ke ona ho amohela JSON - litafole tse arohaneng ho PostgreSQL 12 le tsona li se li sebetsa hantle haholoanyane. Ka COPY ntho e ngoe le e ngoe e ne e se e potlakile, empa ho PostgreSQL 12 e fofa ka botlalo.

Ka lebaka la melemo ena, PostgreSQL e u lumella ho boloka lisebelisoa tse kholoanyane tsa data le ho etsa hore ho be bonolo ho li fumana. 'Me ha ho na boiteko ho uena. Haeba sesebelisoa se na le likarolo tse ngata, joalo ka data ea letoto la ho rekota, ntlafatso e bonolo e tla ntlafatsa ts'ebetso ea eona haholo.

Le ha sena e se ntlafatso ea "ntlafatso le ho natefeloa", PostgreSQL 12 e u lumella ho etsa linotlolo tsa kantle ho naha tse buang ka litafole tse arohaneng, ho etsa hore karohano e be monate ho sebetsa le eona.

LE lipotso li se li ntlafetse haholo

Ha ho ile ha sebelisoa patch bakeng sa lipolelo tse tloaelehileng tsa tafole (aka CTE, aka LE lipotso), ke ne ke sitoa ho emela ho ngola sengoloa ka kamoo bahlahisi ba ts'ebeliso ea PostgreSQL ba neng ba thabile kateng. Ena ke e 'ngoe ea likarolo tse tla potlakisa ts'ebeliso. Ntle le haeba, ehlile, o sebelisa CTE.

Hangata ke fumana hore li-newbies tsa SQL li rata ho sebelisa li-CTE; haeba u li ngola ka tsela e itseng, ho utloahala eka u ngola lenaneo la bohlokoa. Ka bonna, ke ne ke rata ho ngola lipotso tsena hape hore ke tsamaee ntle le CTE le ho eketsa tlhahiso. Hona joale tsohle li fapane.

PostgreSQL 12 e u lumella ho kenya mofuta o itseng oa CTE ntle le litla-morao (SELECT), e sebelisoang hang feela ho elella qetellong ea kopo. Haeba ke ne ke boloka tlaleho ea lipotso tsa CTE tseo ke li ngotseng hape, boholo ba tsona li ne li tla oela sehlopheng sena. Sena se thusa bahlahisi ho ngola khoutu e hlakileng eo hona joale e sebetsang ka potlako.

Ho feta moo, PostgreSQL 12 e ntlafatsa ts'ebetso ea SQL ka boeona, ntle le hore u etse letho. Mme leha mohlomong nke ke ka hloka ho ntlafatsa lipotso tse joalo hona joale, ho monate hore PostgreSQL e ntse e tsoela pele ho sebetsa ho ntlafatseng lipotso.

Feela-in-Time (JIT) - e se e le ea kamehla

Ho litsamaiso tsa PostgreSQL 12 tse nang le tšehetso LLVM Pokello ea JIT e nolofalitsoe ke kamehla. Pele ho tsohle, o fumana tšehetso HITLA bakeng sa ts'ebetso e itseng ea ka hare, 'me ea bobeli, lipotso tse nang le lipolelo (mohlala o bonolo ka ho fetisisa ke x + y) lethathamong le khethiloeng (leo u nang le lona ka mor'a KHETHA), li-aggregates, lipolelo tse nang le likarolo tsa WHERE le tse ling li ka sebelisa JIT ho ntlafatsa tshebetso.

Kaha JIT e nolofalitsoe ka ho feletseng ho PostgreSQL 12, tshebetso e tla ntlafala ka boeona, empa ke khothaletsa ho hlahloba kopo ho PostgreSQL 11, e hlahisitseng JIT, ho lekanya ts'ebetso ea lipotso le ho bona hore na u hloka ho fetola letho.

Ho thoe'ng ka likarolo tse ling tse ncha ho PostgreSQL 12?

PostgreSQL 12 e na le likarolo tse ngata tse ncha tse pholileng, ho tloha bokhoni ba ho hlahloba lintlha tsa JSON ho sebelisa mekhoa e tloaelehileng ea SQL / JSON ho netefatsa lintlha tse ngata ka parameter. clientcert=verify-full, litšiea tse entsoeng le tse ling tse ngata. Ho lekane bakeng sa poso e arohaneng.

Joalo ka PostgreSQL 10, PostgreSQL 12 e tla ntlafatsa ts'ebetso ka kakaretso hang kamora ho ntlafatsoa. Ha e le hantle, u ka ba le tsela ea hau - leka kopo tlas'a maemo a tšoanang tsamaisong ea tlhahiso pele u nolofalletsa lintlafatso, joalo ka ha ke entse ka PostgreSQL 10. Esita le haeba PostgreSQL 12 e se e ntse e tsitsitse ho feta kamoo ke neng ke lebeletse kateng, u se ke ua ba botsoa ho hlahloba. dikopo ka botlalo, pele o di lokollela tlhahiso.

Source: www.habr.com

Eketsa ka tlhaloso