Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Okulotshiweyo kwenkulumo kaBruce Momjian ka-2020 ethi "Ukuvula Isiphathi Se-Postgres Lock".

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

(Qaphela: Yonke imibuzo ye-SQL evela kumaslayidi ingatholakala kulesi sixhumanisi: http://momjian.us/main/writings/pgsql/locking.sql)

Sawubona! Kumnandi ukuba lapha eRussia futhi. Ngiyaxolisa ukuthi angikwazanga ukuza ngonyaka odlule, kodwa kulo nyaka mina no-Ivan sinezinhlelo ezinkulu. Ngethemba ukuthi ngizoba lapha kaningi. Ngiyakuthanda ukuza eRussia. Ngizovakashela eTyumen, Tver. Ngijabule kakhulu ngokuthi ngizokwazi ukuvakashela la madolobha.

Igama lami nginguBruce Momjian. Ngisebenza kwa-EnterpriseDB futhi ngisebenze ne-Postgres iminyaka engaphezu kwengu-23. Ngihlala ePhiladelphia, e-USA. Ngihamba izinsuku ezingaba ngu-90 ngonyaka. Futhi ngihambela izingqungquthela ezingaba ngu-40. Eyami Isizindalwazi, equkethe amaslayidi engizokubonisa wona manje. Ngakho-ke, ngemva kwengqungquthela ungawalanda kuwebhusayithi yami yomuntu siqu. Futhi iqukethe izethulo ezingaba ngu-30. Kukhona namavidiyo kanye nenani elikhulu lama-blog afakiwe, angaphezu kuka-500. Lena insiza efundisayo. Futhi uma unesithakazelo kule ndaba, khona-ke ngikumema ukuba ukusebenzise.

Ngangiwuthisha, uprofesa ngaphambi kokuba ngiqale ukusebenza nePostgres. Futhi ngijabula kakhulu ngokuthi manje ngizokwazi ukukutshela lokho engizokutshela kona. Lena enye yezethulo zami ezithakazelisa kakhulu. Futhi le phrezentheshini iqukethe amaslayidi ayi-110. Sizoqala ukukhuluma ngezinto ezilula, futhi ekugcineni umbiko uzokuba nzima nakakhulu, futhi uzoba nzima kakhulu.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lena ingxoxo engathandeki. Ukuvimba akusona isihloko esidume kakhulu. Sifuna ukuthi lokhu kunyamalale ndawana thize. Kufana nokuya kudokotela wamazinyo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

  1. Ukukhiya kuyinkinga kubantu abaningi abasebenza kusizindalwazi futhi banezinqubo eziningi ezisebenza ngesikhathi esisodwa. Badinga ukuvinjwa. Okungukuthi, namuhla ngizokunikeza ulwazi oluyisisekelo ekuvimbeni.
  2. Ama-ID okwenziwayo. Lena ingxenye eyisicefe yesethulo, kodwa idinga ukuqondwa.
  3. Okulandelayo sizokhuluma ngezinhlobo zokuvimba. Lena ingxenye esebenza kahle.
  4. Futhi ngezansi sizonikeza izibonelo ezithile zokuvimba. Futhi kuyoba nzima kakhulu ukuyiqonda.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ake sikhulume ngokuvimba.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Amagama ethu ayinkimbinkimbi impela. Bangaki kini abaziyo ukuthi lesi siqephu sivelaphi? Abantu ababili. Lokhu kuvela kumdlalo obizwa nge-Colossal Cave Adventure. Kwakuwumdlalo wekhompiyutha osuselwe embhalweni ngeminyaka yama-80s, ngicabanga. Lapho kwakufanele ungene emhumeni, ungene ku-labyrinth, futhi umbhalo washintsha, kodwa okuqukethwe kwakucishe kufane ngaso sonke isikhathi. Ngiwukhumbula kanjalo lo mdlalo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi lapha sibona igama lezingidi eza kithi zivela e-Oracle. Siyawasebenzisa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lapha sibona amatemu angididayo. Isibonelo, YABELANA UKUBUYEKEZWA EXXLUSIVE. Okulandelayo YABELANA OKUHLAZIYWAYO. Uma sikhuluma iqiniso, la magama awacaci kahle. Sizozama ukuzicabangela kabanzi. Ezinye ziqukethe igama elithi β€œshare”, elisho ukwehlukana. Ezinye ziqukethe igama elithi β€œokukhethekile”. Amanye aqukethe womabili la magama. Ngingathanda ukuqala ngokuthi lezi zikhiye zisebenza kanjani.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi igama elithi "ukufinyelela" libaluleke kakhulu. Futhi amagama athi β€œumugqa” awuchungechunge. Okungukuthi, ukusatshalaliswa kokufinyelela, ukusatshalaliswa komugqa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Olunye udaba okufanele luqondwe ku-Postgres, engingeke ngikwazi ukulikhuluma enkulumweni yami, yi-MVCC. Nginesethulo esihlukile ngalesi sihloko kuwebhusayithi yami. Futhi uma ucabanga ukuthi le phrezentheshini inzima, i-MVCC cishe inzima kakhulu kimi. Futhi uma unentshisekelo, ungayibuka kuwebhusayithi. Ungakwazi ukubukela ividiyo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Okunye okumele sikuqonde ama-ID okwenziwayo. Imisebenzi eminingi ayikwazi ukusebenza ngaphandle kwezihlonzi ezihlukile. Futhi lapha sinencazelo yokuthi kuyini ukuthengiselana. I-Postgres inezinhlelo ezimbili zokubala izinombolo. Ngiyazi ukuthi lesi akusona isixazululo esihle kakhulu.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi khumbula ukuthi amaslayidi azoba nzima kakhulu ukuwaqonda, ngakho-ke okugqanyiswe ngokubomvu yilokho okudingeka ukunake.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

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

Asibone. Inombolo yokwenziwayo igqanyiswe ngokubomvu. Umsebenzi othi KHETHA pg_back uboniswa lapha. Ibuyisela umsebenzi wami kanye ne-ID yokwenziwe.

Okunye futhi, uma uthanda le phrezentheshini futhi ufuna ukuyisebenzisa kusizindalwazi sakho, ungaya kulesi sixhumanisi ngombala opinki bese ulanda i-SQL yalesi sethulo. Futhi ungamane uyiqalise ku-PSQL yakho futhi sonke isethulo sizoba sesikrinini sakho ngokushesha. Ngeke ibe nezimbali, kodwa okungenani singayibona.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kulokhu sibona i-ID yokwenziwe. Lena inombolo esimnike yona. Futhi kunolunye uhlobo lwe-ID yokwenziwayo ku-Postgres, ebizwa nge-virtual transaction ID

Futhi kufanele sikuqonde lokhu. Lokhu kubaluleke kakhulu, ngaphandle kwalokho ngeke sikwazi ukuqonda ukukhiya ku-Postgres.

I-ID yokwenziwe eyi-virtual i-ID yokwenziwe enganawo amanani aqhubekayo. Isibonelo, uma ngisebenzisa umyalo KHETHA, khona-ke cishe ngeke ngishintshe isizindalwazi, ngeke ngikhiye lutho. Ngakho-ke uma sisebenzisa UKUKHETHA okulula, asikuniki lokho kuthenga i-ID eqhubekayo. Simnika kuphela umazisi obonakalayo lapho.

Futhi lokhu kuthuthukisa ukusebenza kwe-Postgres, kuthuthukisa amandla okuhlanza, ngakho-ke i-ID yokuthengiselana ebonakalayo iqukethe izinombolo ezimbili. Inombolo yokuqala ngaphambi kwe-slash i-ID yasemuva. Futhi ngakwesokudla sibona ikhawunta nje.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho-ke, uma ngiqhuba isicelo, ithi i-ID ye-backend ingu-2.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uma ngisebenzisa uchungechunge lwemisebenzi enjalo, khona-ke siyabona ukuthi ikhawunta iyanda ngaso sonke isikhathi uma ngisebenzisa umbuzo. Isibonelo, uma ngisebenzisa umbuzo 2/10, 2/11, 2/12, njll.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Khumbula ukuthi kukhona amakholomu amabili lapha. Ngakwesokunxele sibona i-ID yokwenziwayo ebonakalayo - 2/12. Futhi kwesokudla sine-ID yokwenziwe engunaphakade. Futhi le nkambu ayinalutho. Futhi lokhu okwenziwayo akuguquli isizindalwazi. Ngakho-ke angiyiniki i-ID yokwenziwe engunaphakade.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lapho nje ngisebenzisa umyalo wokuhlaziya ((HLAZIYA)), umbuzo ofanayo unginika i-ID yokwenziwe unomphela. Bheka ukuthi lokhu kushintshe kanjani kithi. Bengingenayo le ID ngaphambilini, kodwa manje senginayo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho nasi esinye isicelo, okunye ukuthengiselana. Inombolo ye-virtual transaction ngu-2/13. Futhi uma ngicela i-ID yokwenziwe eqhubekayo, lapho-ke ngisebenzisa umbuzo, ngizoyithola.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho, kanye futhi. Sine-ID yokwenziwayo ebonakalayo kanye ne-ID yokwenziwe eqhubekayo. Vele uqonde leli phuzu ukuze uqonde ukuziphatha kwe-Postgres.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Siqhubekela esigabeni sesithathu. Lapha sizomane sihambe ngezinhlobo ezahlukene zezingidi ku-Postgres. Akuthakazelisi kakhulu. Ingxenye yokugcina izothakazelisa kakhulu. Kodwa kufanele sicabangele izinto eziyisisekelo, ngoba uma kungenjalo ngeke siqonde ukuthi yini ezokwenzeka ngokulandelayo.

Sizodlula kulesi sigaba, sizobheka uhlobo ngalunye lwesikhiya. Futhi ngizokukhombisa izibonelo zokuthi zifakwa kanjani, zisebenza kanjani, ngizokukhombisa imibuzo ongayisebenzisa ukuze ubone ukuthi ukukhiya kusebenza kanjani ku-Postgres.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ukuze udale umbuzo futhi ubone ukuthi kwenzakalani ku-Postgres, sidinga ukukhipha umbuzo ekubukeni kwesistimu. Kulokhu, pg_lock igqanyiswe ngokubomvu. I-Pg_lock yithebula lesistimu elisitshela ukuthi yiziphi izingidi ezisetshenziswayo njengamanje ku-Postgres.

Kodwa-ke, kunzima kakhulu kimi ukuthi ngikubonise i-pg_lock ngokwayo ngoba iyinkimbinkimbi. Ngakho-ke ngidale ukubuka okubonisa i-pg_locks. Futhi ingenzela umsebenzi othile ongivumela ukuthi ngiqonde kangcono. Okusho ukuthi, ayifaki izingidi zami, iseshini yami, njll. Imane iyi-SQL ejwayelekile futhi ikuvumela ukuthi ukubonise kangcono ukuthi kwenzakalani.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Enye inkinga ukuthi lo mbono ubanzi kakhulu, ngakho-ke kufanele ngidale owesibili - lockview2.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian Futhi ingibonisa amakholomu engeziwe avela etafuleni. Futhi enye engibonisa amanye amakholomu. Lokhu kuyinkimbinkimbi impela, ngakho ngizamile ukukwethula ngendlela elula ngangokunokwenzeka.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho-ke sidale itafula elibizwa nge-Lockdemo. Futhi sidale umugqa owodwa lapho. Leli yithebula lethu eliyisampula. Futhi sizobe sidala izigaba ukuze sikubonise izibonelo zokukhiya.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho, umugqa owodwa, ikholomu eyodwa. Uhlobo lokuqala lokukhiya lubizwa ngokuthi ACCESS SHARE. Lokhu ukuvimbela okuncane kakhulu. Lokhu kusho ukuthi empeleni ayingqubuzani nezinye izingidi.

Futhi uma sifuna ukuchaza ngokucacile ukukhiya, sisebenzisa umyalo "wetafula lokukhiya". Futhi ngokusobala izovimba, i.e. kumodi ethi ACCESS SHARE sivula ithebula lokukhiya. Futhi uma ngisebenzisa i-PSQL ngemuva, bese ngiqala iseshini yesibili kusuka kuseshini yami yokuqala ngale ndlela. Okungukuthi, ngizokwenzenjani lapha? Ngiya kwenye iseshini futhi ngiyitshele ukuthi "ngibonise i-lockview yalesi sicelo." Futhi lapha ngine-AccessShareLock kuleli thebula. Yilokhu kanye engikucelile. Futhi uthi i-block inikezwe. Kulula kakhulu.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngaphezu kwalokho, uma sibheka ikholomu yesibili, akukho lutho lapho. Azinalutho.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uma ngisebenzisa umyalo othi "KHETHA", khona-ke lena indlela esobala (esobala) yokucela i-AccessShareLock. Ngakho-ke ngikhulula ithebula lami bese ngisebenzisa umbuzo futhi umbuzo ubuyisela imigqa eminingi. Futhi komunye wemigqa sibona i-AccessShareLock. Ngakho, KHETHA ubiza i-AccessShareLock etafuleni. Futhi ayingqubuzani nanoma yini ngoba iwukhiye wezinga eliphansi.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kuthiwani uma ngisebenzisa KHETHA futhi nginamathebula amathathu ahlukene? Ngaphambilini bengisebenzisa ithebula elilodwa kuphela, manje sengisebenzisa okuthathu: pg_class, pg_namespace kanye ne-pg_attribute.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi manje uma ngibheka umbuzo, ngibona 9 AccessShareLocks kumathebula amathathu. Kungani? Amathebula amathathu agqanyiswe ngokuluhlaza okwesibhakabhaka: pg_attribute, pg_class, pg_namespace. Kodwa futhi ungabona ukuthi zonke izinkomba ezichazwe ngalawa mathebula nazo zine-AccessShareLock.

Futhi lokhu kuwukhiye ongangqubuzani nabanye. Futhi konke ekwenzayo ukumane kusivimbele ekusetheni kabusha ithebula ngenkathi silikhetha. Kunengqondo. Okusho ukuthi, uma sikhetha itafula, liyanyamalala ngaleso sikhathi, khona-ke lokhu akulungile, ngakho I-AccessShare iwukhiye wezinga eliphansi elisitshela ukuthi "ungawisi leli thebula ngenkathi ngisebenza". Empeleni, yilokho kuphela akwenzayo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

UKWABELANA KOMQWELO - Lo khiye uhluke kancane.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ake sithathe isibonelo. KHETHA indlela yokwabelana ngomugqa wokukhiya umugqa ngamunye ngawodwana. Ngale ndlela akekho ongazisusa noma aziguqule ngenkathi sizibhekile.

Ukuvula Isiphathi Se-Postgres Lock. Bruce MomjianWenzani-ke SHARE LOCK? Siyabona ukuthi i-ID yomsebenzi ingu-681 yokuthi KHETHA. Futhi lokhu kuyathakazelisa. Kwenzekeni lapha? Isikhathi sokuqala lapho sibona inombolo isenkambu ethi "Khiya". Sithatha i-ID yokwenziwe futhi ithi iyivimba ngemodi ekhethekile. Ekwenzayo nje ithi nginomugqa okhiyelwe ndawana thize etafuleni. Kodwa akasho ukuthi kuphi ngempela. Sizobheka lokhu ngokuningiliziwe ngokuhamba kwesikhathi.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lapha sithi ingidi isetshenziswa yithi.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho-ke, isikhiya esikhethekile sisho ngokucacile ukuthi sikhethekile. Futhi futhi uma ususa umugqa kuleli thebula, khona-ke yilokhu okuzokwenzeka, njengoba ubona.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

SHARE EXCLUSIVE iyingidi ende.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lona umyalo (HLAZIYA) wokuhlaziya ozosetshenziswa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

YABELANA NGEKHISHI - ungakwazi ukukhiya ngokusobala kwimodi yokwabelana.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ungakha futhi inkomba eyingqayizivele. Futhi lapho ungabona i-SHARE LOCK, okuyingxenye yazo. Bese ikhiya itafula bese ifaka i-SHARE LOCK.

Ngokuzenzakalelayo, YABELANA NGEKHIYE etafuleni kusho ukuthi abanye abantu bangakwazi ukufunda ithebula, kodwa akekho ongalishintsha. Futhi yilokhu okwenzekayo lapho udala inkomba eyingqayizivele.

Uma ngidala inkomba eyingqayizivele ngesikhathi esisodwa, ngizoba nohlobo oluhlukile lokukhiya ngoba, njengoba ukhumbula, ukusebenzisa ama-index kanyekanye kunciphisa imfuneko yokukhiya. Futhi uma ngisebenzisa ukukhiya okuvamile, inkomba evamile, ngakho-ke ngizovimbela kanjalo ukubhala kunkomba yetafula ngenkathi kwakhiwa. Uma ngisebenzisa inkomba ngesikhathi esisodwa, kufanele ngisebenzise uhlobo oluhlukile lokukhiya.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

YABELANA UROWU OKUKHETHEKILE - futhi ungasethwa kucace (ngokusobala).

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Noma singakha umthetho, okungukuthi, sithathe icala elithile lapho lizosetshenziswa khona.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

UKUKHIWA KUPHELA kusho ukuthi akekho omunye ongashintsha itafula.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lapha sibona izinhlobo ezahlukene zokukhiya.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

I-ACESS EXCLUSIVE, isibonelo, iwumyalo ovimbayo. Isibonelo, uma wenza CLUSTER table, khona-ke lokhu kuyosho ukuthi akekho ozokwazi ukubhala lapho. Futhi ayikhiyi kuphela itafula ngokwayo, kodwa futhi izinkomba.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Leli yikhasi lesibili lokuvinjwa kwe-ACESS EXCLUSIVE, lapho sibona khona ukuthi ivimba ini etafuleni. Ikhiya imigqa yetafula ngayinye, okuyinto ethakazelisa kakhulu.

Yilokho lonke ulwazi oluyisisekelo engangifuna ukukunikeza. Sikhulume ngamalokhi, mayelana nama-ID okwenziwayo, sakhuluma ngama-ID okwenziwayo okubonakalayo, mayelana nama-ID okwenziwayo unomphela.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi manje sizodlula kwezinye izibonelo zokuvimba. Lena ingxenye ethakazelisa kakhulu. Sizobheka amacala athakazelisa kakhulu. Futhi umgomo wami kulesi sethulo ukukunikeza ukuqonda okungcono kwalokho okwenziwa yi-Postgres uma izama ukuvimba izinto ezithile. Ngicabanga ukuthi muhle kakhulu ekuvimbeni izingxenye.

Ake sibheke izibonelo ezithile.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Sizoqala ngamathebula nomugqa owodwa etafuleni. Uma ngifaka okuthile ngine-ExclusiveLock, Transaction ID ne-ExclusiveLock eboniswa etafuleni.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kwenzekani uma ngifaka eminye imigqa emibili? Futhi manje itafula lethu linemigqa emithathu. Futhi ngifake umugqa owodwa futhi ngathola lokhu njengokuphumayo. Futhi uma ngifaka eminye imigqa emibili, yini eyinqaba ngalokho? Kunento eyinqaba lapha ngoba ngengeze imigqa emithathu kuleli tafula, kodwa ngisenemigqa emibili kutafula lokukhiya. Futhi lokhu empeleni ukuziphatha okuyisisekelo kwe-Postgres.

Abantu abaningi bacabanga ukuthi uma kusizindalwazi ukhiya imigqa eyi-100, uzodinga ukudala okufakiwe kokukhiya okungu-100. Uma ngivimba imigqa engu-1 ngesikhathi esisodwa, ngizodinga imibuzo enjalo engu-000. Futhi uma ngidinga isigidi noma ibhiliyoni ukuze ngivimbe. Kodwa uma senza lokhu, ngeke kusebenze kahle kakhulu. Uma usebenzise isistimu edala okufakiwe okuvimbayo kumugqa ngamunye, ungabona ukuthi lokhu kuyinkimbinkimbi. Ngoba udinga ukuchaza ngokushesha itafula lokukhiya elingachichima, kodwa i-Postgres ayikwenzi lokho.

Futhi okubaluleke ngempela ngalesi silayidi ukuthi sibonisa ngokusobala ukuthi kukhona enye isistimu esebenza ngaphakathi kwe-MVCC ekhiya imigqa ngayinye. Ngakho-ke uma ukhiya izigidigidi zemigqa, i-Postgres ayidali imiyalo yokukhiya ehlukene eyibhiliyoni. Futhi lokhu kunomphumela omuhle kakhulu ekukhiqizeni.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kuthiwani ngesibuyekezo? Ngibuyekeza irowu manje, futhi uyabona ukuthi lenze imisebenzi emibili ehlukene ngesikhathi esisodwa. Yakhiya itafula ngesikhathi esifanayo, kodwa futhi yakhiya inkomba. Futhi ubedinga ukukhiya inkomba ngoba kunezingqinamba ezihlukile kuleli thebula. Futhi sifuna ukwenza isiqiniseko sokuthi akekho oyishintshayo, ngakho siyayivimba.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kwenzekani uma ngifuna ukubuyekeza imigqa emibili? Futhi siyabona ukuthi uziphatha ngendlela efanayo. Senza izibuyekezo eziphindwe kabili, kodwa inani elifanayo ncamashi lemigqa yokukhiya.

Uma uzibuza ukuthi i-Postgres ikwenza kanjani lokhu, uzodinga ukulalela izinkulumo zami ku-MVCC ukuze ufunde ukuthi i-Postgres imaka kanjani ngaphakathi le migqa eyishintshayo. Futhi i-Postgres inendlela ekwenza ngayo lokhu, kodwa ayikwenzi ezingeni lokukhiya itafula, ikwenza ezingeni eliphansi nelisebenza kahle kakhulu.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kuthiwani uma ngifuna ukususa okuthile? Uma ngisusa, ngokwesibonelo, umugqa owodwa futhi ngisenakho okokufaka kwami ​​okubili okuvimbelayo, futhi noma ngifuna ukukususa konke, kusekhona.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi, isibonelo, ngifuna ukufaka imigqa eyi-1, bese ngisusa noma ngengeza imigqa eyi-000, bese leyo migqa ngayinye engiyengezayo noma engishintshayo, ayirekhodwa lapha. Abhalwe ezingeni eliphansi ngaphakathi kochungechunge ngokwalo. Futhi phakathi nenkulumo ye-MVCC ngakhuluma ngalokhu ngokuningiliziwe. Kodwa kubaluleke kakhulu lapho uhlaziya okhiye ukuze wenze isiqiniseko sokuthi ukhiya ezingeni lethebula nokuthi awuboni ukuthi imigqa ngayinye irekhodwa kanjani lapha.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kuthiwani ngokuvimbela okusobala?

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Uma ngichofoza ukuvuselela, nginemigqa emibili ekhiyiwe. Futhi uma ngiwakhetha wonke bese ngichofoza okuthi β€œbuyekeza yonke indawo,” khona-ke ngisenawo amarekhodi amabili okuvimbela.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Asiwadali amarekhodi ahlukene omugqa ngamunye. Ngenxa yokuthi ukukhiqiza kuyehla, kungase kube kuningi kakhulu. Futhi singase sizithole sisesimweni esingemnandi.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi into efanayo, uma sabelana, singakwenza konke izikhathi ezingama-30.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Sibuyisela ithebula lethu, sisusa yonke into, bese sifaka umugqa owodwa futhi.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Okunye ukuziphatha okubona ku-Postgres okwaziwayo kakhulu nokuziphatha okufiswayo ukuthi ungenza isibuyekezo noma ukhethe. Futhi ungakwenza lokhu ngesikhathi esifanayo. Futhi ukukhetha akuvimbi isibuyekezo kanye nento efanayo ngakolunye uhlangothi. Sitshela umfundi ukuthi angamvimbi umbhali, nombhali akazange amvimbe umfundi.

Ngizokukhombisa isibonelo salokhu. Ngizokhetha manje. Sizokwenza-ke i-INSERT. Bese ungabona - 694. Ungabona i-ID yomsebenzi owenze lokhu kufakwa. Futhi kusebenza kanjalo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uma ngibheka i-ID yami yasemuva manje, manje isiyi-695.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi ngibona angu-695 evela etafuleni lami.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uma ngibuyekeza lapha kanje, khona-ke ngithola icala elihlukile. Kulokhu, i-695 iyikhikhi ekhethekile, futhi isibuyekezo sinokuziphatha okufanayo, kodwa akukho ukungqubuzana phakathi kwabo, okuyinto engavamile.

Futhi ungabona ukuthi phezulu yi-ShareLock, futhi ngezansi yi-ExclusiveLock. Futhi kokubili ukuthengiselana kwaphumelela.

Futhi udinga ukulalela inkulumo yami e-MVCC ukuze uqonde ukuthi lokhu kwenzeka kanjani. Kodwa lokhu kungumfanekiso ongakwenza ngesikhathi esisodwa, okungukuthi wenze KHETHA kanye NOBUYEKEZO ngesikhathi esisodwa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Masisethe kabusha futhi senze okunye ukusebenza okukodwa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Uma uzama ukuqalisa izibuyekezo ezimbili ngesikhathi esisodwa kumugqa ofanayo, izovinjelwa. Futhi khumbula, ngithe umfundi akamvimbeli umbhali, nombhali akamvimbi ofundayo, kepha umbhali uvimba omunye umbhali. Okusho ukuthi, asikwazi ukuthi abantu ababili babuyekeze umugqa ofanayo ngesikhathi esisodwa. Kufanele ulinde kuze kuqede eyodwa yazo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi ukuze sifanekise lokhu, ngizobheka ithebula le-Lockdemo. Futhi sizobheka umugqa owodwa. Ngokuthengiselana ngakunye 698.

Sibuyekeze lokhu kwaba ngu-2. 699 isibuyekezo sokuqala. Futhi ibe yimpumelelo noma isekwenziweni okulindile futhi isilinde ukuthi siqinisekise noma sikhansele.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kodwa bheka enye into - 2/51 umsebenzi wethu wokuqala, iseshini yethu yokuqala. U-3/112 uyisicelo sesibili esivele phezulu esishintshe lelo nani laba ngu-3. Futhi uma uqaphela, engaphezulu izikhiyele yona, engu-699. Kodwa u-3/112 akazange anikeze ingidi. Ikholomu yemodi yokukhiya isho ukuthi ilindeleni. Ilindele u-699. Futhi uma ubheka lapho u-699 ekhona, ingaphezulu. Futhi senzani iseshini yokuqala? Udale ukukhiya okukhethekile ku-ID yakhe yokwenziwe. Le yindlela i-Postgres ekwenza ngayo. Ivimba i-ID yayo yokwenziwayo. Futhi uma ufuna ukulinda othile ukuthi aqinisekise noma akhansele, kuzomele ulinde ngenkathi kusalindelwe umsebenzi. Futhi yingakho singabona umugqa ongaziwa.

Ake sibheke futhi. Kwesokunxele sibona i-ID yethu yokucubungula. Kukholomu yesibili sibona i-ID yethu yokwenziwayo ebonakalayo, futhi kweyesithathu sibona lock_type. Kusho ukuthini lokhu? Empeleni elikushoyo ukuthi livimba i-ID yomsebenzi. Kodwa qaphela ukuthi yonke imigqa engezansi ithi ukuhlobana. Futhi ngakho unezinhlobo ezimbili zokukhiya etafuleni. Kukhona ukhiye wobudlelwano. Bese kuba khona ukuvinjwa kwe-transactionid, lapho uzivimba khona uwedwa, okuyikhona kanye okwenzeka kumugqa wokuqala noma phansi impela, lapho i-transactionid ikhona, lapho silinda khona i-699 ukuthi iqedele ukusebenza kwayo.

Ngizobona ukuthi kwenzekani lapha. Futhi lapha izinto ezimbili zenzeka ngesikhathi esisodwa. Ubheke ukukhiya kwe-ID yokwenziwe kumugqa wokuqala ezikhiyayo. Futhi uyazivimba ukuze enze abantu balinde.

Uma ubheka umugqa wesi-6, ufana nowokuqala. Ngakho-ke ukuthengiselana 699 kuvinjiwe. I-700 nayo iyazikhiya. Bese kuthi emgqeni ongezansi uzobona ukuthi silinde i-699 ukuthi iqedele ukusebenza kwayo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi ohlotsheni_ lokukhiya, i-tuple ubona izinombolo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ungabona ukuthi ngu-0/10. Futhi lena inombolo yekhasi, kanye ne-offset yalo mugqa othile.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uyabona kuba ngu-0/11 uma sibuyekeza.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kodwa empeleni ngu-0/10, ngoba kukhona ukulinda lokhu kusebenza. Sinethuba lokubona ukuthi lolu wuchungechunge engilinde ukuluqinisekisa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Uma sesikuqinisekisile futhi sacindezela ukuzibophezela, futhi lapho isibuyekezo sesiqediwe, yilokhu esikutholayo futhi. I-Transaction 700 iyona kuphela ingidi, ayilindi muntu ngoba ibizibophezele. Imane ilinde ukuthi okwenziwayo kuqedwe. Uma i-699 isiphelile, asisalindi lutho. Futhi manje i-transaction 700 ithi konke kuhamba kahle, ukuthi inabo bonke okhiye abayidingayo kuwo wonke amatafula avunyelwe.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi ukwenza yonke le nto ibe nzima nakakhulu, sakha omunye umbono, kulokhu ozosinikeza ubuholi. Angilindele ukuthi uzosiqonda lesi sicelo. Kodwa lokhu kuzosinika umbono ocacile walokho okwenzekayo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lokhu ukubuka okuphindaphindayo futhi okunesinye isigaba. Bese-ke ibuyisela yonke into ndawonye futhi. Masisebenzise lokhu.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kuthiwani uma senza izibuyekezo ezintathu ngasikhathi sinye futhi sithi umugqa manje sezintathu. Futhi sizoshintsha 3 ukuze 4.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi lapha sibona 4. Futhi transaction ID 702.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Bese ngizoshintsha u-4 ngiye ku-5. No-5 ngiye ku-6, futhi 6 ngiye ku-7. Futhi ngizoklelisa abantu abaningi abazobe belinde ukuthi lokhu kuqedwa kuphele.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi konke kuba sobala. Uthini umugqa wokuqala? Lena yi-702. Lena i-ID yokwenziwe eye yamisa leli nani ekuqaleni. Kubhalweni kukholamu yami enginikezwe yona? Nginamamaki f. Lezi yizibuyekezo zami (5, 6, 7) azikwazi ukugunyazwa ngoba silinde ukuthi kuphele i-ID 702 yomsebenzi. Lapho sinokuvinjwa kwe-ID yokwenziwe. Futhi lokhu kubangela ukukhiya kwe-ID yezentengiselwano okungu-5.

Futhi uma ubheka ku-704, ku-705, akukho lutho olubhaliwe lapho okwamanje, ngoba abazi ukuthi kwenzekani okwamanje. Bavele babhale ukuthi abazi ukuthi kwenzakalani. Futhi bazolala nje ngoba balinde ukuthi kuqedwe umuntu bese bevuswa uma sekuvela ithuba lokushintsha imigqa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lokhu kubukeka kanjani. Kuyacaca ukuthi bonke sebelinde ulayini weshumi nambili.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Yilokhu esikubonile lapha. Nakhu u-0/12.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho-ke uma umsebenzi wokuqala usuvunyiwe, ungabona lapha ukuthi i-hierarchy isebenza kanjani. Futhi manje konke kuba sobala. Bonke bahlanzekile. Nangempela basalindile.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Nakhu okwenzekayo. 702 wenza. Futhi manje u-703 uthola lokhu kukhiya komugqa, bese u-704 eqala ukulinda u-703 ukuthi azibophezele. Futhi i-705 ilindele lokhu futhi. Futhi lapho konke lokhu sekuqediwe, bayazihlanza. Futhi ngithanda ukuveza ukuthi wonke umuntu uyafola. Futhi lokhu kufana kakhulu nesimo esigcwele isiminyaminya lapho wonke umuntu elinde imoto yokuqala. Imoto yokuqala ima futhi wonke umuntu umugqa omude. Bese ihamba, bese imoto elandelayo ingashayela phambili futhi ithole ibhulokhi yayo, njll.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uma lokhu kungabonakali kuyinkimbinkimbi ngokwanele kuwe, sizobe sesikhuluma nawe mayelana ne-deadlocks. Angazi ukuthi ubani kini oke wahlangana nazo. Lena inkinga evamile ezinhlelweni zesizindalwazi. Kodwa i-deadlocks yilapho iseshini eyodwa ilinde enye iseshini ukwenza okuthile. Futhi kulo mzuzu enye iseshini ilinde iseshini yokuqala ukwenza okuthile.

Ngokwesibonelo, uma u-Ivan ethi: β€œNginike okuthile,” bese ngithi: β€œCha, ngizokunikeza kuphela uma unginika okunye.” Futhi uthi, "Cha, ngeke ngikunike uma unganginiki." Futhi sigcina sisesimweni esingaqondile. Nginesiqiniseko sokuthi u-Ivan ngeke akwenze lokhu, kodwa uyakuqonda okushiwo ukuthi sinabantu ababili abafuna ukuthola okuthile futhi abakulungele ukukunikeza kuze kube yilapho omunye umuntu ebanikeza abakufunayo. Futhi asikho isixazululo.

Futhi empeleni, isizindalwazi sakho sidinga ukuthola lokhu. Futhi-ke udinga ukususa noma ukuvala enye yezikhathi, ngoba ngaphandle kwalokho zizohlala lapho phakade. Futhi siyibona kuma-database, siyibona ezinhlelweni zokusebenza. Futhi kuzo zonke izindawo lapho sinezinqubo ezifanayo, lokhu kungenzeka.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi manje sizofaka ama-deadlocks amabili. Sizobeka u-50 no-80. Emgqeni wokuqala, ngizobuyekeza ukusuka ku-50 kuye ku-50. Ngizothola inombolo yokwenziwayo 710.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Bese ngizoshintsha 80 ngiye ku-81, futhi 50 ngiye ku-51.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi lokhu kuzobukeka kanjani. Futhi ngakho-ke u-710 unomugqa ovinjiwe, futhi u-711 ulinde ukuqinisekiswa. Sikubonile lokhu ngesikhathi sibuyekeza. I-710 ingumnikazi wochungechunge lwethu. Futhi i-711 ilinda i-710 ukuze iqedele ukuthengiselana.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi isho nokuthi i-deadlock yenzeka kuluphi umugqa. Futhi lapha iqala ukuxaka.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Manje sibuyekeza 80 kuya 80.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi lapha kulapho ama-deadlocks aqala khona. I-710 ilinde impendulo evela ku-711, futhi i-711 ilinde i-710. Futhi lokhu ngeke kuphele kahle. Futhi ayikho indlela yokuphuma kulokhu. Futhi bayolindela impendulo komunye nomunye.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi izoqala nje ukubambezela yonke into. Futhi asikufuni lokho.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi i-Postgres inezindlela zokuqaphela uma lokhu kwenzeka. Futhi uma lokhu kwenzeka, uthola leli phutha. Futhi kusukela kulokhu kuyacaca ukuthi inqubo enjalo naleyo ilindele UKUKHIWA KWE-SHARE kusuka kwenye inqubo, okungukuthi, evinjwe inqubo ye-711. Futhi leyo nqubo yayilinde ukuthi kunikezwe UKUKHIWA KWESHARE ku-ID yokwenziwayo ethi naleyo futhi yavinjwa inqubo enjalo naleyo. Ngakho-ke, kunesimo esiqinile lapha.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ingabe kukhona izindlela ezintathu zokuvala? Kungenzeka yini? Yebo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Sifaka lezi zinombolo etafuleni. Sishintsha u-40 kuya ku-40, senza ukuvimba.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Sishintsha 60 kuya 61, 80 ukuze 81.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Bese sishintsha ama-80 bese siyakhuphuka!

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi i-714 manje ilinde i-715. I-716 ilindele i-715. Futhi akukho okungenziwa ngakho.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Abasekho abantu ababili lapha, sekunabantu abathathu lapha. Kukhona engikufuna kuwe, lo ufuna okuthile kumuntu wesithathu, kanti owesithathu ufuna okuthile kimi. Futhi sigcina sesilinde kathathu ngoba sonke silinde omunye umuntu ukuthi aqedele okufanele akwenze.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uPostgres uyazi ukuthi lokhu kwenzeka kuluphi umugqa. Futhi ngakho izokunikeza umlayezo olandelayo, okhombisa ukuthi unenkinga lapho okokufaka okuthathu kuvimbene. Futhi akukho mingcele lapha. Lokhu kungaba njalo lapho okufakiwe okungu-20 kuvimbene.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Inkinga elandelayo ingabuyekezwa.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Uma ilokhi ekhethekile ye-serialisable.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi sibuyela ku-719. Okukhiphayo kujwayelekile.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi ungachofoza ukuze wenze ukuthenga kusuka ku-serialization.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uyabona ukuthi manje usunohlobo oluhlukile lwesikhiya sase-SA - kusho ukuthi ungaphinda ulandelelaniswe.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho-ke sinohlobo olusha lokukhiya olubizwa nge-SARiadLock, okuwukhiye we-serial futhi okuvumela ukuthi ufake ama-serial.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi ungakwazi ukufaka izinkomba eziyingqayizivele.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Kuleli thebula sinezinkomba ezihlukile.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ngakho-ke uma ngifaka inombolo u-2 lapha, ngakho ngino-2. Kodwa phezulu impela, ngifaka omunye u-2 phakathi. Futhi uyabona ukuthi u-721 unokhiye okhethekile. Kodwa manje i-722 ilinde ukuthi i-721 iqede ukusebenza kwayo ngoba ayikwazi ukufaka u-2 kuze kube yazi ukuthi kuzokwenzekani ku-721.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uma senza i-subtransaction.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lapha sina 723.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uma silondoloza iphuzu bese silibuyekeza, bese sithola i-ID entsha yokwenziwe. Lena enye indlela yokuziphatha okudingeka uyiqaphele. Uma sibuyisela lokhu, i-ID yokwenziwe iyahamba. 724 uyahamba. Kodwa manje sinabangu-725.

Pho ngizama ukwenzani lapha? Ngizama ukukubonisa izibonelo zokukhiya okungajwayelekile ongase uwathole: noma ngabe izikhiya ezihlukanisekayo noma i-SAVEPOINT, lezi izinhlobo ezihlukene zokukhiya ezizovela kuthebula lokukhiya.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Lokhu ukudalwa kwezingidi ezisobala (ezisobala), ezino-pg_advisory_lock.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi uyabona ukuthi uhlobo lokuvimbela lufakwe kuhlu njengolululekayo. Futhi lapha ithi "advisory" ngokubomvu. Futhi ungakwazi ukuvimba ngesikhathi esifanayo nge-pg_advisory_unlock.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi ekugcineni, ngithanda ukukubonisa enye into ehlaba umxhwele. Ngizodala okunye ukubuka. Kodwa ngizojoyina ithebula le-pg_locks nethebula le-pg_stat_activity. Futhi kungani ngifuna ukwenza lokhu? Ngoba lokhu kuzongivumela ukuthi ngibheke futhi ngibone zonke izikhathi zamanje futhi ngibone kahle ukuthi hlobo luni lokukhiya abalulindile. Futhi lokhu kuyathakazelisa impela lapho sihlanganisa itafula lokukhiya kanye netafula lemibuzo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi lapha sakha pg_stat_view.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi sibuyekeza irowu ngayinye. Futhi lapha sibona 724. Bese sibuyekeza irowu yethu ibe kweyesithathu. Futhi ubonani lapha manje? Lezi yizicelo, i.e. ubona lonke uhlu lwezicelo ezisohlwini lwekholomu engakwesokunxele. Futhi-ke ngakwesokudla ungabona ama-blockages nokuthi badala ini. Futhi kungaba sobala kakhulu kuwena ukuze ungaphindi ubuyele kuseshini ngayinye njalo ubone ukuthi udinga ukuyijoyina noma cha. Bayasenzela thina.

Esinye isici esiwusizo kakhulu pg_blocking_pids. Cishe awukaze uzwe ngaye. Wenzani? Kusivumela ukuthi sitshele ukuthi kule seshini 11740 yimaphi ama-ID enqubo ethile ewalindile. Futhi uyabona ukuthi u-11740 ulinde u-724. Futhi u-724 uphezulu kakhulu. Futhi i-11306 iyi-ID yakho yenqubo. Empeleni, lo msebenzi udlula etafuleni lakho lokukhiya. Futhi ngiyazi ukuthi kuyinkimbinkimbi, kodwa uyakwazi ukukuqonda. Empeleni lo msebenzi udlula kuleli thebula lokukhiya futhi uzama ukuthola lapho le-ID yenqubo inikezwa izingidi elindile. Futhi izama ukuthola ukuthi iyiphi inqubo ye-ID inqubo elinde isikhiya enayo. Ngakho ungaqalisa lo msebenzi pg_blocking_pids.

Futhi lokhu kungaba usizo kakhulu. Sengeze lokhu kuphela enguqulweni engu-9.6, ngakho-ke lesi sici sineminyaka engu-5 kuphela ubudala, kodwa siwusizo kakhulu. Futhi okufanayo kuyasebenza esicelweni sesibili. Ibonisa ngqo lokho okudingeka sikubone.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Yilokhu ebengifuna ukukhuluma ngakho nawe. Futhi njengoba ngangilindele, sasisebenzisa sonke isikhathi sethu ngoba kwakunama-slides amaningi. Futhi amaslayidi ayatholakala ukuze alandwe. Ngithanda ukukubonga ngokuba lapha kwakho. Ngiyaqiniseka ukuthi uzoyijabulela yonke ingqungquthela, ngiyabonga kakhulu!

Imibuzo:

Isibonelo, uma ngizama ukubuyekeza imigqa, futhi iseshini yesibili izama ukususa lonke ithebula. Ngokuqonda kwami, kufanele kube khona into efana nelokhi yenhloso. Ingabe ikhona into enjalo ePostgres?

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Ake sibuyele emuva ekuqaleni. Ungase ukhumbule ukuthi uma wenza noma yini, isibonelo uma wenza KHETHA, sikhipha i-AccessShareLock. Futhi lokhu kuvimbela itafula ukuthi lingawi. Ngakho-ke uma, ngokwesibonelo, ufuna ukubuyekeza umugqa kuthebula noma ususe umugqa, khona-ke othile ngeke akwazi ukususa lonke ithebula ngesikhathi esifanayo ngoba ubambe le AccessShareLock phezu kwetafula lonke naphezu komugqa. Futhi uma usuqedile, bangakwazi ukukususa. Kodwa ngenkathi ushintsha ngokuqondile okuthile lapho, ngeke bakwazi ukukwenza.

Asikwenze futhi. Asiqhubekele esibonelweni sokususa. Futhi uyabona ukuthi kukhona ukukhiya okukhethekile kumugqa ongenhla kwetafula lonke.

Lokhu kuzobukeka njengokukhethekile, akunjalo?

Yebo, kubukeka sengathi. Ngiyakuqonda okhuluma ngakho. Uthi uma ngenza IKHETHA ngibe neShareExclusive bese ngiyenza ibe Row Exclusive, ingabe lokho kuba inkinga? Kodwa ngokumangalisayo lokhu akudali nkinga. Lokhu kubukeka njengokukhulisa idigri yokukhiya, kodwa empeleni nginokhiye ovimbela ukususwa. Futhi manje, uma ngenza lo khiye ube namandla kakhulu, usavimbela ukususwa. Ngakho-ke akufani nokuthi ngiyakhuphuka. Okusho ukuthi ivimbe ukuthi ingenzeki isezingeni eliphansi nayo, ngakho uma ngiphakamisa izinga layo isavimba ukuthi itafula lisuswe.

Ngiyakuqonda okhuluma ngakho. Alikho icala lokwenyuka kwesikhiya lapha, lapho uzama khona ukuyeka ilokhi eyodwa ukuze wethule eqinile. Lapha kuvele kukhuphule lokhu kuvikela kulo lonke ibhodi, ngakho-ke akubangeli ukungqubuzana. Kodwa umbuzo omuhle. Ngiyabonga kakhulu ngokubuza lokhu!

Yini okudingeka siyenze ukuze sigweme isimo esiqinile lapho sinezikhathi eziningi, inani elikhulu labasebenzisi?

I-Postgres ibona ngokuzenzakalelayo izimo ze-deadlock. Futhi izosusa ngokuzenzakalela eyodwa yamaseshini. Okuwukuphela kwendlela yokugwema ukuvinjwa okufile ukuvimba abantu ngokulandelana okufanayo. Ngakho-ke uma ubheka isicelo sakho, ngokuvamile isizathu se-deadlocks... Ake sicabange ukuthi ngifuna ukuvimba izinto ezimbili ezihlukene. Uhlelo lokusebenza olulodwa lukhiya ithebula 1, kanti olunye uhlelo lukhiya u-2, bese kuba nethebula 1. Futhi indlela elula yokugwema izikhiya iwukubheka uhlelo lwakho lokusebenza bese uzama ukwenza isiqiniseko sokuthi ukukhiya kwenzeka ngendlela efanayo kuzo zonke izinhlelo zokusebenza. Futhi lokhu kuvame ukuqeda i-80% yezinkinga, ngoba zonke izinhlobo zabantu zibhala lezi zicelo. Futhi uma uwavimba ngokulandelana okufanayo, awuhlangabezani nesimo sokungafiki.

Siyabonga kakhulu ngokusebenza kwakho! Ukhulume nge-vacuum egcwele futhi, uma ngiqonda kahle, i-vacuum ngokugcwele ihlanekezela ukuhleleka kwamarekhodi kusitoreji esihlukile, ngakho agcina amarekhodi amanje engashintshiwe. Kungani i-vacuum egcwele ithatha ukufinyelela kokukhiya okukhethekile futhi kungani ingqubuzana nemisebenzi yokubhala?

Umbuzo omuhle lowo. Isizathu ukuthi i-vacuum igcwele itafula. Futhi empeleni sakha inguqulo entsha yethebula. Futhi itafula lizoba lisha. Kuvela ukuthi lokhu kuzoba inguqulo entsha ngokuphelele yethebula. Futhi inkinga ukuthi uma senza lokhu, asifuni ukuthi abantu bafunde ngoba sidinga ukuthi babone itafula elisha. Futhi ngakho lokhu kuxhuma embuzweni odlule. Uma singafunda ngesikhathi esifanayo, besingeke sikwazi ukulihambisa futhi siqondise abantu etafuleni elisha. Kuzodingeka silinde ukuthi wonke umuntu aqedele ukufunda leli thebula, ngakho-ke kuyisimo esikhethekile sokukhiya.
Sisho nje ukuthi sikhiya kwasekuqaleni ngoba siyazi ukuthi ekugcineni sizodinga ingidi ekhethekile ukuze sihambise wonke umuntu ekhophi entsha. Ngakho singakwazi ukuxazulula lokhu. Futhi sikwenza ngale ndlela nge-indexing kanyekanye. Kodwa lokhu kunzima kakhulu ukukwenza. Futhi lokhu kuhlobene kakhulu nombuzo wakho wangaphambilini mayelana nokukhiya okukhethekile.

Kungenzeka yini ukwengeza isikhathi sokuvala sokuvala kuma-Postgres? Ku-Oracle, ngokwesibonelo, ngingakwazi ukubhala "khetha ukuze ubuyekeze" futhi ngilinde imizuzwana engu-50 ngaphambi kokubuyekeza. Bekukuhle kuhlelo lokusebenza. Kepha kuma-Postgres, ngidinga ukukwenza ngaso leso sikhathi futhi ngingalindi nhlobo, noma ngilinde kuze kube isikhathi esithile.

Yebo, ungakhetha ukuphela kwesikhathi kuzikhiya zakho, kuzikhiyi zakho. Ungaphinda ukhiphe umyalo othi akukho ndlela, ozo... uma ungakwazi ukuthola isikhiya ngokushesha. Ngakho-ke, kungaba ukuvala isikhathi sokukhiya noma enye into ezokuvumela ukuthi wenze lokhu. Lokhu akwenziwa ezingeni le-syntactic. Lokhu kwenziwa njengokuguquguquka kuseva. Ngezinye izikhathi lokhu akukwazi ukusetshenziswa.

Ungakwazi yini ukuvula isilayidi 75?

Yebo.

Ukuvula Isiphathi Se-Postgres Lock. Bruce Momjian

Futhi umbuzo wami uthi. Kungani zombili izinqubo zokuvuselela zilindele i-703?

Futhi lo ngumbuzo omkhulu. Angiqondi, ukuthi kungani uPostgres enza lokhu. Kodwa ngenkathi kwakhiwa i-703, yayilindele u-702. Futhi lapho u-704 no-705 bevela, kubonakala sengathi abazi ukuthi balindeleni ngoba akukho lutho okwamanje. Futhi i-Postgres yenza ngale ndlela: uma ungakwazi ukuthola ukukhiya, ibhala ukuthi "Yini iphuzu ekucubunguleni?", Ngoba usuvele ulinde othile. Ngakho-ke sizovele siyiyeke ilenge emoyeni, ngeke siyibuyekeze nhlobo. Kodwa kwenzekani lapha? Ngokushesha nje lapho i-702 iqeda inqubo futhi i-703 ithola ukukhiya kwayo, uhlelo lwabuyela emuva. Wathi manje sesinabantu ababili abalindile. Bese-ke masizibuyekeze ndawonye. Futhi ake sibonise ukuthi bobabili balindele.

Angazi ukuthi kungani uPostgres enza lokhu. Kodwa kukhona inkinga ebizwa f…. Kubonakala kimi ukuthi leli akulona igama ngesiRashiya. Yilapho wonke umuntu elinde isigodlo esisodwa, noma ngabe kuneziphathimandla ezingama-20 ezilinde le nqaba. Futhi ngokuzumayo bonke bavuka kanyekanye. Futhi wonke umuntu uqala ukuzama ukusabela. Kodwa uhlelo lwenza ukuthi wonke umuntu alinde u-703. Ngoba bonke balindile, futhi sizobafaka ngokushesha umugqa bonke. Futhi uma kuvela noma yisiphi esinye isicelo esisha esenziwe ngemva kwalokhu, isibonelo, 707, khona-ke kuzoba nobuze futhi.

Futhi kimina kubukeka sengathi lokhu kwenziwa ukuze sithi kulesi sigaba i-702 ilinde i-703, futhi bonke abaza ngemuva kwalokho ngeke babe nokungena kulo mkhakha. Kodwa ngokushesha nje lapho isikhonzi sokuqala sihamba, bonke labo ababelindile ngaleso sikhathi ngaphambi kokuvuselelwa bathola ithokheni efanayo. Ngakho-ke ngicabanga ukuthi lokhu kwenziwa ukuze sikwazi ukucubungula ngokulandelana ukuze zi-odwe kahle.

Ngangihlale ngibheka lokhu njengento engavamile. Ngoba lapha, ngokwesibonelo, asizifaki nhlobo ohlwini. Kodwa kimi kubonakala sengathi njalo lapho sinikeza ingidi entsha, sibheka bonke labo abaphezu kwenqubo yokulinda. Bese sibalandela bonke. Futhi-ke noma yimaphi amasha angenayo angena kuphela kulayini lapho umuntu olandelayo eseqedile ukucutshungulwa. Umbuzo omuhle kakhulu. Ngiyabonga kakhulu ngombuzo wakho!

Kimi kubonakala sengathi kunengqondo kakhulu lapho i-705 ilindele i-704.

Kodwa inkinga lapha yilokhu okulandelayo. Ngobuchwepheshe, ungavusa eyodwa noma enye. Futhi ngakho sizovuka omunye noma omunye. Kodwa kwenzekani ohlelweni? Ungabona ukuthi u-703 phezulu uvimbe kanjani eyakhe i-ID yokwenziwayo. Le yindlela i-Postgres esebenza ngayo. Futhi i-703 ivinjwe i-ID yayo yokwenziwayo, ngakho-ke uma umuntu efuna ukulinda, uzolinda u-703. Futhi, empeleni, i-703 iqeda. Futhi kuphela ngemva kokuphothulwa kwayo lapho enye yezinqubo ivuka. Futhi asazi ukuthi le nqubo izoba yini ngempela. Bese sicubungula yonke into kancane kancane. Kodwa akucaci ukuthi iyiphi inqubo evuswa kuqala, ngoba kungaba noma iyiphi yalezi zinqubo. Empeleni, besinomhleli owathi manje singavusa noma yiziphi zalezi zinqubo. Sivele sikhethe eyodwa ngokungahleliwe. Ngakho bobabili badinga ukuqashelwa ngoba singabavusa bobabili.

Futhi inkinga ukuthi sine-CP-infinity. Ngakho-ke, maningi amathuba okuthi singavuka kamuva. Futhi uma, ngokwesibonelo, sivusa owakamuva, sizolinda lowo osanda kuthola i-block, ngakho-ke asinqumi ukuthi ubani ozovuswa kuqala. Simane sidale isimo esinjalo, futhi isistimu izobavusa ngokungahleliwe.

Zikhona izihloko mayelana nezingidi ngu-Egor Rogov. Bheka, nazo ziyathakazelisa futhi ziwusizo. Isihloko, kunjalo, siyinkimbinkimbi kakhulu. Ngiyabonga kakhulu, Bruce!

Source: www.habr.com

Engeza amazwana