Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Chinyorwa chehurukuro yaBruce Momjian ya2020 "Kuvhura iyo Postgres Lock Manager".

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

(Cherechedza: Yese mibvunzo yeSQL kubva kumasiraidhi inogona kuwanikwa kubva pane iyi link: http://momjian.us/main/writings/pgsql/locking.sql)

Mhoro! Zvakanaka kuva muno muRussia zvakare. Ndine urombo kuti handina kukwanisa kuuya gore rakapera, asi gore rino ini naIvan tine zvirongwa zvikuru. Ndinovimba kuva pano kakawanda. Ndinoda kuuya kuRussia. Ndichashanyira Tyumen, Tver. Ndinofara zvikuru kuti ndichakwanisa kushanyira maguta aya.

Ini ndinonzi Bruce Momjian. Ndinoshanda ku EnterpriseDB uye ndanga ndichishanda nePostgres kweanopfuura makore makumi maviri nematatu. Ndinogara kuPhiladelphia, USA. Ndinofamba mazuva anenge 23 pagore. Uye ini ndinoenda kumisangano ye90. Zvangu Webhusaiti, ine masiraidhi andichakuratidzai zvino. Naizvozvo, mushure memusangano unogona kuzvirodha kubva pawebhusaiti yangu. Iinewo mharidzo dzinenge makumi matatu. Kunewo mavhidhiyo uye nhamba huru yezvinyorwa zveblogi, zvinopfuura 30. Iyi inyanzvi inodzidzisa ruzivo. Uye kana iwe uchifarira chinyorwa ichi, saka ndinokukoka iwe kuti ushandise.

Ndakambove mudzidzisi, professor ndisati ndatanga kushanda nePostgres. Uye ndinofara kuti ndava kukwanisa kukuudzai zvandava kuda kukuudzai. Iyi ndiyo imwe yemharidzo dzangu dzinonakidza. Uye mharidzo iyi ine masiraidhi zana negumi. Tichatanga kutaura nezvinhu zviri nyore, uye pakupera chirevo chinozowedzera kuoma, uye chichava chakaoma.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Iyi ihurukuro isingafadzi. Kuvhara haisi iyo inonyanya kufarirwa nyaya. Tinoda kuti izvi zvinyangarike pane imwe nzvimbo. Zvakafanana nekuenda kuna chiremba wemazino.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

  1. Kukiya idambudziko kune vanhu vazhinji vanoshanda mumadhatabhesi uye vane maitiro akawanda anomhanya panguva imwe chete. Vanoda kuvharirwa. Ndiko kuti, nhasi ini ndichakupa ruzivo rwekutanga pakuvhara.
  2. Transaction IDs. Ichi chikamu chinofinha chemharidzo, asi dzinofanirwa kunzwisiswa.
  3. Tevere tichataura nezvemhando dzekuvharira. Ichi chikamu chemagetsi.
  4. Uye pasi apa tichapa mimwe mienzaniso yekuvhara. Uye zvichava zvakaoma kunzwisisa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Totaura zvekuvharisa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Mazwi edu akaoma kunzwisisa. Vangani venyu munoziva kunobva ndima iyi? Vanhu vaviri. Izvi zvinobva kumutambo unonzi Colossal Cave Adventure. Yakanga iri text-based computer game muma80s, ndinofunga. Imomo waifanira kupinda mubako, mulabyrinth, uye zvinyorwa zvakachinjwa, asi zviri mukati zvaida kufanana nguva dzose. Ndiko kurangarira kwandinoita mutambo uyu.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye pano tinoona zita rekiyi dzakauya kwatiri kubva kuOracle. Isu tinoashandisa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Apa tinoona mashoko anondivhiringa. Semuenzaniso, SHARE UPDATE ECXLUSIVE. Next SHARE RAW ECXLUSIVE. Kutaura chokwadi, aya mazita haana kunyatsojeka. Tichaedza kufunga nezvazvo zvakadzama. Mamwe ane izwi rekuti β€œgova”, rinoreva kupatsanura. Mamwe ane izwi rekuti "exclusive". Mamwe ane mazwi maviri aya. Ndoda kutanga nema lock aya anoshanda sei.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye shoko rokuti "kuwana" rinokoshawo zvikuru. Uye mazwi ekuti "mutsara" itambo. Ndiko, kugovera kugovera, kugovera mitsara.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Imwe nyaya inoda kunzwisiswa muPostgres, yandisingazokwanisi kuvhara muhurukuro yangu, ndeye MVCC. Ndine mharidzo yakaparadzana pane iyi nyaya pawebhusaiti yangu. Uye kana iwe uchifunga kuti mharidzo iyi yakaoma, MVCC ingangove yakanyanya kundiomera. Uye kana iwe uchifarira, unogona kuiona pane webhusaiti. Unogona kuona vhidhiyo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Chimwe chinhu chatinoda kunzwisisa matransaction IDs. Zvizhinji zvekutengesa hazvigone kushanda pasina zviziviso zvakasiyana. Uye pano tine tsananguro yekuti kutengeserana chii. Postgres ine maviri ekutengesa manhamba masisitimu. Ndinoziva iyi haisi mhinduro yakanaka.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Zvakare ramba uchifunga kuti masiraidhi achanyanya kuoma kunzwisisa, saka izvo zvinoratidzwa mutsvuku ndizvo zvaunoda kuterera.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

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

Ngationei. Nhamba yekutengeserana inotaridzwa mutsvuku. Iyo SELECT pg_back basa inoratidzwa pano. Inodzosa transaction yangu uye transaction ID.

Chimwezve chinhu, kana iwe uchida iyi mharidzo uye uchida kuimhanyisa pane yako dhatabhesi, saka unogona kuenda kune iyi link mupingi uye dhawunirodha SQL yemharidzo iyi. Uye iwe unogona kungoimhanyisa muPSQL yako uye mharidzo yese ichave pachiratidziro chako nekukurumidza. Haizove nemaruva, asi zvirinani tinogona kuiona.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Muchiitiko ichi tinoona transaction ID. Iyi ndiyo nhamba yatakamupa. Uye kune imwe mhando yekutengeserana ID muPostgres, inonzi chaiyo transaction ID

Uye tinofanira kunzwisisa izvi. Izvi zvakanyanya kukosha, zvikasadaro isu hatizokwanisa kunzwisisa kukiya muPostgres.

A virtual transaction ID iID yetransaction iyo isina maitiro anoramba aripo. Semuyenzaniso, kana ndikamhanya SELECT command, saka ini ndingango shandura dhatabhesi, ini handizokiya chero chinhu. Saka kana isu tichimhanya SARUDZO yakapfava, isu hatipe iyo kutengeserana ID inopfuurira. Tinongomupa virtual ID ikoko.

Uye izvi zvinovandudza kuita kwePostgres, inovandudza kuchenesa, saka iyo chaiyo transaction ID ine nhamba mbiri. Nhamba yekutanga pamberi pe slash ndeye backend ID. Uye kurudyi tinongoona counter.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Naizvozvo, kana ndikamhanyisa chikumbiro, inoti iyo backend ID ndeye 2.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kana ndikamhanyisa nhevedzano yekutengeserana kwakadaro, saka tinoona kuti iyo counter inowedzera pese pandinomhanyisa mubvunzo. Semuenzaniso, pandinomhanyisa mubvunzo 2/10, 2/11, 2/12, nezvimwe.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Ramba uchifunga kuti pane makoramu maviri pano. Kuruboshwe tinoona iyo chaiyo yekutengesa ID - 2/12. Uye kurudyi isu tine zvachose transaction ID. Uye munda uyu hauna chinhu. Uye kutengeserana uku hakugadzirise dhatabhesi. Saka ini handizvipe chigarire chekutengeserana ID.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Pandinongomhanyisa iwo analyze command ((ANALYZE)), iwo mubvunzo mumwechete unondipa chisingaperi transaction ID. Tarisa kuti izvi zvachinja sei kwatiri. Ndakanga ndisina ID iyi kare, asi ikozvino ndava nayo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Saka hechino chimwe chikumbiro, chimwe chekutengeserana. Iyo chaiyo transaction nhamba ndeye 2/13. Uye kana ndikakumbira chitupa chekutengeserana chinoramba chiripo, ipapo pandinomhanyisa mubvunzo, ndinoiwana.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Saka, imwe nguva zvakare. Isu tine chaiyo transaction ID uye inoshingirira transaction ID. Ingonzwisisa pfungwa iyi kuti unzwisise maitiro ePostgres.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Tinopfuurira kune chikamu chechitatu. Pano isu tichangofamba nemhando dzakasiyana dzekiyi muPostgres. Hazvinakidze zvakanyanya. Chikamu chekupedzisira chichava chinonakidza zvikuru. Asi tinofanira kufunga zvinhu zvinokosha, nokuti kana tikasadaro hatizonzwisisi zvichazoitika.

Tichapfuura nechikamu chino, tichatarisa mhando yega yega yekukiya. Uye ini ndichakuratidza mienzaniso yekuti akaiswa sei, anoshanda sei, ini ndichakuratidza mimwe mibvunzo yaunogona kushandisa kuona kuti kukiya kunoshanda sei muPostgres.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Kugadzira mubvunzo uye kuona zviri kuitika muPostgres, isu tinofanirwa kuburitsa mubvunzo mukutarisa system. Muchiitiko ichi, pg_lock inoratidzirwa mutsvuku. Pg_lock itafura yehurongwa inotitaurira kuti makiyi ari kushandiswa sei muPostgres.

Nekudaro, zvakandiomera kwazvo kuti ndikuratidze pg_lock yega nekuti yakaoma. Saka ini ndakagadzira maonero anoratidza pg_locks. Uye inondiitirawo rimwe basa rinonditendera kuti ndinzwisise zviri nani. Ndiko kuti, haisanganisi zvivharo zvangu, chikamu changu, nezvimwewo. Ingori SQL yakajairwa uye inokutendera kuti uratidze zvirinani zviri kuitika.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Rimwe dambudziko nderekuti maonero aya akafara kwazvo, saka ndinofanira kugadzira yechipiri - lockview2.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian Uye inondiratidza mamwe makoramu kubva patafura. Uye imwe inondiratidza mamwe makoramu. Izvi zvakaoma, saka ndakaedza kuzviratidza zviri nyore sezvinobvira.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Saka takagadzira tafura inonzi Lockdemo. Uye takagadzira mutsara mumwe ipapo. Iyi ndiyo tafura yedu yemuenzaniso. Uye tichange tichigadzira zvikamu zvekungokuratidza mienzaniso yekiyi.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Saka, mutsara mumwe, imwe column. Mhando yekutanga yekiyi inonzi ACCESS SHARE. Uku ndiko kuvharika kudiki. Izvi zvinoreva kuti hazvipesane nemamwe makiyi.

Uye kana tichida kutsanangura zvakajeka kukiyiwa, tinomhanya murairo we "lock table". Uye zvichavapachena kuvharira, kureva muACCESS SHARE modhi tinotangisa tafura yekukiya. Uye kana ndikamhanya PSQL kumashure, ndozotanga chikamu chechipiri kubva muchikamu changu chekutanga nenzira iyi. Kureva kuti ndichaita sei pano? Ndinoenda kune imwe musangano ndoiudza "ndiratidze lockview yechikumbiro ichi." Uye pano ndine AccessShareLock mune iyi tafura. Izvi ndizvo chaizvo zvandakakumbira. Uye anoti block yakapihwa. Very simple.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uyezve, kana tikatarisa pachikamu chechipiri, saka hapana chinhu ipapo. Havana chinhu.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kana ndikamhanyisa murairo we "SELECT", saka iyi ndiyo nzira yakajeka (yakajeka) yekukumbira AccessShareLock. Saka ndinosunungura tafura yangu ndomhanyisa mubvunzo uye mubvunzo unodzosa mitsetse yakawanda. Uye mune imwe yemitsetse tinoona AccessShareLock. Saka, SARUDZA inodaidza AccessShareLock patafura. Uye haipokane nechero chero chinhu nekuti ndeye yakaderera-lero kiyi.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Ko kana ndikamhanya SELECT uye ndine matafura matatu akasiyana? Pakutanga ndaingomhanyisa tafura imwe chete, ikozvino ndiri kumhanya matatu: pg_class, pg_namespace uye pg_attribute.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye zvino pandinotarisa mubvunzo, ndinoona 9 AccessShareLocks mumatafura matatu. Sei? Matafura matatu anoratidzwa mubhuruu: pg_attribute, pg_class, pg_namespace. Asi iwe unogona zvakare kuona kuti ese ma index anotsanangurwa kuburikidza nematafura aya zvakare ane AccessShareLock.

Uye iyi ivhavha iyo isingapesane nevamwe. Uye zvese zvainoita zvinongotitadzisa kuseta tafura isu tichisarudza. Zvine musoro. Ndiko kuti, kana tikasarudza tafura, inonyangarika panguva iyoyo, saka izvi hazvina kunaka, saka AccessShare ndeye yakaderera level yekuvhara iyo inotiudza "usadonhedze iyi tafura ini ndichishanda". Chaizvoizvo, ndizvo zvega zvaanoita.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

ROW SHARE - Kiyi iyi yakati siyanei.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Ngatitorei muenzaniso. SARUDZA ROW SHARE nzira yekukiya mutsara wega wega. Nenzira iyi hapana anogona kudzidzima kana kudzichinja isu tichizviona.

Kuvhura iyo Postgres Lock Maneja. Bruce MomjianSaka SHARE LOCK inoita sei? Isu tinoona kuti transaction ID ndeye 681 ye SELECT. Uye izvi zvinonakidza. Chii chaitika apa? Nguva yekutanga yatinoona nhamba iri mu "Lock" munda. Isu tinotora iyo transaction ID uye inoti iri kuivharira mune yakasarudzika mode. Zvese zvazvinoita ndezvekuti ini ndine mutsara wakakiyiwa nehunyanzvi pane imwe nzvimbo mutafura. Asi haatauri kuti papi chaipo. Tichatarisa izvi zvakadzama gare gare.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Apa tinoti kukiya kunoshandiswa nesu.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Saka, kiyi yakasarudzika inotaura pachena kuti ndeyega. Uye zvakare kana iwe ukadzima mutsara mutafura ino, saka izvi ndizvo zvichaitika, sezvauri kuona.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

SHARE EXCLUSIVE ikiyi refu.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uyu ndiwo (ANALYZE) analyzer murairo uchashandiswa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

SHARE LOCK - unogona kukiya zvakajeka mune yekugovana modhi.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Iwe unogona zvakare kugadzira yakasarudzika index. Uye ipapo iwe unogona kuona SHARE LOCK, icho chiri chikamu chavo. Uye inokiya tafura yoisa SHARE LOCK pairi.

Nekutadza, SHARE LOCK patafura zvinoreva kuti vamwe vanhu vanogona kuverenga tafura, asi hapana anogona kuigadzirisa. Uye izvi ndizvo chaizvo zvinoitika kana iwe ukagadzira yakasarudzika index.

Kana ndikagadzira yakasarudzika panguva imwe chete indekisi, ipapo ini ndichave nerudzi rwakasiyana rwekuvhara nekuti, sezvaunorangarira, kushandisa panguva imwe chete indexes kunoderedza kukiya kunodiwa. Uye kana ndikashandisa yakajairwa kukiya, yakajairika index, saka ini ndichadzivirira kunyora kune tafura index ichiri kugadzirwa. Kana ndikashandisa indekisi panguva imwe chete, saka ndinofanira kushandisa rudzi rwakasiyana rwekuvhara.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

SHARE ROW EXCLUSIVE - zvakare inogona kuiswa zvakajeka (zvakajeka).

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Kana kuti tinogona kugadzira mutemo, kureva, kutora imwe nyaya iyo ichashandiswa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

KUSVIRA kukiya zvinoreva kuti hapana mumwe munhu anogona kuchinja tafura.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Pano tinoona marudzi akasiyana-siyana emakiyi.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

ACCESS EXCLUSIVE, semuenzaniso, murairo unovharira. Somuenzaniso, kana uchida CLUSTER table, zvino izvi zvichareva kuti hapana achakwanisa kunyora ipapo. Uye inokiya kwete chete tafura pachayo, asiwo indexes.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Iri ndiro peji rechipiri reACCESS EXCLUSIVE kuvharira, kwatinoona chaizvo zvarinovharira mutafura. Inokiya mitsara yetafura yega yega, iyo inonakidza chaizvo.

Ndiwo ruzivo rwese rwandaida kupa. Takataura nezve makiyi, nezve transaction IDs, takataura nezve virtual transaction IDs, nezve zvachose transaction ID.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye ikozvino tichapfuura nemimwe inovharira mienzaniso. Ichi ndicho chikamu chinonakidza zvikuru. Tichatarisa nyaya dzinonakidza zvikuru. Uye chinangwa changu mumharidzo iyi ndechekukupa kunzwisisa kuri nani kweizvo Postgres ari kunyatso kuita kana ichiedza kuvhara zvimwe zvinhu. Ndinofunga kuti akanaka kwazvo pakuvharisa zvikamu.

Ngatitarisei mimwe mienzaniso chaiyo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Tichatanga nematafura uye mutsara mumwe mutafura. Pandinoisa chimwe chinhu ndine ExclusiveLock, Transaction ID uye ExclusiveLock inoratidzwa patafura.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Chii chinoitika kana ndikaisa mimwe mitsetse miviri? Uye zvino tafura yedu ine mitsara mitatu. Uye ndakaisa mutsara mumwe ndikawana uyu sechipo. Uye kana ndikaisa mimwe mitsetse miviri, chii chinoshamisa pamusoro pazvo? Pane chinhu chinoshamisa apa nekuti ndawedzera mitsara mitatu patafura iyi, asi ndichine mitsara miviri mutafura yekukiya. Uye aya ndiwo maitiro akakosha ePostgres.

Vanhu vazhinji vanofunga kuti kana mune dhatabhesi iwe ukakiya mitsara zana, saka iwe unozofanirwa kugadzira zana zvekuvhara. Kana ndikavharira mitsara 100 kamwechete, ini ndichada 100 mibvunzo yakadaro. Uye kana ndichida miriyoni kana bhiriyoni kuti ndivhare. Asi kana tikaita izvi, hazvishande zvakanyanya. Kana iwe wakashandisa sisitimu inogadzira inovharira zvinyorwa kune yega yega mutsara, saka unogona kuona kuti izvi zvakaoma. Nekuti iwe unofanirwa kukurumidza kutsanangura tafura yekukiya iyo inogona kufashukira, asi Postgres haaite izvozvo.

Uye chakanyanya kukosha nezveiyi siraidhi ndechekuti inonyatso ratidza kuti pane imwe sisitimu inomhanya mukati meMVCC inokiya mitsara yega yega. Saka kana iwe ukakiya mabhiriyoni emitsara, Postgres haigadziri bhiriyoni yakaparadzana yekuvhara mirairo. Uye izvi zvine mhedzisiro yakanaka kwazvo pakubudirira.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Zvakadini nekuvandudzwa? Ndiri kuvandudza mutsara izvozvi, uye iwe unogona kuona kuti yaita maoparesheni maviri akasiyana kamwechete. Yakavhara tafura panguva imwe chete, asi yakavharawo index. Uye aifanira kukiya index nekuti pane zvimhingamipinyi zvakasarudzika patafura iyi. Uye isu tinoda kuve nechokwadi chekuti hapana anoishandura, saka tinoivharira.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Chii chinoitika kana ndichida kugadzirisa mitsara miviri? Uye tinoona kuti anoita nenzira imwe cheteyo. Isu tinoita zvakapetwa kaviri zvigadziriso, asi chaizvo nhamba yakafanana yekiyi mitsetse.

Kana iwe uchinetseka kuti Postgres inoita sei izvi, unozofanira kuteerera kuhurukuro dzangu paMVCC kuti udzidze kuti Postgres mukati inomaka sei mitsara iyi yainochinja. Uye Postgres ine nzira yaanoita nayo izvi, asi haiite patafura yekukiya nhanho, inozviita padanho rakaderera uye rinonyanya kushanda.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Ko kana ndichida kudzima chimwe chinhu? Kana ndikadzima, semuenzaniso, mutsara mumwe uye ndichine angu maviri ekuvharira ekuisa, uye kunyangwe ndikada kudzima ese, achiripo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye, semuenzaniso, ini ndinoda kuisa churu chemitsetse, uyezve kudzima kana kuwedzera chiuru mitsetse, ipapo iyo mitsetse yega yega yandinoisa kana kuchinja, hairekodzwi pano. Izvo zvakanyorwa pamwero wakaderera mukati meiyo nhevedzano pachayo. Uye panguva yekutaura kweMVCC ndakataura pamusoro peizvi zvakadzama. Asi zvakanyanya kukosha paunenge uchiongorora makiyi kuti uve nechokwadi chekuti uri kukiya padanho retafura uye kuti hausi kuona kuti mitsara yega yega iri kurekodhwa sei pano.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Zvakadini nekuvhara pachena?

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Kana ndikadzvanya refresh, ndine mitsetse miviri yakakiiwa. Uye kana ndikavasarudza vese uye nekudzvanya "update kwese," saka ini ndichine maviri ekuvhara marekodhi.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Isu hatigadziri marekodhi akaparadzana ega ega mutsara. Nekuti ipapo chibereko chinodonha, panogona kunge paine yakawandisa. Uye tingazviwana tiri mumamiriro ezvinhu asingafadzi.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye chinhu chimwe chete, kana tikagovana, tinogona kuzviita zvese makumi matatu.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Isu tinodzosera tafura yedu, bvisa zvese, tozoisa mutsara mumwe zvakare.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Humwe hunhu hwaunoona muPostgres hunonyanyo zivikanwa uye hunodiwa maitiro ndewekuti iwe unogona kugadzirisa kana kusarudza. Uye iwe unogona kuita izvi panguva imwe chete. Uye sarudza haivharidzi update uye chinhu chimwe chete munzira yakatarisana. Tinoudza muverengi kuti asavhare munyori, uye munyori haana kuvhara muverengi.

Ndichakuratidza muenzaniso weizvi. Ndichasarudza manje. Tinobva taita INSERT. Uye ipapo iwe unogona kuona - 694. Unogona kuona ID yekutengeserana yakaita iyi kuiswa. Uye ndiwo mashandiro azvinoita.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kana ndikatarisa ID yangu yekumashure ikozvino, yave 695.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye ndiri kuona 695 ichionekwa patafura yangu.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kana ndikagadziridza pano seizvi, ndozowana imwe nyaya. Muchiitiko ichi, 695 ivhavha yega, uye update ine maitiro akafanana, asi hapana kupesana pakati pavo, izvo zvisingawanzoitiki.

Uye iwe unogona kuona kuti kumusoro kune ShareLock, uye pazasi ndeye ExclusiveLock. Uye zvese zviri zviviri kutengeserana zvakabudirira.

Uye iwe unofanirwa kuteerera hurukuro yangu paMVCC kuti unzwisise kuti izvi zvinoitika sei. Asi uyu mufananidzo wekuti unogona kuzviita panguva imwe chete, kureva kuti ita SARUDZO uye UPDATE panguva imwe chete.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Ngatisete patsva uye tiite imwezve oparesheni.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Kana iwe ukaedza kumhanyisa maviri ekugadzirisa panguva imwe chete pamutsara mumwe chete, inovharika. Uye rangarirai, ndati muverengi haavharidzi munyori, uye munyori haavharidzi muverengi, asi munyori anovharira mumwe munyori. Ndiko kuti, hatigone kuita kuti vanhu vaviri vagadzirise mutsara mumwechete panguva imwe chete. Unofanira kumirira kusvikira mumwe wavo apedza.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kuitira kuenzanisira izvi, ini ndichatarisa iyo Lockdemo tafura. Uye isu tichatarisa pamutsara mumwe. Pakutengeserana 698.

Isu takavandudza izvi kusvika ku2. 699 ndiyo yekutanga update. Uye yakabudirira kana kuti iri mukumirira kutengeserana uye yakamirira kuti isu tisimbise kana kukanzura.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Asi tarisa chimwe chinhu - 2/51 ndiyo yedu yekutanga kutengeserana, chikamu chedu chekutanga. 3/112 ndicho chikumbiro chechipiri chakabva kumusoro chakashandura kukosha ikoko kuita 3. Uye kana ukaona, iyo yepamusoro yakazvikiyira, inova 699. Asi 3/112 haana kupa kiyi. Iyo Lock_mode column inotaura zvayakamirira. Inotarisira 699. Uye kana ukatarisa pane 699, iri pamusoro. Uye chikamu chekutanga chakaitei? Akagadzira kiyi yakasarudzika pane yake yekutengeserana ID. Aya ndiwo maitiro anoita Postgres. Iyo inovharira ID yayo yekutengeserana. Uye kana iwe uchida kumirira kuti mumwe munhu asimbise kana kukanzura, saka unofanirwa kumirira paine kutengeserana kwakamirira. Uye ndosaka tichigona kuona mutsara unoshamisa.

Ngatitarisei zvakare. Kuruboshwe tinoona yedu yekugadzirisa ID. Muchikamu chechipiri tinoona yedu chaiyo transaction ID, uye mune yechitatu tinoona lock_type. Izvi zvinorevei? Chaizvoizvo zvazvinotaura ndezvekuti iri kuvharira ID yekutengesa. Asi cherechedza kuti mitsetse yose iri pazasi inoti hukama. Uye saka une mhando mbiri dzekiyi patafura. Pane chivharo chehukama. Uye ipapo pane transactionid blocking, kwaunovharira wega, zvinova ndizvo chaizvo zvinoitika pamutsetse wekutanga kana pazasi chaipo, pane transactionid, kwatinomirira 699 kuti ipedze kushanda kwayo.

Ndichaona zvichaitika pano. Uye pano zvinhu zviviri zvinoitika panguva imwe chete. Iwe uri kutarisa kukiyi yekutengeserana ID mumutsara wekutanga unozvivharira wega. Uye anozvivharira kuti vanhu vamirire.

Kana iwe ukatarisa mutsara wechitanhatu, ndiyo yekupinda yakafanana neyekutanga. Uye saka transaction 6 yakavharwa. 699 zvakare inozvivharira wega. Uye ipapo mumutsara wepasi uchaona kuti takamirira 700 kuti ipedze kushanda kwayo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye mu lock_type, tuple unoona manhamba.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Unogona kuona kuti 0/10. Uye iyi ndiyo nhamba yepeji, uye zvakare kugadzirisa kweiyi mutsara.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye iwe unoona yave 0/11 patinovandudza.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Asi muchokwadi ndeye 0/10, nekuti pane kumirira kwekuvhiya uku. Tine mukana wekuona kuti iyi ndiyo nhevedzano yandakamirira kusimbisa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Kana tangozvisimbisa uye nekudzvanya kuzvipira, uye kana iyo update yapera, izvi ndizvo zvatinowana zvakare. Transaction 700 ndiyo chete kukiya, haimirire mumwe munhu nekuti yakazvipira. Inongomirira kuti kutengeserana kupedze. Kana 699 yapera, isu hatimiriri chero chinhu zvakare. Uye ikozvino transaction 700 inotaura kuti zvese zvakanaka, kuti ine makiyi ese ainoda pamatafura ese anotenderwa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kuita kuti chinhu ichi chiwedzere kuoma, tinogadzira imwe maonero, ayo panguva ino achatipa hutongi. Handitarisiri kuti unzwisise chikumbiro ichi. Asi izvi zvichatipa maonero akajeka ezviri kuitika.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uyu ndiwo maonero ekudzokorora anewo chimwe chikamu. Uye zvino inounza zvinhu zvose zvakare pamwe chete. Ngatishandisei izvi.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Ko kana tikaita matatu panguva imwe chete zvigadziriso totaura kuti mutsara wava matatu. Uye isu tichachinja 3 kusvika 4.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye pano tinoona 4. Uye transaction ID 702.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uyezve ndichachinja 4 kusvika 5. Uye 5 kusvika 6, uye 6 kusvika 7. Uye ndichaisa mumutsara vanhu vakati wandei vachange vakamirira kuti kutengeserana uku kupere.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye zvose zvinova pachena. Ndeupi mutsara wekutanga? Iyi ndiyo 702. Iyi ndiyo ID yekutengeserana iyo yakatanga kuisa kukosha uku. Chii chakanyorwa mubhuku rangu Rakabvumirwa? Ndine mamakisi f. Aya ndiwo magadzirirwo angu ayo (5, 6, 7) haagone kubvumidzwa nekuti takamirira transaction ID 702 kuti ipere. Ikoko tine transaction ID blocking. Uye izvi zvinoguma 5 transactional ID kukiya.

Uye kana ukatarisa 704, pa705, hapana chakanyorwa ipapo, nokuti havazivi zviri kuitika. Vanongonyora kuti havazivi zviri kuitika. Uye ivo vachangorara nekuti vakamirira kuti munhu apedze uye amutswa kana pane mukana wekuchinja mitsetse.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Izvi ndizvo zvazvinoita. Zviri pachena kuti vese vakamirira mutsara wechigumi nembiri.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Izvi ndizvo zvataona pano. Heino 0/12.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Saka kana kutengeserana kwekutanga kwabvumidzwa, unogona kuona pano kuti hierarchy inoshanda sei. Uye zvino zvinhu zvose zvinova pachena. Vose vanova vakachena. Uye vachiri kutomirira.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Hezvino zviri kuitika. 702 vanoita. Uye zvino 703 inowana mutsara uyu wekiyi, uye ipapo 704 inotanga kumirira 703 kuti iite. Uye iyo 705 yakamirira izvi zvakare. Uye kana izvi zvose zvapera, vanozvichenesa vamene. Uye ndinoda kuratidza kuti munhu wese ari mumutsara. Uye izvi zvakafanana nemamiriro ezvinhu mumotokari yemotokari apo munhu wose akamirira motokari yekutanga. Motokari yekutanga inomira uye munhu wese anomira mumutsetse wakareba. Ipapo inofamba, ipapo mota inotevera inogona kutyaira kumberi uye kutora block yayo, nezvimwe.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kana izvi zvaisaita sekunge zvakaoma kwauri, saka ikozvino tichataura newe nezve deadlocks. Handizivi kuti ndiani wenyu akasangana navo. Iri idambudziko rakajairika mune database system. Asi madhiri ndeapo imwe sesheni yakamirira imwe chikamu kuti iite chimwe chinhu. Uye panguva ino chimwe chikamu chakamirira chikamu chekutanga kuita chimwe chinhu.

Uye, somuenzaniso, kana Ivan akati: β€œNdipe chimwe chinhu,” uye ini ndikati: β€œAiwa, ndichakupa bedzi kana ukandipa chimwe chinhu.” Uye anoti, "Kwete, handikupe iwe kana ukasandipa." Uye isu tinopedzisira tave mumamiriro ekufanotaura. Ndine chokwadi chokuti Ivan haazoiti izvi, asi iwe unonzwisisa zvinoreva kuti tine vanhu vaviri vanoda kuwana chimwe chinhu uye havana kugadzirira kuchipa kusvikira mumwe munhu avapa zvavanoda. Uye hapana mhinduro.

Uye zvakanyanya, database yako inoda kuona izvi. Uye ipapo iwe unofanirwa kudzima kana kuvhara imwe yezvikamu, nekuti zvikasadaro ivo vacharamba varipo nekusingaperi. Uye isu tinozviona mumadhatabhesi, tinozviona mumasisitimu anoshanda. Uye munzvimbo dzese dzatine maitiro akafanana, izvi zvinogona kuitika.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye zvino tichaisa ma deadlocks maviri. Tichaisa makumi mashanu ne50. Mumutsara wekutanga, ndichavandudza kubva pa80 kusvika pa50. Ndichawana transaction number 50.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye ipapo ini ndichachinja 80 kusvika 81, uye 50 kusvika 51.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye izvi ndizvo zvazvichaita. Uye saka 710 ine mutsara wakavharwa, uye 711 yakamirira kusimbiswa. Izvi takazviona patakagadziridza. 710 ndiye muridzi wenhevedzano yedu. Uye 711 inomirira 710 kuti ipedze kutengeserana.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye inototaura kuti ndeipi mutsara unoitika. Uye apa ndipo panotanga kushamisa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Iye zvino tiri kuvandudza 80 kusvika ku80.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye apa ndipo panotangira madhiri. 710 yakamirira mhinduro kubva ku711, uye 711 yakamirira 710. Uye izvi hazvizoperi zvakanaka. Uye hapana nzira yekubuda nayo. Uye vachatarisira mhinduro kubva kune mumwe nemumwe.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye zvinongotanga kunonoka zvese. Uye hatidi izvozvo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye Postgres ine nzira dzekuona kana izvi zvaitika. Uye kana izvi zvikaitika, unowana kukanganisa uku. Uye kubva pane izvi zviri pachena kuti maitiro akadaro uye akadaro akamirira SHARE LOCK kubva kune imwe nzira, kureva, iyo yakavharwa ne711 process. Uye hurongwa uhu hwaive hwakamirira kuti SHARE LOCK ipiwe pane yakadai uye yakadai transaction ID uye yakavharwa nemaitiro akadaro. Naizvozvo, pane deadlock situation pano.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Pane nzira nhatu dzakafa? Zvinoita here? Ehe.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Tinoisa nhamba idzi mutafura. Tinochinja 40 kusvika 40, tinoita blocking.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Isu tinoshandura 60 kusvika 61, 80 kusvika 81.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye tobva tachinja 80 tobva taita boom!

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye 714 ikozvino yakamirira 715. 716th yakamirira 715th. Uye hapana chinogona kuitwa nezvazvo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Hapasisina vanhu vaviri pano, patova nevanhu vatatu pano. Ini ndinoda chimwe chinhu kubva kwauri, uyu anoda chimwe chinhu kubva kumunhu wechitatu, uye wechitatu anoda chimwe chinhu kubva kwandiri. Uye isu tinopedzisira tamirira nzira nhatu nekuti tese takamirira kuti mumwe munhu apedze zvavanofanira kuita.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye Postgres anoziva pane mutsara izvi zvinoitika. Uye saka ichakupa iyo inotevera meseji, iyo inoratidza kuti une dambudziko apo matatu ekuisa ari kuvharirana. Uye hapana zvinorambidzwa pano. Izvi zvinogona kunge zviri izvo apo makumi maviri ekupinda anovharirana.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Dambudziko rinotevera rinogadziriswa.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Kana yakakosha serializable kukiya.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye isu tinodzokera ku719. Kubuda kwayo kwakajairika.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye iwe unogona kudzvanya kuti uite kutengeserana kubva kuserializable.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye iwe unoona kuti ikozvino wava nemhando yakasiyana yeSA lock - zvinoreva serialization.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye saka isu tine rudzi rutsva rwekiyi inonzi SARiadLock, inova serial kiyi uye inobvumidza iwe kuti upinde serials.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye zvakare iwe unogona kuisa yakasarudzika indexes.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Mutafura iyi tine ma indexes akasiyana.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Saka ndikaisa nhamba 2 pano, saka ndine 2. Asi kumusoro chaiko, ndinoisa imwe 2 mukati. Uye unoona kuti 721 ine kiyi yega. Asi ikozvino 722 yakamirira kuti 721 ipedze kushanda kwayo nekuti haikwanise kuisa 2 kusvika yaziva zvichaitika ku721.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kana tikaita subtransaction.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Pano tine 723.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye kana tikachengeta poindi tobva tagadzirisa, tobva tawana itsva transaction ID. Iyi ndiyo imwe nzira yemaitiro yaunofanira kuziva. Kana tikadzorera izvi, ipapo transaction ID inoenda. 724 iri kuenda. Asi ikozvino tine mazana manomwe nemakumi maviri nemashanu.

Saka ndiri kuedza kuitei pano? Ndiri kuyedza kukuratidza mienzaniso yezvivharo zvisina kujairika zvaungawana: angave ari makiyi anovharika kana SAVEPOINT, aya marudzi akasiyana emakiyi anozoonekwa patafura yekukiya.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uku ndiko kusikwa kwemakiyi akajeka (akajeka), ane pg_advisory_lock.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye iwe unoona kuti rudzi rwekuvharira rwakanyorwa sechipangamazano. Uye pano inoti "mazano" mutsvuku. Uye iwe unogona panguva imwe chete kuvhara seizvi ne pg_advisory_unlock.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye mukupedzisa, ndinoda kukuratidza chimwe chinhu chinopisa pfungwa. Ndichagadzira imwe maonero. Asi ini ndichajoinha pg_locks tafura neiyo pg_stat_activity tafura. Uye nei ndichida kuita izvi? Nekuti izvi zvinonditendera kuti nditarise uye ndione ese ese azvino zvikamu uye kuona chaizvo kuti ndeapi makiyi avakamirira. Uye izvi zvinonakidza kana tikaisa pamwechete tafura yekukiya uye tafura yemubvunzo.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye pano tinogadzira pg_stat_view.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye isu tinovandudza mutsara mumwe. Uye pano tinoona 724. Uye isu tinovandudza mutsara wedu kusvika kumatatu. Uye chii chauri kuona pano zvino? Izvi zvikumbiro, kureva kuti unoona rondedzero yese yezvikumbiro zvakanyorwa muchikamu chekuruboshwe. Uye ipapo kudivi rekurudyi iwe unogona kuona ma blockages uye izvo zvavanogadzira. Uye zvinogona kujeka kwauri kuitira kuti usazofanira kudzokera kuchikamu chega chega woona kana uchida kuchijoina kana kuti kwete. Vanozviita kwatiri.

Chimwe chinhu chinobatsira zvikuru ndechekuti pg_blocking_pids. Pamwe hausati wambonzwa nezvake. Arikuitei? Izvo zvinotitendera kuti tiudze kuti pachikamu chino 11740 ndeapi maID maitiro akamirira. Uye iwe unogona kuona kuti 11740 yakamirira 724. Uye 724 iri pamusoro chaipo. Uye 11306 ndiyo yako maitiro ID. Chaizvoizvo, basa iri rinopfuura nepatafura yako yekukiya. Uye ndinoziva zvakati kuomesesa, asi unokwanisa kuzvinzwisisa. Chaizvoizvo basa iri rinopfuura nepatafura yekukiya iyi uye rinoedza kutsvaga kuti iyi ID inopihwa kupi makiyi ayo akamirira. Uye zvakare inoedza kufunga kuti ndeipi ID ID maitiro ayo akamirira kukiya ane. Saka unogona kumhanya basa iri pg_blocking_pids.

Uye izvi zvinogona kubatsira zvakanyanya. Isu takangowedzera izvi mushanduro 9.6, saka chimiro ichi chine makore mashanu chete, asi chakanyanya, chinobatsira. Uye zvakafanana zvinoshanda kuchikumbiro chechipiri. Rinoratidza chaizvo zvatinofanira kuona.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Izvi ndizvo zvandaida kutaura newe. Uye sezvandaitarisira, takashandisa nguva yedu yose nokuti pakanga pane masiraidhi akawanda. Uye masiraidhi anowanikwa kurodha. Ndinoda kukutendai nekuve pano. Ndine chokwadi chekuti muchanakidzwa nemusangano wasara, ndinokutendai zvikuru!

Mibvunzo:

Semuenzaniso, kana ndiri kuyedza kugadzirisa mitsara, uye chikamu chechipiri chiri kuyedza kudzima tafura yese. Sekunzwisisa kwandinoita, panofanira kunge paine chinhu chakafanana nekukiya chinangwa. Pane chinhu chakadaro here muPostgres?

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Ngatidzokerei pakutanga chaipo. Iwe unogona kurangarira kuti kana iwe uchiita chero chinhu, semuenzaniso kana iwe uchiita SARUDZO, tinoburitsa AccessShareLock. Uye izvi zvinodzivirira tafura kubva pakudonha. Saka kana iwe, semuenzaniso, uchida kugadzirisa mutsara mutafura kana kudzima mutsara, saka mumwe munhu haakwanise kudzima tafura yese panguva imwe chete nekuti uri kubata iyi AccessShareLock pamusoro petafura yese uye pamusoro pemutsara. Uye kana wapedza, vanogona kuidzima. Asi iwe uchichinja zvakananga chimwe chinhu ipapo, ivo havazokwanisi kuzviita.

Ngatizviite zvakare. Ngatiendererei kune yekudzima muenzaniso. Uye iwe unoona sei kune yakasarudzika kiyi pamutsetse uri pamusoro petafura yese.

Izvi zvichaita senge lock yakasarudzika, handiti?

Hongu, zvinoita sekudaro. Ndinonzwisisa zvauri kutaura. Iwe urikuti kana ndikaita SELECT ndinenge ndine ShareExclusive ndozoita Row Exclusive, zvinova dambudziko here? Asi zvinoshamisa kuti izvi hazvisi dambudziko. Izvi zvinoita sekuwedzera dhigirii rekuvhara, asi chaizvo ini ndine kiyi inodzivirira kudzima. Uye zvino, pandinoita kuti kiyi iyi iwedzere simba, inoramba ichidzivirira kudzima. Saka hazvisi sekunge ndiri kukwira. Kureva kuti yaidzivirira kuti isaitike payaive padanho rezasi futi, saka kana ndasimudza level yaro inotodzivirira kuti table isadzime.

Ndinonzwisisa zvauri kutaura. Iko hakuna kukiya kukwirisa kesi pano, pauri kuyedza kurega kukiya kusuma imwe yakasimba. Pano zvinongowedzera kudzivirira uku kwese kwese, saka hazvikonzere kusawirirana. Asi mubvunzo wakanaka. Ndinokutendai zvikuru nekubvunza izvi!

Chii chatinofanira kuita kuti tidzivise mamiriro ekufa kana tiine zvikamu zvakawanda, nhamba huru yevashandisi?

Postgres inoona otomatiki mamiriro ezvinhu. Uye inozodzima imwe yemasesheni. Nzira chete yekudzivirira kufa kuvharika ndeyekuvharira vanhu muhurongwa hwakafanana. Saka kana iwe ukatarisa chikumbiro chako, kazhinji chikonzero chekufa ... Ngatimbofungidzira kuti ndinoda kuvhara zvinhu zviviri zvakasiyana. Imwe application inokiya tafura 1, uye imwe application inokiya 2, uyezve tafura 1. Uye nzira iri nyore yekunzvenga deadlocks ndeyekutarisa application yako uye kuyedza kuve nechokwadi chekuti kukiya kunoitika nenzira imwechete kune ese maapplication. Uye izvi zvinowanzobvisa 80% yematambudziko, nekuti marudzi ese evanhu anonyora aya maapplication. Uye kana iwe ukavavharira nenzira imwechete, saka hausangane neiyo deadlock mamiriro.

Ndinokutendai zvikuru nekuita kwenyu! Iwe wakataura nezve vacuum yakazara uye, kana ndikanzwisisa zvakanaka, vacuum yakazara inokanganisa kurongeka kwemarekodhi munzvimbo yakaparadzana, saka vanochengeta zvinyorwa zvazvino zvisina kuchinjika. Sei vacuum yakazara ichitora yakasarudzika yekuvhara uye nei ichipokana nekunyora mashandiro?

Uyu mubvunzo wakanaka. Chikonzero ndechekuti vacuum yakazara inotora tafura. Uye isu tiri kunyanya kugadzira vhezheni itsva yetafura. Uye tafura ichava itsva. Zvinoitika kuti iyi ichave shanduro nyowani yetafura. Zvino dambudziko nderekuti kana taita izvi hatidi kuti vanhu vaverenge nekuti tinoda kuti vaone tafura itsva. Uye saka izvi zvinobatana nemubvunzo wapfuura. Kudai taigona kurava panguva imwe cheteyo, taisazokwanisa kuifambisa ndokutungamirira vanhu kutafura itsva. Tinoda kumirira kuti munhu wese apedze kuverenga tafura iyi, uye saka inyaya yekukiya chete mamiriro.
Isu tinongoti tinokiya kubva pakutanga nekuti tinoziva kuti pakupera chaipo tichada kiyi yega kuti tiendese munhu wese kukopi nyowani. Saka isu tinokwanisa kugadzirisa izvi. Uye isu tinozviita nenzira iyi nekunongedza panguva imwe chete. Asi izvi zvakanyanya kuoma kuita. Uye izvi zvakanyanya zvine chekuita nemubvunzo wako wekare nezve kukiya chete.

Zvinoita here kuwedzera kuvhara nguva kuPostgres? MuOracle, ndinogona, semuenzaniso, kunyora "sarudza kugadzirisa" uye kumirira masekondi makumi mashanu ndisati ndagadziridza. Yakanga yakanaka kune application. Asi muPostgres, ini ndoda kuzviita ipapo uye kwete kumirira zvachose, kana kumirira kusvika imwe nguva.

Ehe, unogona kusarudza nguva yekuvharwa pakiyi dzako, pakiyi dzako. Iwe unogona zvakare kuburitsa hapana nzira yekuraira, iyo ... Naizvozvo, ingave yekuvhara nguva kana chimwewo chinhu chinokutendera kuita izvi. Izvi hazviitwe pamwero we syntactic. Izvi zvinoitwa seinochinja pane server. Dzimwe nguva izvi hazvigone kushandiswa.

Unogona here kuvhura siraidhi 75?

Hongu.

Kuvhura iyo Postgres Lock Maneja. Bruce Momjian

Uye mubvunzo wangu unotevera. Sei ese ari maviri ekuvandudza maitiro achitarisira 703?

Uye uyu mubvunzo mukuru. Ini handinzwisise, nenzira, nei Postgres achiita izvi. Asi pakasikwa 703, yaitarisira 702. Uye kana 704 ne 705 vooneka, zvinoita sekunge havazive zvavari kutarisira nekuti hapachina chinhu. Uye Postgres inozviita nenzira iyi: kana iwe usingakwanise kuwana kukiya, inonyora kuti "Chii chakanakira kukugadzirisa iwe?", Nokuti iwe wakatomirira mumwe munhu. Saka tichangoisiya yakarembera mumhepo, haichagadzirise zvachose. Asi chii chakaitika apa? Pakangopedza 702 maitiro uye 703 yakagamuchira kukiya kwayo, sisitimu yakadzokera kumashure. Uye akati iye zvino tine vanhu vaviri vakamirira. Uye zvino ngatizvivandudze pamwe chete. Uye ngatiratidze kuti vose vari kutarisira.

Handizive kuti sei Postgres achiita izvi. Asi pane dambudziko rinonzi f…. Zvinoratidzika kwandiri kuti iri harisi izwi muchiRussia. Apa ndipo apo munhu wese anenge akamirira nhare imwe chete, kunyangwe paine zviremera makumi maviri zvakamirira nhare. Uye kamwe kamwe vose vanomuka panguva imwe chete. Uye munhu wese anotanga kuedza kuita. Asi hurongwa hunoita kuti munhu wese amirire 20. Nekuti vese vakamirira, uye isu tichakurumidza kuvaisa mumutsara vese. Uye kana chero chimwe chikumbiro chitsva chikaonekwa chakagadzirwa mushure meizvi, semuenzaniso, 703, ipapo pachave nekusava nechinhu zvakare.

Uye zvinoratidzika kwandiri kuti izvi zvaitwa kuitira kuti titaure kuti panguva ino 702 yakamirira 703, uye vose vanouya mushure mezvo havazove nekupinda mumunda uyu. Asi kana mumiriri wekutanga angoenda, vese vaive vakamirira panguva iyoyo vasati vagadziridzwa vanogamuchira chiratidzo chimwe chete. Uye saka ndinofunga kuti izvi zvinoitwa kuti isu tigone kugadzirisa mukurongeka kuti vanyatso kurongeka.

Ndaigara ndichitarisa izvi sechinhu chinoshamisa. Nekuti pano, semuenzaniso, isu hatizvinyore zvachose. Asi zvinoratidzika kwandiri kuti pese patinopa kukiya kutsva, tinotarisa kune vese vari mukati mekumirira. Zvadaro tinovaisa mumutsara vose. Zvino chero chitsva chinouya chinongopinda mumutsara kana munhu anotevera apedza kugadziridzwa. Mubvunzo wakanaka kwazvo. Ndatenda zvikuru nemubvunzo wako!

Zvinoratidzika kwandiri kuti zvine musoro zvakanyanya apo 705 inotarisira 704.

Asi dambudziko riri pano nderekutevera. Nehunyanzvi, unogona kumutsa imwe kana imwe. Uye saka tichamuka mumwe kana mumwe. Asi chii chinoitika muhurongwa? Iwe unogona kuona kuti 703 kumusoro kumusoro yakavhara sei yake yekutengeserana ID. Aya ndiwo mashandiro anoita Postgres. Uye 703 yakavharwa neayo transaction ID, saka kana mumwe munhu achida kumirira, ivo vanomirira 703. Uye, muchidimbu, 703 inopedzisa. Uye chete mushure mekupedzwa kwayo imwe yemaitiro inomutsa. Uye isu hatizive kuti chii chaizvo chiitiko ichi chichava. Zvadaro tinogadzira zvinhu zvose zvishoma nezvishoma. Asi hazvina kujeka kuti ndeipi nzira inotanga kumutswa, nekuti inogona kunge iri chero yeaya maitiro. Chaizvoizvo, isu taive neanoronga akati isu tinogona kumutsa chero yeaya maitiro. Isu tinongosarudza imwe chete. Saka zvese zviri zviviri zvinoda kucherechedzwa nekuti tinogona kumutsa mumwe wavo.

Uye dambudziko nderekuti isu tine CP-infinity. Uye saka, zvinokwanisika kuti tinogona kumutsa iyo inotevera. Uye kana, semuenzaniso, isu tikamutsa anotevera, isu tichamirira uyo achangogamuchira block, saka hatione kuti ndiani chaizvo achamutswa. Isu tinongogadzira mamiriro akadai, uye sisitimu inovamutsa mune yakasarudzika.

kune zvinyorwa pamusoro pekiyi naEgor Rogov. Tarisa, ivo zvakare vanonakidza uye vanobatsira. Musoro wacho, hongu, wakaoma zvikuru. Ndatenda zvikuru, Bruce!

Source: www.habr.com

Voeg