Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ntugharị okwu Bruce Momjian nke 2020 "Ịkpọghe onye njikwa mkpọchi Postgres".

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

(Rịba ama: Enwere ike nweta ajụjụ SQL niile sitere na slide ndị a site na njikọ a: http://momjian.us/main/writings/pgsql/locking.sql)

Nnọọ! Ọ dị mma ịnọrọ na Rọshịa ọzọ. Ọ dị m nwute na enweghị m ike ịbịa n'afọ gara aga, mana n'afọ a, mụ na Ivan nwere nnukwu atụmatụ. Enwere m olileanya na m ga-anọ ebe a ọtụtụ mgbe. Ọ na-amasị m ịbịa Russia. Aga m eleta Tyumen, Tver. Obi dị m ụtọ na m ga-enwe ike ịga leta obodo ndị a.

Aha m bụ Bruce Momjian. Ana m arụ ọrụ na EnterpriseDB ma soro Postgres na-arụ ọrụ ihe karịrị afọ 23. M bi na Philadelphia, USA. M na-eme njem ihe dị ka ụbọchị iri itoolu kwa afọ. M na-agakwa ihe dị ka ọgbakọ iri anọ. Nkem Weebụsaịtị, nke nwere slides ndị m ga-egosi gị ugbu a. Ya mere, mgbe ogbako ahụ gasịrị, ị nwere ike ibudata ha na weebụsaịtị nke m. O nwekwara ihe ngosi iri atọ. Enwekwara vidiyo na ọnụ ọgụgụ buru ibu nke ndenye blọọgụ, karịa 30. Nke a bụ ihe ọmụma ziri ezi. Ma ọ bụrụ na ị nwere mmasị na ihe a, m na-akpọ gị òkù ka ị jiri ya.

M na-abụbu onye nkuzi, prọfesọ tupu m malite ịrụ ọrụ na Postgres. Obi dịkwa m ụtọ na m ga-enwe ike ugbu a ịgwa unu ihe m chọrọ ịgwa unu. Nke a bụ otu n'ime ihe ngosi kacha amasị m. Ihe ngosi a nwere ihe ngosi mmịfe 110. Anyị ga-amalite ikwu okwu na ihe ndị dị mfe, na njedebe akụkọ ahụ ga-adịwanye mgbagwoju anya, ọ ga-adịkwa mgbagwoju anya.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ mkparịta ụka na-adịghị mma. Mgbochi abụghị isiokwu kacha ewu ewu. Anyị chọrọ ka nke a pụọ ​​ebe. Ọ dị ka ịgakwuru dọkịta eze.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

  1. Mkpọchi bụ nsogbu maka ọtụtụ ndị na-arụ ọrụ na ọdụ data ma nwee ọtụtụ usoro na-agba ọsọ n'otu oge. Ha chọrọ igbochi. Ya bụ, taa, m ga-enye gị isi ihe ọmụma banyere igbochi.
  2. NJ azụmahịa. Nke a bụ akụkụ ihe ngosi na-agwụ ike, mana ha kwesịrị ịghọta.
  3. Ọzọ anyị ga-ekwu maka ụdị mgbochi. Nke a bụ akụkụ n'ụzọ ziri ezi.
  4. Na n'okpuru anyị ga-enye ụfọdụ ihe atụ nke igbochi. Ọ ga-esikwa ike nghọta.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ka anyị kwuo maka igbochi.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Okwu anyị dị mgbagwoju anya. Olee otú ọtụtụ n'ime unu maara ebe akụkụ a si? Mmadụ abụọ. Nke a sitere na egwuregwu akpọrọ Colossal Cave Adventure. Ọ bụ egwuregwu kọmputa nke dabeere na ederede na 80s, echere m. N'ebe ahụ, ị ​​ga-abanye n'ọgba, n'ime ụlọ nyocha, na ederede gbanwere, mana ọdịnaya dị otu ihe mgbe ọ bụla. Otu a ka m si echeta egwuregwu a.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ebe a ka anyị na-ahụ aha mkpọchi nke si Oracle bịakwute anyị. Anyị na-eji ha.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

N'ebe a, anyị na-ahụ okwu ndị na-agbagwoju m anya. Ọmụmaatụ, Share UPDATE ECXLUSIVE. Na-esote Share RAW ECXLUSIVE. N'ikwu eziokwu, aha ndị a edochaghị anya. Anyị ga-agbalị ịtụle ha n'ụzọ zuru ezu. Ụfọdụ nwere okwu ahụ bụ "oke", nke pụtara ikewa. Ụfọdụ nwere okwu a bụ "iche". Ụfọdụ nwere okwu abụọ a. Ọ ga-amasị m ibido ka mkpọchi ndị a si arụ ọrụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na okwu a "nnweta" dịkwa oke mkpa. Na okwu "ahiri" bụ eriri. Ya bụ, ịnweta nkesa, nkesa ahịrị.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ihe ọzọ dị mkpa ka a ghọta na Postgres, nke m na-enweghị ike ikpuchi na okwu m, bụ MVCC. Enwere m ihe ngosi dị iche na isiokwu a na webụsaịtị m. Ma ọ bụrụ na ị chere na ngosi a siri ike, MVCC nwere ike bụrụ nke kacha sie ike. Ma ọ bụrụ na ị nwere mmasị, ị nwere ike ile ya na webụsaịtị. Ị nwere ike ilele vidiyo ahụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ihe ọzọ anyị kwesịrị ịghọta bụ ID azụmahịa. Ọtụtụ azụmahịa enweghị ike ịrụ ọrụ na-enweghị ihe nchọpụta pụrụ iche. Na ebe a anyị nwere nkọwa nke ihe azụmahịa bụ. Postgres nwere usoro ọnụọgụ ọnụọgụ abụọ azụmahịa. Ama m na nke a abụghị ezigbo ngwọta.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Burukwa n'uche na ihe ngosi slide ga-esi nnọọ ike nghọta, yabụ ihe a na-egosipụta na-acha uhie uhie bụ ihe ị kwesịrị ịṅa ntị.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

http://momjian.us/main/writings/pgsql/locking.sql

Ka ahụ. A na-eme ka ọnụọgụ azụmahịa pụta ìhè na uhie. Egosiri ọrụ SELECT pg_back ebe a. Ọ na-eweghachite azụmahịa m yana ID azụmahịa.

Otu ihe ọzọ, ọ bụrụ na-amasị gị ngosi ma na-achọ ịgba ọsọ ya na nchekwa data gị, mgbe ahụ ị nwere ike ịga na njikọ a na pink ma budata SQL maka ngosi a. Ma ị nwere ike ịgba ọsọ ya na PSQL gị na ihe ngosi niile ga-adị na ihuenyo gị ozugbo. Ọ gaghị enwe ifuru, mana opekata mpe, anyị nwere ike ịhụ ya.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

N'okwu a, anyị na-ahụ ID azụmahịa. Nke a bụ nọmba anyị nyere ya. Ma enwere ụdị NJ azụmahịa ọzọ na Postgres, nke a na-akpọ ID azụmahịa mebere

Anyị ga-aghọtakwa nke a. Nke a dị ezigbo mkpa, ma ọ bụghị na anyị agaghị enwe ike ịghọta mkpọchi na Postgres.

NJ azụmahịa mebere nke ọma bụ NJ azụmahịa na-enweghị ụkpụrụ na-adịgide adịgide. Dịka ọmụmaatụ, ọ bụrụ na m na-agba ọsọ iwu SELECT, mgbe ahụ enwere m ike agaghị agbanwe nchekwa data, agaghị m ekpochi ihe ọ bụla. Yabụ mgbe anyị na-eme Nhọrọ dị mfe, anyị anaghị enye azụmahịa ahụ NJ na-adịgide adịgide. Naanị ihe anyị na-enye ya bụ ID mebere ebe ahụ.

Na nke a na-eme ka arụmọrụ Postgres dịkwuo mma, na-eme ka ike nhicha dị ọcha, ya mere NJ azụmahịa mebere nwere ọnụọgụ abụọ. Nọmba mbụ tupu slash bụ ID azụ azụ. Na aka nri anyị na-ahụ naanị counter.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ya mere, ọ bụrụ na m na-agba ọsọ a arịrịọ, ọ na-ekwu na backend ID bụ 2.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụrụ na m na-agba ọsọ usoro nke azụmahịa ndị dị otú ahụ, mgbe ahụ, anyị na-ahụ na counter na-abawanye mgbe ọ bụla m na-agba ọsọ ajụjụ. Dịka ọmụmaatụ, mgbe m na-agba ọsọ ajụjụ 2/10, 2/11, 2/12, wdg.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Buru n'uche na enwere ogidi abụọ ebe a. N'aka ekpe anyị na-ahụ mebere azụmahịa ID - 2/12. Na n'aka nri anyị nwere ID azụmahịa na-adịgide adịgide. Na ubi a tọgbọrọ chakoo. Na azụmahịa a anaghị agbanwe nchekwa data. Yabụ na anaghị m enye ya ID azụmahịa na-adịgide adịgide.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ozugbo m na-agba ọsọ iwu nyocha ((ANALYZE)), otu ajụjụ ahụ na-enye m NJ azụmahịa na-adịgide adịgide. Lee ka nke a si gbanwee nye anyị. Enweghị m NJ mbụ, mana ugbu a enwere m ya.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Yabụ ebe a bụ arịrịọ ọzọ, azụmahịa ọzọ. Nọmba azụmahịa mebere bụ 2/13. Ma ọ bụrụ na m rịọ maka ID azụmahịa na-adịgide adịgide, mgbe ahụ mgbe m na-agba ọsọ ajụjụ ahụ, m ga-enweta ya.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Yabụ, otu oge ọzọ. Anyị nwere NJ azụmahịa mebere nke ọma yana NJ azụmahịa na-adịgide adịgide. Naanị ghọta isi ihe a ka ịghọta omume Postgres.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyị na-aga n'ihu na ngalaba nke atọ. N'ebe a, anyị ga-agafe ụdị mkpọchi dị iche iche na Postgres. Ọ naghị adọrọ mmasị. Akụkụ ikpeazụ ga-adọrọ mmasị karị. Ma anyị aghaghị ịtụle ihe ndị bụ isi, n'ihi na ma ọ bụghị ya, anyị agaghị aghọta ihe ga-eme n'ọdịnihu.

Anyị ga-agafe na ngalaba a, anyị ga-eleba anya n'ụdị mkpọchi ọ bụla. Aga m egosi gị ihe atụ nke otu esi etinye ha, ka ha si arụ ọrụ, m ga-egosi gị ụfọdụ ajụjụ ị nwere ike iji hụ ka mkpọchi si arụ ọrụ na Postgres.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Iji mepụta ajụjụ wee hụ ihe na-eme na Postgres, anyị kwesịrị ịnye ajụjụ ahụ na nlele sistemụ. N'okwu a, a na-eme ka pg_lock pụta ìhè na uhie. Pg_lock bụ tebụl sistemụ na-agwa anyị ihe mkpọchi a na-eji ugbu a na Postgres.

Agbanyeghị, ọ na-esiri m ike igosi gị pg_lock n'onwe ya n'ihi na ọ dị mgbagwoju anya. Yabụ m mepụtara nlele na-egosi pg_locks. Ọ na-arụkwara m ọrụ ụfọdụ na-enye m ohere ịghọta nke ọma. Ya bụ, ọ na-ewepu m mkpọchi, nke m nnọkọ, wdg Ọ bụ naanị ọkọlọtọ SQL na ọ na-enye gị ohere ka mma na-egosi gị ihe na-eme.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nsogbu ọzọ bụ na echiche a dị obosara nke ukwuu, yabụ na m ga-emepụta nke abụọ - lockview2.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian Ọ na-egosikwa m ogidi ndị ọzọ site na tebụl. Na ọzọ nke na-egosi m ndị fọdụrụ na ogidi. Nke a dị nnọọ mgbagwoju anya, yabụ m gbalịrị iwepụta ya dị ka o kwere mee.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ya mere, anyị mepụtara tebụl a na-akpọ Lockdemo. Na anyị kere otu ahịrị n'ebe ahụ. Nke a bụ tebụl nlele anyị. Ma anyị ga-eke ngalaba naanị iji gosi gị ọmụmaatụ nke mkpọchi.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Yabụ, otu ahịrị, otu kọlụm. Ụdị mkpọchi nke mbụ ka a na-akpọ ACCESS SHARE. Nke a bụ mgbochi kacha nta. Nke a pụtara na ọ fọrọ nke nta ka ọ ghara ịlụ ọgụ na mkpọchi ndị ọzọ.

Ma ọ bụrụ na anyị chọrọ ịkọwapụta mkpọchi n'ụzọ doro anya, anyị na-agba "mkpọchi tebụl" iwu. O doro anya na ọ ga-egbochi, ya bụ na ACCESS SHARE mode anyị na-ebunye tebụl mkpọchi. Ma ọ bụrụ na m na-agba ọsọ PSQL n'azụ, m na-amalite nnọkọ nke abụọ site na nnọkọ mbụ m n'ụzọ dị otú a. Ya bụ, gịnị ka m ga-eme ebe a? M na-aga nnọkọ ọzọ wee sị ya "gosi m mkpọchi maka arịrịọ a." Ma ebe a ka m nwere AccessShareLock na tebụl a. Nke a bụ kpọmkwem ihe m rịọrọ. O wee sị na e kenyela ngọngọ ahụ. Dị mfe.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ọzọkwa, ọ bụrụ na anyị elee anya na kọlụm nke abụọ, mgbe ahụ ọ dịghị ihe ọ bụla. Ha tọgbọrọ chakoo.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụrụ na m agbaa iwu "SELECT", nke a bụ ụzọ doro anya (nke doro anya) iji rịọ AccessShareLock. Ya mere, ana m ahapụ tebụl m wee mee ajụjụ ahụ, ajụjụ ahụ weghachite ọtụtụ ahịrị. Na otu ahịrị anyị na-ahụ AccessShareLock. Ya mere, SELECT na-akpọ AccessShareLock na tebụl. Ọ naghị emegidekwa ihe ọ bụla n'ihi na ọ bụ mkpọchi dị ala.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Kedu ihe ma ọ bụrụ na m na-agba ọsọ SELECT ma nwee tebụl atọ dị iche iche? Na mbụ, naanị m na-agba otu tebụl, ugbu a, m na-agba ọsọ atọ: pg_class, pg_namespace na pg_attribute.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ugbu a, mgbe m lere ajụjụ ahụ, a na m ahụ 9 AccessShareLocks na tebụl atọ. Gịnị kpatara? E gosiputara tebụl atọ na-acha anụnụ anụnụ: pg_attribute, pg_class, pg_namespace. Mana ị nwekwara ike ịhụ na index niile akọwapụtara site na tebụl ndị a nwekwara AccessShareLock.

Na nke a bụ mkpọchi nke na-anaghị emegide ndị ọzọ. Na ihe ọ na-eme bụ nanị igbochi anyị ịtọgharịa tebụl ka anyị na-ahọrọ ya. O nwere ezi uche. Ya bụ, ọ bụrụ na anyị họrọ tebụl, ọ na-apụ n'anya n'oge ahụ, mgbe ahụ nke a adịghị mma, ya mere AccessShare bụ mkpọchi ọkwa dị ala nke na-agwa anyị "dobela tebụl a mgbe m na-arụ ọrụ". N'ezie, nke ahụ bụ naanị ihe ọ na-eme.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

ROW SHARE - Mkpọchi a dịtụ iche.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ka anyị were ihe atụ. Họrọ usoro nkesa ahịrị maka igbachi ahịrị ọ bụla n'otu n'otu. N'ụzọ dị otú a, ọ dịghị onye nwere ike ihichapụ ha ma ọ bụ gbanwee ha mgbe anyị na-ekiri ha.

Na-emepe onye njikwa mkpọchi Postgres. Bruce MomjianKedu ihe SHARE LOCK na-eme? Anyị na-ahụ na ID azụmahịa bụ 681 maka SELECT. Na nke a na-adọrọ mmasị. Gịnị mere ebe a? Oge mbụ anyị na-ahụ ọnụọgụgụ dị na mpaghara "Mkpọchi". Anyị na-ewere ID azụmahịa wee kwuo na ọ na-egbochi ya na ọnọdụ pụrụ iche. Naanị ihe ọ na-eme bụ na ọ na-ekwu na enwere m ahịrị nke ejiri teknụzụ kpọchie ebe na tebụl. Mana o kwughị ebe kpọmkwem. Anyị ga-elele nke a n'ụzọ zuru ezu obere oge ma emechaa.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

N'ebe a, anyị na-ekwu na ọ bụ anyị na-eji mkpọchi.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Yabụ, mkpọchi pụrụ iche na-ekwu hoo haa na ọ bụ naanị ya. Na kwa ma ọ bụrụ na ihichapụ ahịrị na tebụl a, nke a bụ ihe ga-eme, dị ka ị pụrụ ịhụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

SHARE EXCLUSIVE bụ mkpọchi ogologo.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ iwu nyocha (ANALYZE) nke a ga-eji.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Mkpọchi Ekekọrịta – ị nwere ike igbachi nke ọma na ọnọdụ òkè.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ị nwekwara ike ịmepụta ndetu pụrụ iche. Na ebe ị nwere ike ịhụ SHARE LOCK, nke bụ akụkụ nke ha. Ọ na-akpọchikwa tebụl ahụ ma tinye Mkpọchi SHARE na ya.

Na ndabara, SHARE LOCK na tebụl pụtara na ndị ọzọ nwere ike ịgụ tebụl, mana ọ nweghị onye nwere ike gbanwee ya. Na nke a bụ kpọmkwem ihe na-eme mgbe ị mepụtara ndeksi pụrụ iche.

Ọ bụrụ na m mepụta index pụrụ iche n'otu oge, mgbe ahụ, m ga-enwe ụdị mkpọchi dị iche n'ihi na, dị ka ị na-echeta, iji ndenye n'otu oge na-ebelata ihe mkpuchi chọrọ. Ma ọ bụrụ na m na-eji mkpọchi nkịtị, ihe ntanetị nkịtị, mgbe ahụ, m ga-eme ka ọ ghara ịde ederede na tebụl mgbe a na-emepụta ya. Ọ bụrụ na m na-eji ndenye aha n'otu oge, mgbe ahụ ọ dị m mkpa iji ụdị mkpọchi dị iche.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ekekọrịta ahịrị pụrụ iche - ọzọ enwere ike ịtọ ya nke ọma (nke doro anya).

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụ anyị nwere ike ịmepụta iwu, ya bụ, buru otu ikpe a ga-eji mee ihe.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Mkpọchi pụrụ iche pụtara na ọ dịghị onye ọzọ nwere ike ịgbanwe tebụl.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

N'ebe a, anyị na-ahụ ụdị mkpọchi dị iche iche.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

ACCESS EXCLUSIVE, dịka ọmụmaatụ, bụ iwu igbochi. Dịka ọmụmaatụ, ọ bụrụ na ị na-eme ya CLUSTER table, mgbe ahụ nke a ga-apụta na ọ dịghị onye ga-enwe ike ide ebe ahụ. Ma ọ na-akpọchi ọ bụghị naanị tebụl n'onwe ya, kamakwa indexes.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ ibe nke abụọ nke mgbochi ACCESS EXCLUSIVE, ebe anyị na-ahụ kpọmkwem ihe ọ gbochiri na tebụl. Ọ na-akpọchi ahịrị tebụl nke ọ bụla, nke na-atọ ụtọ nke ukwuu.

Nke ahụ bụ ozi bụ isi m chọrọ inye. Anyị na-ekwu maka mkpọchi, gbasara NJ azụmahịa, anyị kwuru maka NJ azụmahịa mebere, gbasara NJ azụmahịa na-adịgide adịgide.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ugbu a, anyị ga-aga site ụfọdụ ngọngọ atụ. Nke a bụ akụkụ kacha adọrọ mmasị. Anyị ga-eleba anya n'okwu ndị na-adọrọ mmasị. Na ebumnuche m na ngosi a bụ inye gị nghọta ka mma nke ihe Postgres na-eme n'ezie mgbe ọ na-agbalị igbochi ụfọdụ ihe. Echere m na ọ mara oke mma na igbochi akụkụ.

Ka anyị leba anya n’ihe atụ ụfọdụ kpọmkwem.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyị ga-amalite na tebụl na otu ahịrị na tebụl. Mgbe m tinyere ihe m nwere ExclusiveLock, ID azụmahịa na ExclusiveLock gosipụtara na tebụl.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Kedu ihe ga-eme ma m tinye ahịrị abụọ ọzọ? Ma ugbu a tebụl anyị nwere ahịrị atọ. M wee tinye otu ahịrị wee nweta nke a dị ka mmepụta. Ma ọ bụrụ na m tinye ahịrị abụọ ọzọ, kedu ihe dị ịtụnanya gbasara nke ahụ? Enwere m ihe dị egwu ebe a n'ihi na etinyere m ahịrị atọ na tebụl a, mana m ka nwere ahịrị abụọ na tebụl mkpọchi. Ma nke a bụ n'ụzọ bụ isi omume nke Postgres.

Ọtụtụ ndị mmadụ na-eche na ọ bụrụ na n'ime nchekwa data ị kpọchiri ahịrị 100, mgbe ahụ ị ga-achọ ịmepụta ntinye mkpọchi 100. Ọ bụrụ na m egbochie ahịrị 1 n'otu oge, m ga-achọ ajụjụ 000 dị otú ahụ. Ma ọ bụrụ na achọrọ m otu nde ma ọ bụ ijeri iji gbochie. Mana ọ bụrụ na anyị emee nke a, ọ gaghị arụ ọrụ nke ọma. Ọ bụrụ na ị na-ejila usoro nke na-emepụta ntinye mgbochi maka ahịrị onye ọ bụla, ị ga-ahụ na nke a gbagwojuru anya. N'ihi na ịkwesịrị ịkọwapụta tebụl mkpọchi ozugbo nke nwere ike ịfesa, mana Postgres anaghị eme nke ahụ.

Na ihe dị mkpa n'ezie banyere slide a bụ na ọ na-egosi n'ụzọ doro anya na e nwere usoro ọzọ na-agba ọsọ n'ime MVCC na-akpọchi onye ahịrị. Yabụ mgbe ị kpọchiri ọtụtụ ijeri ahịrị, Postgres anaghị emepụta iwu mkpọchi dị iche iche ijeri. Na nke a nwere mmetụta dị mma na mmepụta ihe.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Kedu maka mmelite? Ana m emelite ahịrị ugbu a, ị ga-ahụ na ọ rụrụ ọrụ abụọ dị iche iche n'otu oge. Ọ kpọchiri tebụl n'otu oge, ma ọ kpọchirikwa ndepụta ndeksi. Na ọ dị mkpa ka ọ kpọchie ndeksi n'ihi na enwere ihe mgbochi pụrụ iche na tebụl a. Na anyị chọrọ ijide n'aka na ọ dịghị onye na-agbanwe ya, ya mere anyị na-egbochi ya.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Kedu ihe ga - eme ma ọ bụrụ na achọrọ m imelite ahịrị abụọ? Anyị na-ahụkwa na ọ na-akpa àgwà otú ahụ. Anyị na-eme mmelite ugboro abụọ, mana otu ọnụọgụ ahịrị mkpọchi.

Ọ bụrụ na ị na-eche ka Postgres si eme nke a, ị ga-achọ ige ntị n'okwu m na MVCC ka ị mụta ka Postgres si akọwa ahịrị ndị a ka ọ na-agbanwe. Na Postgres nwere ụzọ ọ na-esi eme nke a, mana ọ naghị eme ya na ọkwa mkpọchi okpokoro, ọ na-eme ya na ọkwa dị ala na nke ọma.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Gịnị ma ọ bụrụ na m chọrọ ihichapụ ihe? Ọ bụrụ na m ihichapụ, dịka ọmụmaatụ, otu ahịrị na m ka nwere ntinye mgbochi abụọ m, na ọ bụrụgodị na achọrọ m ihichapụ ha niile, ha ka nọ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma, dịka ọmụmaatụ, achọrọ m itinye ahịrị 1, wee kpochapụ ma ọ bụ tinye ahịrị 000, mgbe ahụ ahịrị ndị ahụ m gbakwunyere ma ọ bụ gbanwee, anaghị edekọ ha ebe a. Edere ha na ọkwa dị ala n'ime usoro n'onwe ya. Na n'oge okwu MVCC m kwuru banyere nke a n'ụzọ zuru ezu. Mana ọ dị ezigbo mkpa mgbe ị na-enyocha mkpọchi iji jide n'aka na ị na-ekpochi na tebụl na ị naghị ahụ ka esi edekọ ahịrị ndị mmadụ n'otu n'otu ebe a.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Kedu maka igbochi nke ọma?

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ọ bụrụ na m pịa ume ọhụrụ, enwere m ahịrị abụọ akpọchiri. Ma ọ bụrụ na m họrọ ha niile wee pịa "mmelite n'ebe niile," mgbe ahụ m ka nwere ihe ndekọ abụọ na-egbochi.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyị anaghị emepụta ndekọ dị iche iche maka ahịrị onye ọ bụla. N'ihi na mgbe ahụ arụpụtaghị ihe na-adaba, enwere ike ịdị ukwuu nke ya. Anyị pụkwara ịchọta onwe anyị n'ọnọdụ na-adịghị mma.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na otu ihe ahụ, ọ bụrụ na anyị na-ekekọrịta, anyị nwere ike ime ya niile ugboro 30.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyị na-eweghachite tebụl anyị, hichapụ ihe niile, wee tinye otu ahịrị ọzọ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Omume ọzọ ị na-ahụ na Postgres nke a maara nke ọma na omume achọrọ bụ na ị nwere ike ime mmelite ma ọ bụ họrọ. Ị nwere ike ime nke a n'otu oge ahụ. Na họrọ anaghị egbochi mmelite na otu ihe ahụ n'akụkụ nke ọzọ. Anyị na-agwa onye na-agụ ya ka ọ ghara igbochi onye edemede, ma onye edemede egbochighị onye na-agụ ya.

Aga m egosi gị ihe atụ nke a. M ga-eme nhọrọ ugbu a. Anyị ga-eme INSERT. Ma mgbe ahụ ị nwere ike ịhụ - 694. Ị nwere ike ịhụ ID nke azụmahịa ahụ mere ntinye a. Ma otu ahụ ka ọ na-arụ ọrụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụrụ na m lelee ID azụ azụ m ugbu a, ọ bụ 695 ugbu a.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Enwere m ike ịhụ 695 na-apụta na tebụl m.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụrụ na m emelite ebe a dị ka nke a, m ga-enweta ikpe dị iche. N'okwu a, 695 bụ mkpọchi pụrụ iche, na mmelite nwere otu omume ahụ, mana enweghị esemokwu n'etiti ha, nke bụ ihe pụrụ iche.

Ị nwere ike ịhụ na n'elu ọ bụ ShareLock, na na ala ọ bụ ExclusiveLock. Ma azụmahịa abụọ a rụpụtara.

Na mkpa ka ị na-ege ntị okwu m na MVCC ịghọta otú nke a na-eme. Mana nke a bụ ihe atụ na ị nwere ike ime ya n'otu oge, ya bụ, mee Nhọrọ na mmelite n'otu oge.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ka anyị tọgharịa wee mee otu ọrụ ọzọ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ọ bụrụ na ị nwaa ịme mmelite abụọ n'otu oge n'otu ahịrị, a ga-egbochi ya. Chetakwa na m kwuru na onye na-agụ anaghị egbochi onye edemede, na onye na-ede akwụkwọ anaghị egbochi onye na-agụ ya, ma otu onye edemede na-egbochi onye edemede ọzọ. Ya bụ, anyị enweghị ike imelite mmadụ abụọ n'otu ahịrị n'otu oge. Ị ga-echere ruo mgbe otu n'ime ha gwụchara.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na iji gosi nke a, m ga-ele anya na tebụl Lockdemo. Ma anyị ga-ele anya n'otu ahịrị. Kwa azụmahịa 698.

Anyị emelitere nke a na 2. 699 bụ mmelite mbụ. Ma ọ gara nke ọma ma ọ bụ na ọ bụ na azụmahịa na-echere ma na-echere anyị ka anyị kwenye ma ọ bụ kagbuo.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Mana lee ihe ọzọ - 2/51 bụ azụmahịa mbụ anyị, nnọkọ mbụ anyị. 3/112 bụ arịrịọ nke abụọ sitere n'elu nke gbanwere uru ahụ na 3. Ma ọ bụrụ na ị chọpụta, nke elu kpọchiri onwe ya, nke bụ 699. Ma 3/112 enyeghị mkpọchi ahụ. Kọlụm Lock_mode na-ekwu ihe ọ na-eche. Ọ na-atụ anya 699. I leekwa ebe 699 nọ, ọ dị elu. Gịnịkwa ka nnọkọ nke mbụ mere? O mepụtara mkpọchi pụrụiche na NJ azụmahịa nke ya. Nke a bụ otú Postgres si eme ya. Ọ na-egbochi ID azụmahịa nke ya. Ma ọ bụrụ na ịchọrọ ichere ka mmadụ kwenye ma ọ bụ kagbuo, mgbe ahụ ịkwesịrị ichere mgbe enwere azụmahịa na-echere. Ya mere anyị nwere ike ịhụ ahịrị iju.

Ka anyị leba anya ọzọ. N'aka ekpe anyị na-ahụ ID nhazi anyị. Na kọlụm nke abụọ anyị na-ahụ ID azụmahịa anyị mebere, na nke atọ anyị na-ahụ lock_type. Kedu ihe nke a pụtara? N'ezie ihe ọ na-ekwu bụ na ọ na-egbochi ID azụmahịa. Mana rịba ama na ahịrị niile dị n'okpuru na-ekwu njikọ. Ya mere, ị nwere ụdị mkpọchi abụọ na tebụl. Enwere mkpọchi mmekọrịta. Ma mgbe ahụ, e nwere ihe mgbochi azụmahịa, ebe ị na-egbochi onwe gị, nke bụ kpọmkwem ihe na-eme n'ahịrị mbụ ma ọ bụ na ala ala, ebe azụmahịa ahụ dị, ebe anyị chere 699 ka ọ rụchaa ọrụ ya.

Aga m ahụ ihe na-eme ebe a. Na ebe a ihe abụọ na-eme n'out oge. Ị na-elele mkpọchi ID azụmahịa n'ahịrị nke mbụ na-akpọchi onwe ya. Ọ na-egbochikwa onwe ya ime ka ndị mmadụ chere.

Ọ bụrụ na ị lelee ahịrị 6, ọ bụ otu ntinye dị ka nke mbụ. Ya mere a na-egbochi azụmahịa 699. 700 na-agbachikwa onwe ya. Mgbe ahụ n'ahịrị nke ala ị ga-ahụ na anyị na-eche 699 ka ọ rụchaa ọrụ ya.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na lock_type, tuple ị na-ahụ nọmba.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ị nwere ike ịhụ na ọ bụ 0/10. Na nke a bụ nọmba ibe, yana kwa nkwụsị nke ahịrị a.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na ị na-ahụ na ọ na-aghọ 0/11 mgbe anyị imelite.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma n'eziokwu ọ bụ 0/10, n'ihi na a na-echere ọrụ a. Anyị nwere ohere ịhụ na nke a bụ usoro nke m na-eche iji gosi.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ozugbo anyị kwadoro ya wee pịa tinye, na mgbe emelitere, nke a bụ ihe anyị na-enweta ọzọ. Azụmahịa 700 bụ naanị mkpọchi, ọ naghị echere onye ọzọ n'ihi na emere ya. Ọ na-eche naanị ka azụmahịa ahụ mezue. Ozugbo 699 gwụchara, anyị anaghị echere ihe ọ bụla ọzọ. Ma ugbu a, azụmahịa 700 na-ekwu na ihe niile dị mma, na ọ nwere ihe mkpuchi niile ọ chọrọ na tebụl niile a kwadoro.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na iji mee ka ihe a dum dịkwuo mgbagwoju anya, anyị na-emepụta echiche ọzọ, nke oge a ga-enye anyị ọkwa ọkwa. Anaghị m atụ anya ka ị ghọta arịrịọ a. Ma nke a ga-eme ka anyị ghọtakwuo ihe na-emenụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ echiche na-emegharị anya nke nwekwara ngalaba ọzọ. Ma mgbe ahụ ọ na-eweghachite ihe niile ọnụ ọzọ. Ka anyị were nke a.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Kedu ihe ma ọ bụrụ na anyị emelite mmelite ugboro atọ ma kwuo na ahịrị ugbu a bụ atọ. Ma anyị ga-agbanwe 3 ruo 4.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na ebe a anyị na-ahụ 4. Na azụmahịa ID 702.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma mgbe ahụ, m ga-agbanwe 4 gaa na 5. Na 5 gaa na 6, na 6 gaa na 7. M ga-edozi ọtụtụ ndị ga-echere ka otu azụmahịa a kwụsị.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na ihe niile na-aghọ doro anya. Gịnị bụ ahịrị nke mbụ? Nke a bụ 702. Nke a bụ ID azụmahịa nke setịpụrụ uru a na mbụ. Kedu ihe edere na kọlụm akwadoro m? Enwere m akara f. Ndị a bụ mmelite m nke (5, 6, 7) enweghị ike ịkwado n'ihi na anyị na-eche ID 702 azụmahịa ka ọ kwụsị. N'ebe ahụ, anyị nwere igbochi ID azụmahịa. Nke a na-ebute mkpọchi ID azụmahịa 5.

Ma ọ bụrụ na ị na-ele anya na 704, na 705, ọ dịghị ihe e dere n'ebe ahụ, n'ihi na ha amaghị ihe na-eme. Ha na-ede nanị na ha amaghị ihe na-emenụ. Ha ga-arahụkwa naanị n’ihi na ha na-eche ka mmadụ gụchaa ma teta n’ụra mgbe enwere ohere ịgbanwe ahịrị.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ otú ọ dị. O doro anya na ha niile na-echere ahịrị nke iri na abụọ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ ihe anyị hụrụ ebe a. Nke a bụ 0/12.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Yabụ ozugbo akwadoro azụmahịa mbụ, ị ga-ahụ ebe a ka ndị isi na-arụ ọrụ. Ma ugbu a, ihe niile na-apụta ìhè. Ha niile na-adị ọcha. Ma ha ka na-eche n'ezie.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ ihe na-eme. 702 kwadoro. Ma ugbu a 703 na-enweta mkpọchi ahịrị a, mgbe ahụ 704 malitere ichere 703 ime. Na 705 na-eche nke a kwa. Ma mgbe ihe a nile mezuru, ha na-asachapụ onwe ha. Ọ ga-amasị m igosi na onye ọ bụla na-agba n'ahịrị. Na nke a yiri nnọọ ọnọdụ na a okporo ụzọ nkpọk mgbe onye ọ bụla na-eche mbụ ụgbọ ala. Ụgbọ ala mbụ na-akwụsị ma onye ọ bụla kwụ n'ahịrị n'ahịrị ogologo. Mgbe ahụ, ọ na-agagharị, mgbe ahụ ụgbọ ala ọzọ nwere ike ịnya n'ihu wee nweta ngọngọ ya, wdg.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụrụ na nke a eyighị gị mgbagwoju anya, mgbe ahụ, anyị ga-agwa gị ugbu a banyere deadlocks. Amaghị m onye n'ime unu zutere ha. Nke a bụ nsogbu a na-ahụkarị na sistemụ nchekwa data. Mana ihe mgbochi bụ mgbe otu nnọkọ na-eche nnọkọ ọzọ iji mee ihe. Ma n'oge a nnọkọ ọzọ na-echere nnọkọ nke mbụ iji mee ihe.

Ma, dị ka ihe atụ, ọ bụrụ na Ivan asị: “Nye m ihe,” m na-asị: “Ee e, m ga-enye gị ya ma ọ bụrụ na i nye m ihe ọzọ.” Ma ọ sịrị, "Ee e, agaghị m enye gị ya ma ọ bụrụ na ị nyeghị m ya." Na anyị na-ejedebe n'ọnọdụ adịghị agwụ agwụ. Eji m n'aka na Ivan agaghị eme nke a, ma ị ghọtara ihe ọ pụtara na anyị nwere mmadụ abụọ chọrọ inweta ihe na ha adịghị njikere inye ya ruo mgbe onye nke ọzọ nyere ha ihe ha chọrọ. Ọ dịghịkwa ngwọta adịghị.

Na n'ezie, nchekwa data gị kwesịrị ịchọpụta nke a. Ma mgbe ahụ ịkwesịrị ihichapụ ma ọ bụ mechie otu n'ime nnọkọ ahụ, n'ihi na ma ọ bụghị ya, ha ga-anọ ebe ahụ ruo mgbe ebighị ebi. Na anyị na-ahụ ya na ọdụ data, anyị na-ahụ ya na sistemụ arụmọrụ. Na ebe niile anyị nwere usoro ndị yiri ya, nke a nwere ike ime.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ugbu a, anyị ga-wụnye deadlocks abụọ. Anyị ga-etinye 50 na 80. N'ahịrị nke mbụ, m ga-emelite site na 50 ruo 50. Aga m enweta nọmba azụmahịa 710.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma mgbe ahụ, m ga-agbanwe 80 gaa na 81, na 50 gaa na 51.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na nke a bụ otú ọ ga-adị. Ya mere, 710 nwere ahịrị egbochiri, na 711 na-echere nkwenye. Anyị hụrụ nke a mgbe anyị melitere. 710 bụ onye nwe usoro anyị. Na 711 na-echere 710 iji mezue azụmahịa ahụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ na-ekwu ọbụna n'ahịrị nke ndị nwụrụ anwụ mere. Na ebe a bụ ebe ọ na-amalite na-iche.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ugbu a, anyị na-emelite 80 ruo 80.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na nke a bụ ebe ndị nwụrụ anwụ na-amalite. 710 na-eche nzaghachi sitere na 711, na 711 na-echere 710. Nke a agaghị akwụsị nke ọma. Ọ dịghịkwa ụzọ isi na nke a pụta. Ha ga-atụkwa anya nzaghachi n'aka ibe ha.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ọ ga-amalitekwa igbu oge ihe niile. Anyị achọghịkwa nke ahụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na Postgres nwere ụzọ iji mara mgbe nke a mere. Ma mgbe nke a mere, ị ga-enweta njehie a. Na site na nke a, o doro anya na usoro dị otú ahụ na nke dị otú ahụ na-echere SHARE LOCK site na usoro ọzọ, ya bụ, nke na-egbochi usoro 711. Na usoro ahụ na-echere ka a na-enye LOCK SHARE na ID azụmahịa dị otú ahụ ma gbochie ya site na usoro dị otú ahụ. Ya mere, enwere ọnọdụ nkwụsị ebe a.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Enwere mkpọchi ụzọ atọ? Ọ ga-ekwe omume? Ee.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyị na-etinye nọmba ndị a na tebụl. Anyị na-agbanwe 40 ruo 40, anyị na-egbochi.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyị na-agbanwe 60 ruo 61, 80 ruo 81.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na mgbe ahụ, anyị na-agbanwe 80 na mgbe ọganihu!

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na 714 na-eche ugbu a 715. Nke 716 na-eche 715th. Ọ dịghịkwa ihe a pụrụ ime banyere ya.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Enweghịzị mmadụ abụọ ebe a, mmadụ atọ adịlarị ebe a. Achọrọ m ihe n'aka gị, nke a chọrọ ihe n'aka onye nke atọ, na onye nke atọ chọrọ ihe n'aka m. Anyị na-echerekwa ụzọ atọ n'ihi na anyị niile na-eche ka onye nke ọzọ rụchaa ihe ọ chọrọ ime.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na Postgres maara n'ahịrị nke a na-eme. Ya mere ọ ga-enye gị ozi na-esonụ, nke na-egosi na ị nwere nsogbu ebe ntinye atọ na-egbochi ibe gị. Na enweghị mgbochi ebe a. Nke a nwere ike ịbụ ikpe ebe ndenye 20 na-egbochi ibe ha.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nsogbu na-esote bụ serializable.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ọ bụrụ na mkpọchi serializable pụrụ iche.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyi laghachikwa na 719. Omuputa ya di nma.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na ị nwere ike pịa ime ka azụmahịa si serializable.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ị ghọtara na ị nwere ụdị mkpọchi SA dị iche - ọ pụtara serializable.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ya mere, anyị nwere ụdị mkpọchi ọhụrụ a na-akpọ SArieadLock, nke bụ mkpọchi serial na-enye gị ohere ịbanye usoro.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na kwa ị nwere ike itinye ndenye aha pụrụ iche.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

N'ime tebụl a, anyị nwere ndepụta ntụaka pụrụ iche.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ya mere, ọ bụrụ na m tinye nọmba 2 ebe a, n'ihi ya enwere m 2. Ma n'elu elu, m na-etinye 2 ọzọ na ị nwere ike ịhụ na 721 nwere mkpọchi pụrụ iche. Mana ugbu a 722 na-eche 721 ka ọ rụchaa ọrụ ya n'ihi na ọ nweghị ike itinye 2 ruo mgbe ọ matara ihe ga-eme 721.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụrụ na anyị na-eme subtransaction.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Anyị nwere 723.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ọ bụrụ na anyị echekwa isi ihe wee melite ya, mgbe ahụ, anyị ga-enweta ID azụmahịa ọhụrụ. Nke a bụ ụkpụrụ omume ọzọ ị kwesịrị ịma. Ọ bụrụ na anyị weghachi nke a, mgbe ahụ ID azụmahịa na-apụ. 724 na-apụ. Mana ugbu a anyị nwere 725.

Yabụ kedu ihe m na-agbalị ime ebe a? Ana m agbalị igosi gị ihe atụ nke mkpọchi pụrụ iche nke ị nwere ike ịhụ: ma ọ bụ mkpọchi serializable ma ọ bụ SAVEPOINT, ndị a bụ ụdị mkpọchi dị iche iche ga-apụta na tebụl mkpọchi.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ imepụta mkpọchi doro anya (nke doro anya), nke nwere pg_advisory_lock.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ị na-ahụ na e depụtara ụdị mgbochi ahụ dị ka ndụmọdụ. Na ebe a ọ na-ekwu "ndụmọdụ" na-acha uhie uhie. Ị nwere ike igbochi otu a site na pg_advisory_unlock.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na n'ikpeazụ, a ga m achọ igosi gị otu ihe na-akụda mmụọ ọzọ. M ga-emepụta echiche ọzọ. Mana m ga-esonye na pg_locks table na pg_stat_activity table. Gịnịkwa mere m ji chọọ ime nke a? N'ihi na nke a ga-enyere m aka ile anya ma hụ nnọkọ niile dị ugbu a ma hụ kpọmkwem ụdị mkpọchi ha na-echere. Na nke a na-adọrọ mmasị nke ukwuu mgbe anyị na-ejikọta tebụl mkpọchi na tebụl ajụjụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ebe a anyị mepụtara pg_stat_view.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Na anyị na-emelite ahịrị otu. Leekwa ka anyị hụ 724. Anyị emelite ahịrị anyị ka atọ. Gịnịkwa ka ị na-ahụ ebe a ugbu a? Ndị a bụ arịrịọ, ya bụ, ị na-ahụ ndepụta arịrịọ niile edepụtara na kọlụm aka ekpe. Na mgbe ahụ n'akụkụ aka nri ị nwere ike ịhụ ihe mgbochi na ihe ha na-emepụta. Ma ọ nwere ike ịpụta ìhè karịa gị ka ị ghara ịlaghachi na nnọkọ ọ bụla oge ọ bụla wee hụ ma ọ dị mkpa ka ị sonyere ya ma ọ bụ na ị gaghị. Ha na-emere anyị ya.

Akụkụ ọzọ bara uru nke ukwuu bụ pg_blocking_pids. Ma eleghị anya, ị nụtụbeghị banyere ya. Gịnị ka ọ na-eme? Ọ na-enye anyị ohere ịgwa na maka nnọkọ a 11740 ihe kpọmkwem usoro NJ ọ na-eche. Ị ga-ahụkwa na 11740 na-echere 724. na 724 nọ n'elu. Na 11306 bụ NJ usoro gị. N'ezie, ọrụ a na-aga site na tebụl mkpọchi gị. Amakwa m na ọ dị ntakịrị mgbagwoju anya, mana ị jisiri ike ghọta ya. N'ezie, ọrụ a na-aga site na tebụl mkpọchi a wee gbalịa ịchọta ebe a na-enye NJ usoro a mkpọchi ọ na-eche. Ọ na-agbalịkwa ịchọpụta nke usoro ID usoro nke na-echere mkpọchi nwere. Yabụ ị nwere ike rụọ ọrụ a pg_blocking_pids.

Na nke a nwere ike ịba uru nke ukwuu. Naanị anyị gbakwunyere nke a na ụdị 9.6, yabụ njirimara a dị naanị afọ 5, mana ọ bara ezigbo uru. Na otu ihe ahụ metụtara arịrịọ nke abụọ. Ọ na-egosi kpọmkwem ihe anyị kwesịrị ịhụ.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Nke a bụ ihe m chọrọ ịgwa gị okwu. Ma dị ka m tụrụ anya ya, anyị ji oge anyị niile mee ihe n’ihi na e nwere ọtụtụ ihe nkiri slide. Na slide ndị dị maka nbudata. Ọ ga-amasị m ikele gị maka ịnọ ebe a. Eji m n’aka na ị ga-anụ ụtọ ọgbakọ ndị ọzọ, daalụ nke ukwuu!

Ajụjụ:

Dịka ọmụmaatụ, ọ bụrụ na m na-agbalị imelite ahịrị, na nnọkọ nke abụọ na-agbalị ihichapụ tebụl dum. Dị ka m ghọtara, ekwesịrị inwe ihe dịka mkpọchi ebumnuche. Enwere ihe dị otú ahụ na Postgres?

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ka anyị laghachi azụ na mmalite. Ị nwere ike icheta na mgbe ị na-eme ihe ọ bụla, dịka ọmụmaatụ mgbe ị na-eme Nhọrọ, anyị na-enye AccessShareLock. Na nke a na-egbochi tebụl ka a ghara ịdaba. Yabụ ọ bụrụ na ị, dịka ọmụmaatụ, chọrọ imelite ahịrị na tebụl ma ọ bụ hichapụ ahịrị, mgbe ahụ mmadụ enweghị ike ihichapụ tebụl ahụ n'otu oge n'ihi na ị na-ejide AccessShareLock a n'elu tebụl dum yana n'elu ahịrị. Ma ozugbo ịmechara, ha nwere ike ihichapụ ya. Ma ka ị na-agbanwe ihe ozugbo ebe ahụ, ha agaghị enwe ike ime ya.

Ka anyị mee ya ọzọ. Ka anyị gaa n'ihu na ihe atụ ihichapụ. Na ị na-ahụ ka e nwere nanị mkpọchi n'ahịrị n'elu dum table.

Nke a ga-adị ka mkpọchi naanị, nri?

Ee, ọ dị ka ya. Aghọtara m ihe ị na-ekwu. Ị na-ekwu na ọ bụrụ na m eme SELECT mgbe ahụ enwere m ShareExclusive wee mee ya Row Exclusive, nke ahụ ọ na-aghọ nsogbu? Mana ọ dị nwute na nke a anaghị ebute nsogbu. Nke a dị ka ịbawanye ogo mkpọchi, mana n'ezie enwere m mkpọchi na-egbochi ihichapụ. Ma ugbu a, mgbe m na-eme ka mkpọchi a dịkwuo ike, ọ ka na-egbochi ihichapụ. Ya mere, ọ dịghị ka m na-agbago. Ya bụ, ọ gbochiri ya ime mgbe ọ nọkwa na ọkwa dị ala, yabụ mgbe m buliri ọkwa ya, ọ ka na-egbochi ihichapụ tebụl ahụ.

Aghọtara m ihe ị na-ekwu. Enweghị mkpọchi escalation ebe a, ebe ị na-agbalị ịhapụ otu mkpọchi iji webata nke siri ike. N'ebe a, ọ na-abawanye mgbochi a n'ofe osisi, n'ihi ya, ọ naghị akpata esemokwu ọ bụla. Mana ọ bụ ajụjụ dị mma. Daalụ nke ukwuu maka ịjụ nke a!

Kedu ihe anyị kwesịrị ime iji zere ọnọdụ nkwụsị mgbe anyị nwere ọtụtụ nnọkọ, ọnụ ọgụgụ buru ibu nke ndị ọrụ?

Postgres na-achọpụta ọnọdụ akpọchi na-akpaghị aka. Ọ ga-ehichapụ otu nnọkọ ahụ ozugbo. Nanị ụzọ ị ga-esi zere igbochi ndị nwụrụ anwụ bụ igbochi ndị mmadụ n'otu usoro. Ya mere, mgbe ị na-ele gị ngwa, mgbe mgbe ihe mere deadlocks ... Ka anyị were ya na m chọrọ igbochi abụọ dị iche iche ihe. Otu ngwa na-akpọchi tebụl 1, ngwa ọzọ na-akpọchi 2, wee tebụl 1. Ụzọ kachasị mfe iji zere mkpọchi anwụ bụ ileba anya na ngwa gị ma gbalịa hụ na mkpọchi ahụ na-eme n'otu usoro n'ofe ngwa niile. Na nke a na-ewepụkarị 80% nke nsogbu, n'ihi na ụdị mmadụ niile na-ede ngwa ndị a. Ma ọ bụrụ na ị na-egbochi ha n'otu usoro, mgbe ahụ, ị ​​gaghị ezute a deadlock ọnọdụ.

Daalụ nke ukwuu maka arụmọrụ gị! Ị na-ekwu maka agụụ zuru ezu na, ọ bụrụ na m ghọtara nke ọma, agụụ zuru ezu na-agbagọ usoro ndekọ na nchekwa dị iche iche, n'ihi ya, ha na-edebe ihe ndekọ dị ugbu a na-agbanweghị agbanwe. Kedu ihe kpatara vacuum full na-eji ohere mkpọchi pụrụ iche na gịnị kpatara na ọ na-emegide ọrụ ide?

Nke ahụ bụ ezigbo ajụjụ. Ihe kpatara ya bụ na agụụ zuru ezu na-ewe tebụl. Na anyị na-emepụta ụdị ọhụrụ nke tebụl. Tebụl ahụ ga-adịkwa ọhụrụ. Ọ na-apụta na nke a ga-abụ ụdị tebụl ọhụrụ kpamkpam. Ma nsogbu bụ na mgbe anyị na-eme nke a, anyị agaghị achọ ka ndị mmadụ gụọ ya n'ihi na anyị chọrọ ka ha hụ tebụl ọhụrụ ahụ. Ya mere nke a jikọtara na ajụjụ gara aga. Ọ bụrụ na anyị nwere ike ịgụ ihe n'otu oge, anyị agaghị enwe ike ibugharị ya ma duru ndị mmadụ gaa na tebụl ọhụrụ. Ọ ga-adị anyị mkpa ichere ka onye ọ bụla gụchaa tebụl a, yabụ na ọ bụ n'ezie mkpọchi naanị ọnọdụ.
Anyị na-ekwu naanị na anyị na-akpọchi site na mmalite n'ihi na anyị maara na na njedebe anyị ga-achọ ihe mkpuchi pụrụ iche iji bugharịa onye ọ bụla na nke ọhụrụ. Yabụ na anyị nwere ike idozi nke a. Na anyị na-eme ya otú a na imekotaotuugbo indexing. Mana nke a siri ike karịa ime. Na nke a metụtara nke ukwuu ajụjụ gị gara aga banyere mkpọchi nanị.

Ọ ga-ekwe omume ịgbakwunye oge nkwụsị na Postgres? Na Oracle, enwere m ike, dịka ọmụmaatụ, dee "họrọ imelite" wee chere 50 sekọnd tupu emelite. Ọ dị mma maka ngwa ahụ. Mana na Postgres, achọrọ m ime ya ozugbo ma ghara ichere ma ọlị, ma ọ bụ chere ruo oge ụfọdụ.

Ee, ị nwere ike họrọ oge nkwụsịtụ na mkpọchi gị, na mkpọchi gị. Ịnwekwara ike ịnye iwu enweghị ụzọ, nke ga-... ma ọ bụrụ na ịnweghị ike ịnweta mkpọchi ozugbo. Ya mere, ma oge mkpọchi ma ọ bụ ihe ọzọ ga-enye gị ohere ime nke a. A naghị eme nke a na ọkwa syntactic. A na-eme nke a dị ka mgbanwe na ihe nkesa. Mgbe ụfọdụ enweghị ike iji nke a mee ihe.

Ị nwere ike imepe slide 75?

Ee.

Na-emepe onye njikwa mkpọchi Postgres. Bruce Momjian

Ma ajụjụ m bụ nke a. Kedu ihe kpatara usoro mmelite abụọ ahụ ji na-atụ anya 703?

Na nke a bụ nnukwu ajụjụ. Aghọtaghị m, n'ụzọ, ihe kpatara Postgres ji eme nke a. Ma mgbe e kere 703, ọ nọ na-atụ anya 702. Ma mgbe 704 na 705 pụtara, ọ dị ka ha amaghị ihe ha na-atụ anya n'ihi na ọ dịghị ihe ọ bụla. Na Postgres na-eme ya n'ụzọ dị otú a: mgbe ị na-enweghị ike ịnweta mkpọchi, ọ na-ede "Gịnị bụ isi nhazi gị?", N'ihi na ị na-echeworị mmadụ. Yabụ na anyị ga-ahapụ ya ka ọ kwụgidere n'ikuku, ọ gaghị emelite ya ma ọlị. Ma gịnị mere ebe a? Ozugbo 702 mechara usoro ahụ na 703 natara mkpọchi ya, usoro ahụ laghachiri azụ. O wee sị na ugbu a anyị nwere mmadụ abụọ na-eche. Mgbe ahụ, ka anyị melite ha ọnụ. Ka anyị gosikwa na ha abụọ na-atụ anya.

Amaghị m ihe kpatara Postgres ji eme nke a. Mana enwere nsogbu akpọrọ f…. Ọ dị m ka nke a abụghị okwu na Russian. Nke a bụ mgbe onye ọ bụla na-echere otu nnukwu ụlọ, ọ bụrụgodị na ndị ọchịchị 20 na-echere nnukwu ụlọ ahụ. Na mberede, ha niile na-eteta n'otu oge. Na onye ọ bụla na-amalite ịgbalị imeghachi omume. Mana usoro a na-eme ka onye ọ bụla na-eche 703. Maka na ha niile na-echere, anyị ga-agbakọta ha niile ozugbo. Ma ọ bụrụ na arịrịọ ọhụrụ ọ bụla pụtara nke ewepụtara mgbe nke a gasịrị, dịka ọmụmaatụ, 707, mgbe ahụ a ga-enwekwa ihe efu ọzọ.

Ma ọ dị m ka a na-eme nke a ka anyị nwee ike ikwu na n'oge a 702 na-echere 703, na ndị niile na-abịa mgbe nke ahụ gasịrị agaghị enwe ihe ọ bụla n'ime ubi a. Ma ozugbo onye nlekọta mbụ hapụrụ, ndị niile na-echere n'oge ahụ tupu mmelite ahụ na-enweta otu akara ahụ. Ya mere, echere m na a na-eme nke a ka anyị nwee ike ịhazi ya ka e wee nye ha iwu nke ọma.

M mgbe niile na-ele nke a dị ka a kama iju onu. N'ihi na ebe a, dịka ọmụmaatụ, anyị anaghị edepụta ha ma ọlị. Ma ọ dị m ka oge ọ bụla anyị na-enye mkpọchi ọhụrụ, anyị na-ele ndị niile na-eche nche anya. Mgbe ahụ, anyị na-agbakọta ha niile. Ma nke ọhụrụ ọ bụla nke na-abata na-abanye n'ahịrị naanị mgbe onye ọzọ mechara nhazi. Ajuju mara mma. Daalụ nke ukwuu maka ajụjụ gị!

Ọ dị m ka ọ bụ ihe ezi uche dị na ya mgbe 705 na-atụ anya 704.

Mana nsogbu ebe a bụ nke a. Teknụzụ, ị nwere ike iteta otu ma ọ bụ nke ọzọ. Ya mere, anyị ga-eteta otu ma ọ bụ nke ọzọ. Ma gịnị na-eme na usoro? Ị nwere ike ịhụ ka 703 nọ n'elu si gbochie ID azụmahịa nke ya. Nke a bụ otú Postgres si arụ ọrụ. Na 703 na-egbochi ya site na ID azụmahịa nke ya, yabụ ọ bụrụ na mmadụ chọrọ ichere, mgbe ahụ, ha ga-echere 703. Na, n'eziokwu, 703 mezue. Ma naanị mgbe emechara ya ka otu n'ime usoro ahụ ga-eteta. Na anyị amaghị ihe kpọmkwem usoro a ga-abụ. Mgbe ahụ, anyị na-edozi ihe niile nke nta nke nta. Ma o doro anya na usoro a na-akpọte mbụ, n'ihi na ọ nwere ike ịbụ nke ọ bụla n'ime usoro ndị a. N'ikpeazụ, anyị nwere onye nhazi oge nke kwuru na anyị nwere ike ịkpọte nke ọ bụla n'ime usoro ndị a. Anyị na-ahọrọ otu na enweghị usoro. N’ihi ya, e kwesịrị ịma ha abụọ n’ihi na anyị nwere ike ịkpọte nke ọ bụla n’ime ha.

Na nsogbu bụ na anyị nwere CP-infinity. Ya mere, o yikarịrị ka anyị nwere ike iteta nke ọzọ. Ma ọ bụrụ na, dịka ọmụmaatụ, anyị kpọtere nke ikpeazụ, anyị ga-echere onye natara ngọngọ ahụ, n'ihi ya, anyị anaghị ekpebi onye a ga-ebu ụzọ kpọte kpọmkwem. Anyị na-emepụta ọnọdụ dị otú ahụ, na usoro ahụ ga-akpọte ha n'usoro n'usoro.

E nwere akụkọ gbasara mkpọchi nke Egor Rogov. Lee, ha na-adọrọ mmasị ma baa uru. Isiokwu a, n'ezie, dị nnọọ mgbagwoju anya. Daalụ nke ukwuu, Bruce!

isi: www.habr.com

Tinye a comment