Haɓakawa ga malalaci: yadda PostgreSQL 12 ke haɓaka aiki

Haɓakawa ga malalaci: yadda PostgreSQL 12 ke haɓaka aiki

PostgreSQL 12, sabuwar sigar "mafi kyawun bayanan tushen tushen bayanai na duniya," yana fitowa a cikin makonni biyu (idan duk ya tafi bisa ga tsari). Wannan ya biyo bayan jadawalin da aka saba fitar da sabon sigar tare da tarin sabbin abubuwa sau ɗaya a shekara, kuma a zahiri, hakan yana da ban sha'awa. Shi ya sa na zama memba mai himma a cikin al'ummar PostgreSQL.

A ra'ayi na, sabanin fitowar da ta gabata, PostgreSQL 12 baya ƙunshe da fasali ɗaya ko biyu na juyin juya hali (kamar rarrabawa ko daidaiton tambaya). Na taɓa yin ba'a cewa babban fasalin PostgreSQL 12 shine mafi girman kwanciyar hankali. Shin ba shine abin da kuke buƙata ba lokacin da kuke sarrafa mahimman bayanan kasuwancin ku?

Amma PostgreSQL 12 bai tsaya a nan ba: tare da sabbin abubuwa da haɓakawa, aikace-aikacen za su yi kyau sosai, kuma duk abin da kuke buƙatar yi shine haɓakawa!

(To, watakila sake gina firikwensin, amma a cikin wannan sakin ba shi da ban tsoro kamar yadda muka saba.)

Zai zama mai girma don haɓaka PostgreSQL kuma nan da nan ji daɗin ci gaba mai mahimmanci ba tare da damuwa mara amfani ba. Bayan 'yan shekarun da suka gabata, na sake nazarin haɓakawa daga PostgreSQL 9.4 zuwa PostgreSQL 10 kuma na ga yadda aikace-aikacen ya haɓaka godiya ga ingantacciyar alamar tambaya a cikin PostgreSQL 10. Kuma, mafi mahimmanci, kusan babu abin da ake buƙata daga gare ni (kawai saita siginar sanyi). max_parallel_workers).

Yarda, yana da dacewa lokacin da aikace-aikacen ke aiki mafi kyau nan da nan bayan haɓakawa. Kuma muna ƙoƙari sosai don faranta wa masu amfani rai, saboda PostgreSQL yana da ƙari da yawa.

Don haka ta yaya haɓakawa mai sauƙi zuwa PostgreSQL 12 zai faranta muku rai? Zan gaya muku yanzu.

Manyan haɓakar fihirisa

Ba tare da fihirisa ba, rumbun adana bayanai ba zai yi nisa ba. Ta yaya kuma za ku iya samun bayanai da sauri? PostgreSQL's tushen tushen tsarin firikwensin shine ake kira B-itace. An inganta wannan nau'in fihirisar don tsarin ajiya.

Muna amfani da afareta kawai CREATE INDEX ON some_table (some_column), kuma PostgreSQL yana yin ayyuka da yawa don kiyaye fihirisar ta zamani yayin da muke sakawa, sabuntawa, da share dabi'u kullun. Komai yana aiki da kansa, kamar ta sihiri.

Amma alamun PostgreSQL suna da matsala ɗaya - su suna kumbura da ɗaukar ƙarin sararin faifai kuma rage aikin dawo da bayanai da sabuntawa. Ta "kumburi" ina nufin rashin kula da tsarin ma'auni. Wannan na iya - ko a'a - yana da alaƙa da tarkacen shara da yake cirewa VACUUM (na gode wa Peter Gaghan don bayanin)Peter Geoghegan)). Ƙunƙarar ƙididdiga ta fi dacewa a cikin nauyin aiki inda fihirisar ke canzawa sosai.

PostgreSQL 12 yana inganta aikin ma'auni na B-itace, kuma gwaje-gwaje tare da ma'auni kamar TPC-C sun nuna cewa a matsakaita 40% ƙasa da sarari yanzu ana amfani dashi. Yanzu muna kashe ɗan lokaci ba kawai don kiyaye ma'auni na B-itace ba (wato, akan ayyukan rubutawa), amma har ma akan maido da bayanai, saboda alamun sun fi ƙanƙanta.

Aikace-aikacen da ke sabunta teburin su - yawanci aikace-aikacen OLTP (sarrafa ma'amala na lokaci-lokaci) - zai yi amfani da faifai da aiwatar da buƙatun da kyau sosai. Da yawan sararin faifai, ƙarin sarari da ma'ajin bayanai ya yi girma ba tare da haɓaka kayan aikin ba.

Wasu dabarun haɓakawa suna buƙatar sake gina firikwensin bishiyar B don cin gajiyar waɗannan fa'idodin (misali. pg_haɓaka ba zai sake gina fihirisar ta atomatik ba). A cikin sigar baya na PostgreSQL, sake gina manyan fihirisa akan teburi ya haifar da raguwar lokaci mai yawa saboda ba za a iya yin canje-canje a halin yanzu ba. Amma PostgreSQL 12 yana da wani fasali mai kyau: yanzu zaku iya sake gina fihirisa a layi daya tare da umarnin. REINDEX a lokaci gudadon kauce wa raguwa gaba ɗaya.

Akwai wasu haɓakawa ga kayan aikin ƙididdigewa a cikin PostgreSQL 12. Wani abu kuma inda akwai wani sihiri - rubuta-gaba log, aka WAL (rubutun gaba). Rubuce-rubucen gaba yana yin rikodin kowace ma'amala a cikin PostgreSQL idan akwai gazawa da maimaitawa. Aikace-aikace suna amfani da shi don adanawa da kuma dawo da maki-in-lokaci. Tabbas, an rubuta rubutun gaba zuwa faifai, wanda zai iya tasiri ga aiki.

PostgreSQL 12 ya rage saman bayanan WAL waɗanda aka ƙirƙira ta GiST, GIN, da SP-GiST firikwensin yayin ginin fihirisar. Wannan yana ba da fa'idodi da yawa na zahiri: Rubutun WAL suna ɗaukar ƙarancin sarari, kuma ana sake kunna bayanai cikin sauri, kamar lokacin dawo da bala'i ko dawo da lokaci-lokaci. Idan kuna amfani da irin waɗannan firikwensin a cikin aikace-aikacenku (misali, aikace-aikacen geospatial na tushen PostGIS suna amfani da fihirisar GiST da yawa), wannan wata alama ce da za ta inganta ƙwarewa ba tare da wani yunƙuri daga ɓangaren ku ba.

Rarraba - girma, mafi kyau, sauri

An gabatar da PostgreSQL 10 bayyana partitioning. A cikin PostgreSQL 11 ya zama mafi sauƙin amfani. A cikin PostgreSQL 12 zaku iya canza sikelin sassan.

A cikin PostgreSQL 12, aikin tsarin rarraba ya zama mafi kyau sosai, musamman idan akwai dubban sassa a cikin tebur. Misali, idan tambaya ta shafi ƴan ɓangarori kaɗan kawai a cikin tebur tare da dubban su, za ta aiwatar da sauri da sauri. Ayyukan ba wai kawai an inganta su don waɗannan nau'ikan tambayoyin ba. Hakanan za ku lura da saurin ayyukan INSERT akan teburi tare da ɓangarori da yawa.

Yin rikodin bayanai ta amfani da COPY - Af, wannan babbar hanya ce zazzagewar bayanai masu yawa kuma ga misali karbar JSON - Teburan da aka raba a cikin PostgreSQL 12 suma sun zama mafi inganci. Tare da COPY komai ya riga ya yi sauri, amma a cikin PostgreSQL 12 yana tashi kwata-kwata.

Godiya ga waɗannan fa'idodin, PostgreSQL yana ba ku damar adana manyan bayanan da suka fi girma kuma su sauƙaƙe don dawo da su. Kuma babu wani kokari a bangaren ku. Idan aikace-aikacen yana da ɓangarori da yawa, kamar rikodin bayanan jerin lokaci, haɓakawa mai sauƙi zai inganta aikin sa sosai.

Duk da yake wannan ba daidai ba ne "haɓakawa da jin daɗin" haɓakawa, PostgreSQL 12 yana ba ku damar ƙirƙirar maɓallan ƙasashen waje waɗanda ke nuni da rarrabuwar tebur, yana mai da rabo jin daɗin yin aiki da su.

TARE da tambayoyin sun sami kyawu sosai

Lokacin an yi amfani da faci don ginanniyar maganganun tebur na gama gari (aka CTE, aka WITH queries), Ba zan iya jira don rubuta labarin ba yadda masu haɓaka aikace-aikacen tare da PostgreSQL suka yi farin ciki. Wannan yana daya daga cikin abubuwan da zasu hanzarta aikace-aikacen. Sai dai idan, ba shakka, kuna amfani da CTE.

Sau da yawa ina samun cewa sababbin sababbin zuwa SQL suna son amfani da CTEs; idan kun rubuta su wata hanya, da gaske yana jin kamar kuna rubuta wani shiri mai mahimmanci. Da kaina, na so in sake rubuta waɗannan tambayoyin don zagayawa ba tare da CTE da haɓaka yawan aiki. Yanzu komai ya bambanta.

PostgreSQL 12 yana ba ku damar yin layi da takamaiman nau'in CTE ba tare da lahani ba (SELECT), wanda ake amfani da shi sau ɗaya kawai kusa da ƙarshen buƙatar. Idan na ci gaba da bin diddigin tambayoyin CTE da na sake rubutawa, yawancinsu za su fada cikin wannan rukunin. Wannan yana taimaka wa masu haɓakawa su rubuta tabbataccen lamba wanda yanzu kuma yana aiki da sauri.

Haka kuma, PostgreSQL 12 yana inganta aiwatar da SQL da kansa, ba tare da yin komai ba. Kuma ko da yake mai yiwuwa ba zan buƙaci inganta irin waɗannan tambayoyin ba a yanzu, yana da kyau cewa PostgreSQL ya ci gaba da aiki akan inganta tambaya.

Just-in-Time (JIT) - yanzu tsoho

A kan tsarin PostgreSQL 12 tare da tallafi LLVM An kunna haɗar JIT ta tsohuwa. Da farko, kuna samun tallafi JIT don wasu ayyuka na ciki, kuma na biyu, tambayoyi tare da maganganu (misali mafi sauƙi shine x + y) a cikin jerin zaɓi (wanda kuke da shi bayan SELECT), aggregates, maganganu tare da WHERE clauses da sauransu na iya amfani da JIT don inganta aiki.

Tun da an kunna JIT ta tsohuwa a cikin PostgreSQL 12, aikin zai inganta da kansa, amma ina ba da shawarar gwada aikace-aikacen a cikin PostgreSQL 11, wanda ya gabatar da JIT, don auna aikin tambaya kuma ku ga idan kuna buƙatar kunna wani abu.

Me game da sauran sabbin fasalulluka a cikin PostgreSQL 12?

PostgreSQL 12 yana da ton na sabbin abubuwa masu sanyi, daga ikon bincika bayanan JSON ta amfani da daidaitattun maganganun hanyar SQL/JSON zuwa tantance abubuwa da yawa tare da ma'auni. clientcert=verify-full, ƙirƙira ginshiƙai da ƙari mai yawa. Ya isa ga wani matsayi daban.

Kamar PostgreSQL 10, PostgreSQL 12 zai inganta aikin gabaɗaya nan da nan bayan haɓakawa. Kai, ba shakka, za ka iya samun hanyarka - gwada aikace-aikacen a ƙarƙashin irin wannan yanayin akan tsarin samarwa kafin kunna haɓakawa, kamar yadda na yi tare da PostgreSQL 10. Ko da PostgreSQL 12 ya riga ya kasance mafi kwanciyar hankali fiye da yadda nake tsammani, kada ku yi kasala a gwaji. aikace-aikace sosai, kafin a sake su cikin samarwa.

source: www.habr.com

Add a comment