Kutsegula Postgres Lock Manager. Bruce Momjian

Zolemba za nkhani ya Bruce Momjian ya 2020 "Kutsegula Postgres Lock Manager".

Kutsegula Postgres Lock Manager. Bruce Momjian

(Zindikirani: Mafunso onse a SQL kuchokera pazithunzi atha kupezeka kuchokera pa ulalo uwu: http://momjian.us/main/writings/pgsql/locking.sql)

Moni! Ndizosangalatsa kukhalanso kuno ku Russia. Pepani kuti sindikanatha kubwera chaka chatha, koma chaka chino ine ndi Ivan tili ndi zolinga zazikulu. Ndikuyembekeza kudzakhala kuno nthawi zambiri. Ndimakonda kubwera ku Russia. Ndidzachezera Tyumen, Tver. Ndine wokondwa kwambiri kuti nditha kuyendera mizindayi.

Dzina langa ndine Bruce Momjian. Ndimagwira ntchito ku EnterpriseDB ndipo ndakhala ndikugwira ntchito ndi Postgres kwa zaka zopitilira 23. Ndimakhala ku Philadelphia, USA. Ndimayenda pafupifupi masiku 90 pachaka. Ndipo ndimakhala nawo pamisonkhano pafupifupi 40. Mai Webusaiti, yomwe ili ndi zithunzi zomwe ndikuwonetsani tsopano. Chifukwa chake, pambuyo pa msonkhano mutha kuwatsitsa patsamba langa. Ilinso ndi zowonetsera pafupifupi 30. Palinso mavidiyo ndi chiwerengero chachikulu cha zolemba za blog, zoposa 500. Ichi ndi chidziwitso chokwanira. Ndipo ngati muli ndi chidwi ndi nkhaniyi, ndikukupemphani kuti mugwiritse ntchito.

Ndinali mphunzitsi, pulofesa ndisanayambe kugwira ntchito ndi Postgres. Ndipo ndine wokondwa kuti tsopano nditha kukuuzani zomwe ndikufuna kukuuzani. Ichi ndi chimodzi mwazowonetsa zanga zosangalatsa kwambiri. Ndipo chiwonetserochi chili ndi zithunzi 110. Tidzayamba kuyankhula ndi zinthu zosavuta, ndipo pamapeto pake lipotilo lidzakhala lovuta kwambiri, ndipo lidzakhala lovuta kwambiri.

Kutsegula Postgres Lock Manager. Bruce Momjian

Uku ndikukambirana kosasangalatsa. Kuletsa si nkhani yotchuka kwambiri. Tikufuna kuti izi zizimiririka kwinakwake. Zili ngati kupita kwa dokotala wa mano.

Kutsegula Postgres Lock Manager. Bruce Momjian

  1. Kutseka ndi vuto kwa anthu ambiri omwe amagwira ntchito m'madatabase ndipo amakhala ndi njira zingapo zomwe zikuyenda nthawi imodzi. Amafunikira kutsekereza. Ndiko kuti, lero ndikupatsani chidziwitso chofunikira pakuletsa.
  2. Ma ID amalonda. Iyi ndi gawo lotopetsa lachiwonetsero, koma liyenera kumvetsetsedwa.
  3. Kenako tikambirana za mitundu yotsekereza. Ichi ndi gawo lopangidwa mwachilungamo.
  4. Ndipo pansipa tipereka zitsanzo za kutsekereza. Ndipo zidzakhala zovuta kumvetsa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Tiye tikambirane kutsekereza.

Kutsegula Postgres Lock Manager. Bruce Momjian

Mawu athu ndi ovuta kwambiri. Ndi angati a inu mukudziwa kumene ndimeyi ikuchokera? Anthu awiri. Izi zikuchokera pamasewera otchedwa Colossal Cave Adventure. Anali masewera apakompyuta ozikidwa m'ma 80s, ndikuganiza. Kumeneko munayenera kulowa m'phanga, mu labyrinth, ndipo malembawo anasintha, koma zomwe zinalipo zinali zofanana nthawi zonse. Ndi momwe ndimakumbukira masewerawa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo apa tikuwona dzina la maloko omwe adabwera kwa ife kuchokera ku Oracle. Timawagwiritsa ntchito.

Kutsegula Postgres Lock Manager. Bruce Momjian

Apa tikuwona mawu omwe amandisokoneza. Mwachitsanzo, SHARE UPDATE EXXLUSIVE. Kenako GAWANI RAW EXXLUSIVE. Kunena zoona, mayinawa samveka bwino. Tidzayesa kuwalingalira mwatsatanetsatane. Ena ali ndi mawu oti “kugawana”, kutanthauza kulekana. Ena ali ndi mawu oti "exclusive". Ena ali ndi mawu awiriwa. Ndikufuna ndiyambe ndi momwe malokowa amagwirira ntchito.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo mawu oti "kulowa" ndi ofunika kwambiri. Ndipo mawu akuti "mzere" ndi chingwe. Ndiko kuti, kugawa mwayi, kugawa mizere.

Kutsegula Postgres Lock Manager. Bruce Momjian

Nkhani ina yomwe iyenera kumveka mu Postgres, yomwe mwatsoka sindingathe kuyifotokoza munkhani yanga, ndi MVCC. Ndili ndi ulaliki wosiyana pamutuwu patsamba langa. Ndipo ngati mukuganiza kuti nkhaniyi ndi yovuta, MVCC mwina ndiyovuta kwambiri. Ndipo ngati mukufuna, mutha kuwonera pawebusayiti. Mutha kuwonera kanema.

Kutsegula Postgres Lock Manager. Bruce Momjian

Chinanso chomwe tikuyenera kumvetsetsa ndi ma ID a transaction. Zochita zambiri sizingagwire ntchito popanda zizindikiritso zapadera. Ndipo apa tili ndi kufotokozera komwe kumachita. Postgres ili ndi machitidwe awiri owerengera ndalama. Ndikudziwa kuti iyi si njira yabwino kwambiri.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kumbukiraninso kuti zithunzizi zidzakhala zovuta kumvetsa, choncho zomwe zasonyezedwa mofiira ndizo zomwe muyenera kuziganizira.

Kutsegula Postgres Lock Manager. Bruce Momjian

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

Tiyeni tiwone. Nambala yamalonda yawonetsedwa mofiira. Ntchito ya SELECT pg_back ikuwonetsedwa apa. Imandibwezeranso ID yanga yamalonda ndi transaction.

Chinthu chinanso, ngati mumakonda ulalikiwu ndipo mukufuna kuyiyendetsa pankhokwe yanu, mutha kupita ku ulalo wa pinki ndikutsitsa SQL ya ulalikiwu. Ndipo mutha kungoyiyendetsa mu PSQL yanu ndipo chiwonetsero chonse chizikhala pazenera lanu nthawi yomweyo. Sizikhala ndi maluwa, koma titha kuziwona.

Kutsegula Postgres Lock Manager. Bruce Momjian

M'nkhani ino tikuwona ID yamalonda. Iyi ndi nambala yomwe tidamupatsa. Ndipo pali mtundu wina wa ID yogulitsira ku Postgres, yomwe imatchedwa ID yoyeserera

Ndipo tiyenera kumvetsa izi. Izi ndizofunikira kwambiri, apo ayi sitidzatha kumvetsetsa kutseka kwa Postgres.

ID yotsimikizika yamalonda ndi ID yamalonda yomwe ilibe zinthu zomwe zikupitilira. Mwachitsanzo, ngati ndiyendetsa lamulo la SELECT, ndiye kuti sindingasinthe database, sinditseka chilichonse. Chifukwa chake tikamayendetsa KUSANKHA kosavuta, sitipereka chidziwitso chokhazikika. Timangomupatsa ID yeniyeni kumeneko.

Ndipo izi zimathandizira kugwira ntchito kwa Postgres, kumapangitsa luso loyeretsa, kotero ID yoyeserera imakhala ndi manambala awiri. Nambala yoyamba isanakwane slash ndi ID yakumbuyo. Ndipo kumanja tikungowona kauntala.

Kutsegula Postgres Lock Manager. Bruce Momjian

Chifukwa chake, ndikathamangitsa pempho, imanena kuti ID yakumbuyo ndi 2.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ngati ndiyendetsa zinthu zingapo zotere, ndiye tikuwona kuti kauntala ikuwonjezeka nthawi iliyonse ndikafunsa funso. Mwachitsanzo, ndikayendetsa funso 2/10, 2/11, 2/12, ndi zina.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kumbukirani kuti pali mizati iwiri apa. Kumanzere tikuwona ID yobwereketsa - 2/12. Ndipo kumanja tili ndi ID yokhazikika. Ndipo mundawu mulibe. Ndipo izi sizikusintha database. Chifukwa chake sindimapatsa ID yokhazikika.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndikangoyendetsa lamulo la analyze ((ANALYZE)), funso lomwelo limandipatsa ID yokhazikika. Onani momwe izi zasinthira kwa ife. Poyamba ndinalibe ID iyi, koma tsopano ndili nayo.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kotero apa pali pempho lina, ntchito ina. Nambala yobwereketsa ndi 2/13. Ndipo ngati ndikupempha chizindikiritso cholimbikira, ndikangoyendetsa funsolo, ndipeza.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kotero, nthawi inanso. Tili ndi ID yotsimikizika yochitika komanso ID yopitilira muyeso. Ingomvetsetsani mfundo iyi kuti mumvetsetse khalidwe la Postgres.

Kutsegula Postgres Lock Manager. Bruce Momjian

Timapita ku gawo lachitatu. Apa tingoyenda mumitundu yosiyanasiyana yamaloko ku Postgres. Sizosangalatsa kwambiri. Gawo lotsiriza lidzakhala losangalatsa kwambiri. Koma tiyenera kuganizira zinthu zofunika kwambiri, chifukwa tikapanda kutero sitingamvetse zimene zidzachitike m’tsogolo.

Tidutsa gawo ili, tiwona mtundu uliwonse wa loko. Ndipo ndikuwonetsani zitsanzo za momwe amayikidwira, momwe amagwirira ntchito, ndikuwonetsani mafunso omwe mungagwiritse ntchito kuti muwone momwe kutseka kumagwirira ntchito ku Postgres.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kuti tipange funso ndikuwona zomwe zikuchitika ku Postgres, tiyenera kutulutsa funso pamawonekedwe adongosolo. Pankhaniyi, pg_lock ikuwonetsedwa mofiira. Pg_lock ndi tebulo ladongosolo lomwe limatiuza zomwe maloko akugwiritsidwa ntchito ku Postgres.

Komabe, ndizovuta kwambiri kuti ndikuwonetseni pg_lock palokha chifukwa ndizovuta kwambiri. Chifukwa chake ndidapanga mawonekedwe omwe amawonetsa pg_locks. Ndipo zimandichitiranso ntchito zina zomwe zimandithandiza kumvetsetsa bwino. Ndiko kuti, sikuphatikiza maloko anga, gawo langa, ndi zina zotero. Ndi SQL yokhazikika ndipo imakulolani kuti muwonetse bwino zomwe zikuchitika.

Kutsegula Postgres Lock Manager. Bruce Momjian

Vuto lina ndilakuti malingaliro awa ndi otakata kwambiri, kotero ndiyenera kupanga yachiwiri - lockview2.

Kutsegula Postgres Lock Manager. Bruce Momjian Ndipo zimandiwonetsa mizati yambiri patebulo. Ndipo ina yomwe imandiwonetsa mizati yotsalayo. Izi ndizovuta kwambiri, kotero ndidayesera kuzifotokoza mophweka momwe ndingathere.

Kutsegula Postgres Lock Manager. Bruce Momjian

Chifukwa chake tidapanga tebulo lotchedwa Lockdemo. Ndipo tinapanga mzere umodzi pamenepo. Ili ndiye tebulo lathu lachitsanzo. Ndipo tikupanga magawo kuti tikuwonetseni zitsanzo za maloko.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kotero, mzere umodzi, ndime imodzi. Loko loyamba limatchedwa ACCESS SHARE. Uku ndiye kutsekereza kocheperako. Izi zikutanthauza kuti sizimatsutsana ndi maloko ena.

Ndipo ngati tikufuna kufotokozera momveka bwino loko, timayendetsa lamulo la "lock table". Ndipo mwachiwonekere idzatsekereza, mwachitsanzo, mu ACCESS SHARE mode timakhazikitsa tebulo lokhoma. Ndipo ngati ndithamanga PSQL kumbuyo, ndiye ndimayamba gawo lachiwiri kuchokera gawo langa loyamba motere. Ndiko kuti, nditani pano? Ndipita ku gawo lina ndikuwuza "ndiwonetseni lockview ya pempholi." Ndipo apa ndili ndi AccessShareLock mu tebulo ili. Izi ndi zomwe ndinapempha. Ndipo akuti chipikacho wapatsidwa. Zosavuta kwambiri.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kupitilira apo, ngati tiyang'ana gawo lachiwiri, ndiye kuti palibe chilichonse pamenepo. Iwo alibe kanthu.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ngati ndiyendetsa lamulo la "SAKHANI", ndiye kuti iyi ndi njira yachidule (yowonekera) yofunsira AccessShareLock. Chifukwa chake ndimamasula tebulo langa ndikuyendetsa funsolo ndipo funso limabweretsa mizere ingapo. Ndipo mumzere umodzi tikuwona AccessShareLock. Chifukwa chake, SELECT imayitanira AccessShareLock patebulo. Ndipo sichimasemphana ndi chilichonse chifukwa ndi loko yotsika.

Kutsegula Postgres Lock Manager. Bruce Momjian

Nanga bwanji ngati nditasankha SELECT ndikukhala ndi matebulo atatu osiyana? M'mbuyomu ndimayendetsa tebulo limodzi, tsopano ndikuyendetsa atatu: pg_class, pg_namespace ndi pg_attribute.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo tsopano ndikayang'ana funsolo, ndikuwona 9 AccessShareLocks mumatebulo atatu. Chifukwa chiyani? Matebulo atatu adawonetsedwa mubuluu: pg_attribute, pg_class, pg_namespace. Koma mutha kuwonanso kuti ma index onse omwe amafotokozedwa kudzera pa matebulowa alinso ndi AccessShareLock.

Ndipo ichi ndi loko lomwe silimatsutsana ndi ena. Ndipo zonse zomwe zimachita ndikungotilepheretsa kukhazikitsanso tebulo pomwe tikusankha. Ndizomveka. Ndiko kuti, ngati tisankha tebulo, limasowa panthawiyo, ndiye kuti izi ndizolakwika, choncho AccessShare ndi loko yotsika kwambiri yomwe imatiuza "osagwetsa tebulo ili ndikugwira ntchito". Kwenikweni, ndizo zonse zomwe amachita.

Kutsegula Postgres Lock Manager. Bruce Momjian

ROW SHARE - Loko ili ndi losiyana pang'ono.

Kutsegula Postgres Lock Manager. Bruce Momjian

Tiyeni titenge chitsanzo. Sankhani ROW SHARE njira yotsekera mzere uliwonse payekhapayekha. Mwanjira imeneyi palibe amene angathe kuzichotsa kapena kuzisintha pamene tikuziona.

Kutsegula Postgres Lock Manager. Bruce MomjianNdiye SHARE LOCK imachita chiyani? Tikuwona kuti ID yogulitsa ndi 681 ya SELECT. Ndipo izi ndizosangalatsa. Chinachitika ndi chiyani apa? Nthawi yoyamba yomwe tikuwona nambala ili m'munda wa "Lock". Timatenga ID yogulitsira ndipo imati ikutchinga munjira yapadera. Zomwe zimachita ndikuti ndili ndi mzere womwe watsekedwa mwaukadaulo penapake patebulo. Koma sakunena kuti ndendende kuti. Tiwona izi mwatsatanetsatane pambuyo pake.

Kutsegula Postgres Lock Manager. Bruce Momjian

Apa tikunena kuti loko timagwiritsa ntchito.

Kutsegula Postgres Lock Manager. Bruce Momjian

Chifukwa chake, loko yokhazikika imanena mosapita m'mbali kuti ndi yokhayo. Komanso ngati muchotsa mzere patebulo ili, izi ndi zomwe zichitike, monga mukuwonera.

Kutsegula Postgres Lock Manager. Bruce Momjian

SHARE EXCLUSIVE ndi loko yayitali.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ili ndiye lamulo la (ANALYZE) analyzer lomwe lidzagwiritsidwe ntchito.

Kutsegula Postgres Lock Manager. Bruce Momjian

GAWANI LOCK - mutha kutseka mwatsatanetsatane mumagawo ogawana.

Kutsegula Postgres Lock Manager. Bruce Momjian

Mukhozanso kupanga index yapadera. Ndipo pamenepo mutha kuwona SHARE LOCK, yomwe ili gawo lawo. Ndipo imatseka tebulo ndikuyika SHARE LOCK pamenepo.

Mwachikhazikitso, SHARE LOCK patebulo zikutanthauza kuti anthu ena amatha kuwerenga tebulo, koma palibe amene angasinthe. Ndipo izi ndi zomwe zimachitika mukapanga index yapadera.

Ngati ndipanga cholozera chapadera panthawi imodzi, ndiye kuti ndidzakhala ndi mtundu wina wotseka chifukwa, monga mukukumbukira, kugwiritsa ntchito ma index nthawi yomweyo kumachepetsa kufunikira kotseka. Ndipo ngati ndigwiritsa ntchito loko wamba, index yodziwika bwino, ndiye kuti ndiletsa kulemba ku index ya tebulo pomwe ikupangidwa. Ngati ndigwiritsa ntchito index ya nthawi imodzi, ndiye kuti ndiyenera kugwiritsa ntchito mtundu wina wotseka.

Kutsegula Postgres Lock Manager. Bruce Momjian

GAWANI ZOKHUDZA KWAMBIRI - kachiwiri ikhoza kukhazikitsidwa momveka bwino (momveka).

Kutsegula Postgres Lock Manager. Bruce Momjian

Kapena tikhoza kupanga lamulo, mwachitsanzo, kutenga nkhani yeniyeni yomwe idzagwiritsidwe ntchito.

Kutsegula Postgres Lock Manager. Bruce Momjian

KUKHALA KUKHALA kumatanthauza kuti palibe amene angasinthe tebulo.

Kutsegula Postgres Lock Manager. Bruce Momjian

Apa tikuwona mitundu yosiyanasiyana ya maloko.

Kutsegula Postgres Lock Manager. Bruce Momjian

ACCESS EXCLUSIVE mwachitsanzo, ndi lamulo loletsa. Mwachitsanzo, ngati mutero CLUSTER table, ndiye kuti izi zidzatanthauza kuti palibe amene adzatha kulemba kumeneko. Ndipo imatseka osati tebulo lokha, komanso ma index.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ili ndi tsamba lachiwiri la kutsekereza kwa ACCESS EXCLUSIVE, pomwe tikuwona ndendende zomwe zimatchinga patebulo. Imatseka mizere ya tebulo, yomwe ili yosangalatsa kwambiri.

Ndizo zonse zofunikira zomwe ndimafuna kupereka. Tidakambirana za maloko, ma ID a transaction, tidakambirana za ma ID a transaction, za ma ID okhazikika.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo tsopano tidutsa zitsanzo zotsekereza. Ichi ndi gawo losangalatsa kwambiri. Tiwona milandu yosangalatsa kwambiri. Ndipo cholinga changa mu ulalikiwu ndikukupatsani kumvetsetsa bwino zomwe Postgres akuchita poyesa kuletsa zinthu zina. Ndikuganiza kuti ndi wabwino kwambiri potsekereza magawo.

Tiyeni tione zitsanzo zenizeni.

Kutsegula Postgres Lock Manager. Bruce Momjian

Tiyamba ndi matebulo ndi mzere umodzi patebulo. Ndikayika china chake ndili ndi ExclusiveLock, Transaction ID ndi ExclusiveLock zowonetsedwa patebulo.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kodi chingachitike ndi chiyani ndikalowetsa mizere ina iwiri? Ndipo tsopano tebulo lathu lili ndi mizere itatu. Ndipo ndinayika mzere umodzi ndikupeza izi ngati zotulutsa. Ndipo ngati ndiyika mizere ina iwiri, chodabwitsa ndi chiyani pamenepo? Pali chodabwitsa apa chifukwa ndawonjezera mizere itatu patebuloli, koma ndikadali ndi mizere iwiri pa loko. Ndipo ichi ndiye chikhalidwe choyambirira cha Postgres.

Anthu ambiri amaganiza kuti ngati mutsekera mizere 100 m'dawunilodi, ndiye kuti muyenera kupanga zolembera zokhoma 100. Ngati nditsekereza mizere 1 nthawi imodzi, ndiye kuti ndifunika mafunso 000 otere. Ndipo ndikafuna miliyoni kapena biliyoni kuti nditseke. Koma ngati tichita izi, sizigwira ntchito bwino. Ngati mwagwiritsa ntchito dongosolo lomwe limapanga zolembera zotsekereza pamzere uliwonse, ndiye kuti mutha kuwona kuti izi ndizovuta. Chifukwa muyenera kufotokozera nthawi yomweyo tebulo lokhoma lomwe limatha kusefukira, koma Postgres samachita zimenezo.

Ndipo chomwe chili chofunikira kwambiri pa slide iyi ndikuti ikuwonetsa bwino kuti pali dongosolo lina lomwe likuyenda mkati mwa MVCC lomwe limatseka mizere iliyonse. Chifukwa chake mukatseka mabiliyoni amizere, Postgres sipanga malamulo otsekera biliyoni. Ndipo izi zimakhala ndi zotsatira zabwino kwambiri pa zokolola.

Kutsegula Postgres Lock Manager. Bruce Momjian

Nanga bwanji zosintha? Ndikusintha mzerewu tsopano, ndipo mutha kuwona kuti wachita maopaleshoni awiri osiyanasiyana nthawi imodzi. Inatseka tebulo nthawi yomweyo, koma idatsekanso index. Ndipo amayenera kutseka index chifukwa pali zopinga zapadera patebuloli. Ndipo tikufuna kuwonetsetsa kuti palibe amene amasintha, ndiye timaletsa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kodi chimachitika ndi chiyani ndikafuna kusintha mizere iwiri? Ndipo tikuwona kuti amachita chimodzimodzi. Timachita kuwirikiza kawiri zosintha, koma ndendende nambala yofanana ya loko.

Ngati mukudabwa momwe Postgres amachitira izi, muyenera kumvera zokamba zanga pa MVCC kuti mudziwe momwe Postgres imayikamo mizere iyi kuti isinthe. Ndipo Postgres ili ndi njira yomwe imachitira izi, koma sizichita patebulo lotsekera mulingo, imachita pamlingo wotsika komanso wothandiza kwambiri.

Kutsegula Postgres Lock Manager. Bruce Momjian

Bwanji ngati ndikufuna kuchotsa chinachake? Ngati ndichotsa, mwachitsanzo, mzere umodzi ndipo ndikadali ndi zolowetsa zanga ziwiri zotsekereza, ndipo ngakhale nditafuna kuzichotsa zonse, zikadalipo.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo, mwachitsanzo, ndikufuna kuyika mizere 1, ndiyeno kufufuta kapena kuwonjezera mizere 000, ndiye mizere yomwe ndikuwonjezera kapena kusintha, sinalembedwe apa. Amalembedwa pamlingo wocheperapo mkati mwa mndandanda womwewo. Ndipo pakulankhula kwa MVCC ndinalankhula za izi mwatsatanetsatane. Koma ndikofunikira kwambiri mukamasanthula maloko kuti muwonetsetse kuti mukutseka patebulo komanso kuti simukuwona momwe mizere ingapo ikulembedwera apa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Nanga bwanji kutsekereza mosabisa?

Kutsegula Postgres Lock Manager. Bruce Momjian

Ngati ndidina refresh, ndili ndi mizere iwiri yokhoma. Ndipo ngati ndiwasankha onse ndikudina "kusintha kulikonse," ndiye kuti ndikadali ndi zolemba ziwiri zotsekereza.

Kutsegula Postgres Lock Manager. Bruce Momjian

Sitipanga zolemba zosiyana pamzere uliwonse. Chifukwa ndiye zokolola zimatsika, zitha kukhala zochuluka kwambiri. Ndipo tingakumane ndi zinthu zosasangalatsa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo chinthu chomwecho, ngati tigawana, titha kuchita zonse 30.

Kutsegula Postgres Lock Manager. Bruce Momjian

Timabwezeretsa tebulo lathu, kuchotsa zonse, ndikuyikanso mzere umodzi.

Kutsegula Postgres Lock Manager. Bruce Momjian

Khalidwe lina lomwe mumawona mu Postgres lomwe limadziwika bwino komanso lofunidwa ndikuti mutha kusintha kapena kusankha. Ndipo mukhoza kuchita izi nthawi yomweyo. Ndipo kusankha sikuletsa kusintha ndi chinthu chomwecho mbali ina. Timauza owerenga kuti asatseke wolembayo, ndipo wolembayo sanatseke wowerenga.

Ndikuwonetsani chitsanzo cha izi. Ndipanga chisankho tsopano. Kenako tipanga INSERT. Ndiyeno inu mukhoza kuwona - 694. Mukhoza kuona ID wa wotuluka amene anachita kuyikapo. Ndipo umo ndi momwe zimagwirira ntchito.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ngati ndiyang'ana pa ID yanga yakumbuyo tsopano, ndi 695.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ine ndikukhoza kuwona 695 akuwonekera mu gome langa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ngati ndisintha apa monga chonchi, ndiye kuti ndimapeza vuto lina. Pankhaniyi, 695 - loko yekha, ndi kusintha ali ndi khalidwe lomwelo, koma palibe mkangano pakati pawo, amene si zachilendo.

Ndipo mutha kuwona kuti pamwamba ndi ShareLock, ndipo pansi ndi ExclusiveLock. Ndipo zonse ziwiri zidatheka.

Ndipo muyenera kumvera nkhani yanga ku MVCC kuti mumvetsetse momwe izi zimachitikira. Koma ichi ndi fanizo kuti mungathe kuchita nthawi yomweyo, mwachitsanzo, SALANI ndi KUSINTHA nthawi imodzi.

Kutsegula Postgres Lock Manager. Bruce Momjian

Tiyeni tikonzenso ndikuchitanso opareshoni ina.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ngati mutayesa kuyendetsa zosintha ziwiri panthawi imodzi pamzere womwewo, zidzatsekedwa. Ndipo kumbukirani, ndinanena kuti wowerenga satsekereza wolemba, ndipo wolemba samatsekereza owerenga, koma wolemba wina amatsekereza wolemba wina. Ndiko kuti, sitingakhale ndi anthu awiri osintha mzere umodzi nthawi imodzi. Muyenera kuyembekezera mpaka mmodzi wa iwo amalize.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo kuti ndiwonetsere izi, ndiyang'ana pa tebulo la Lockdemo. Ndipo tiwona mzere umodzi. Pazochitika 698.

Tasintha izi ku 2. 699 ndiye kusintha koyamba. Ndipo zidayenda bwino kapena zili mkati moyembekezera ndipo zikuyembekezera kuti titsimikizire kapena kuletsa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Koma yang'anani chinanso - 2/51 ndikuchita kwathu koyamba, gawo lathu loyamba. 3/112 ndi pempho lachiwiri lomwe linachokera pamwamba lomwe linasintha mtengowo kukhala 3. Ndipo ngati muwona, pamwamba pamadzitsekera yokha, yomwe ndi 699. Koma 3/112 sanapereke loko. Ndime ya Lock_mode ikunena zomwe ikuyembekezera. Imayembekeza 699. Ndipo ngati muyang'ana pamene 699 ali, ndi apamwamba. Ndipo gawo loyamba lidachita chiyani? Adapanga loko yapayekha pa ID yake yamalonda. Umu ndi momwe Postgres amachitira. Imatchinga ID yakeyake. Ndipo ngati mukufuna kudikirira kuti wina atsimikizire kapena kuletsa, ndiye kuti muyenera kudikirira pamene ntchito ikuyembekezera. Ndipo ndichifukwa chake tikutha kuwona mzere wachilendo.

Tiyeni tionenso. Kumanzere tikuwona ID yathu yokonza. Mugawo lachiwiri tikuwona ID yathu yogulitsira, ndipo chachitatu tikuwona lock_type. Kodi izi zikutanthauza chiyani? Kwenikweni zomwe akunena ndikuti ikuletsa ID yogulitsa. Koma zindikirani kuti mizere yonse pansi imanena mgwirizano. Ndipo kotero muli ndi mitundu iwiri ya maloko patebulo. Pali loko yolumikizirana. Ndiyeno pali kutsekereza kwa transactionid, komwe mumatsekereza nokha, zomwe ndizomwe zimachitika pamzere woyamba kapena pansi kwambiri, pomwe transactionid ili, pomwe timadikirira 699 kuti amalize ntchito yake.

Ndiwona zomwe zikuchitika pano. Ndipo apa zinthu ziwiri zimachitika nthawi imodzi. Mukuyang'ana loko ya ID yamalonda pamzere woyamba wodzitsekera wokha. Ndipo amadzitsekereza yekha kuti apangitse anthu kudikirira.

Ngati muyang'ana mzere wa 6, ndi wofanana ndi woyamba. Chifukwa chake transaction 699 yatsekedwa. 700 imadzitsekeranso yokha. Ndiyeno mumzere wapansi mudzawona kuti tikuyembekezera 699 kuti amalize ntchito yake.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo mu lock_type, tuple mumawona manambala.

Kutsegula Postgres Lock Manager. Bruce Momjian

Mutha kuwona kuti ndi 0/10. Ndipo iyi ndi nambala yatsamba, komanso kuchotsera pamzerewu.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo mukuwona zimakhala 0/11 tikasintha.

Kutsegula Postgres Lock Manager. Bruce Momjian

Koma kwenikweni ndi 0/10, chifukwa pali kudikirira opaleshoniyi. Tili ndi mwayi wowona kuti uwu ndi mndandanda womwe ndikuyembekezera kutsimikizira.

Kutsegula Postgres Lock Manager. Bruce Momjian

Tikatsimikizira ndikukankhira kudzipereka, ndipo zosintha zikatha, izi ndi zomwe timapezanso. Transaction 700 ndiye loko yokha, sikudikirira wina aliyense chifukwa idadzipereka. Imangodikirira kuti ntchitoyo ithe. 699 ikatha, sitidikiriranso chilichonse. Ndipo tsopano transaction 700 ikunena kuti zonse zili bwino, kuti ili ndi maloko onse omwe amafunikira pamatebulo onse ololedwa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo kuti zonsezi zikhale zovuta kwambiri, timapanga lingaliro lina, lomwe nthawi ino litipatse utsogoleri. sindiyembekeza kuti mumvetsetsa pempholi. Koma izi zidzatipatsa chithunzithunzi chomveka bwino cha zomwe zikuchitika.

Kutsegula Postgres Lock Manager. Bruce Momjian

Awa ndi malingaliro obwereza omwe alinso ndi gawo lina. Ndiyeno izo zikubweretsa chirichonse kubwerera palimodzi kachiwiri. Tiyeni tigwiritse ntchito izi.

Kutsegula Postgres Lock Manager. Bruce Momjian

Bwanji ngati tichita zosintha zitatu panthawi imodzi ndikunena kuti mzerewu ndi wachitatu. Ndipo tisintha 3 mpaka 4.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo apa tikuwona 4. Ndi ID yogulitsira 702.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndiyeno ndisintha 4 kukhala 5. Ndipo 5 mpaka 6, ndi 6 mpaka 7. Ndipo ndipanga mzere anthu angapo omwe akuyembekezera kuti ntchito imodziyi ithe.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo zonse zimamveka bwino. Mzere woyamba ndi chiyani? Ichi ndi 702. Iyi ndi ID yogulitsira yomwe idakhazikitsa mtengowu. Kodi palembedwa chiyani mu gawo langa la Granted? Ndili ndi zizindikiro f. Izi ndi zosintha zanga zomwe (5, 6, 7) sizingavomerezedwe chifukwa tikudikirira kuti ID 702 ithe. Kumeneko tili ndi kutsekereza kwa ID. Ndipo izi zimabweretsa maloko 5 a ID.

Ndipo ngati muyang'ana 704, pa 705, palibe chomwe chalembedwa pamenepo, chifukwa sadziwa zomwe zikuchitika. Amangolemba kuti sakudziwa zomwe zikuchitika. Ndipo amangogona chifukwa akudikirira kuti wina amalize ndikudzutsidwa ngati pali mwayi wosintha mizere.

Kutsegula Postgres Lock Manager. Bruce Momjian

Izi ndi momwe zimawonekera. Zikuwonekeratu kuti onse akudikirira mzere wa 12.

Kutsegula Postgres Lock Manager. Bruce Momjian

Izi ndi zomwe tawona apa. Nayi 0/12.

Kutsegula Postgres Lock Manager. Bruce Momjian

Chifukwa chake ntchito yoyamba ikavomerezedwa, mutha kuwona apa momwe maulamuliro amagwirira ntchito. Ndipo tsopano zonse zimamveka bwino. Onse amakhala oyera. Ndipo akuyembekezerabe.

Kutsegula Postgres Lock Manager. Bruce Momjian

Nazi zomwe zikuchitika. 702 kuchita. Ndipo tsopano 703 ipeza loko, kenako 704 imayamba kuyembekezera 703 kuti achite. Ndipo 705 ikuyembekezeranso izi. Ndipo zonsezi zikatha, amadziyeretsa. Ndipo ndikufuna kunena kuti aliyense ali pamzere. Ndipo izi ndi zofanana kwambiri ndi zomwe zimachitika mumsewu wapamsewu pomwe aliyense akuyembekezera galimoto yoyamba. Galimoto yoyamba inayima ndipo aliyense anaima pamzere wautali. Kenako imasuntha, ndiye galimoto yotsatira imatha kuyendetsa kutsogolo ndikupeza chipika chake, ndi zina.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ngati izi sizikuwoneka zovuta kwa inu, ndiye tikulankhulani za ma deadlocks. Sindikudziwa kuti ndi ndani mwa inu omwe mudakumana nawo. Ili ndi vuto lodziwika bwino pamakina a database. Koma ma deadlocks ndi pamene gawo limodzi likudikirira gawo lina kuti lichite zina. Ndipo panthawiyi gawo lina likuyembekezera gawo loyamba kuti lichite zinazake.

Ndipo, mwachitsanzo, ngati Ivan anena kuti: “Ndipatseni kanthu,” ndipo ine ndimati: “Ayi, ndikupatsani kokha ngati mutandipatsa kanthu kena.” Ndipo iye anati, “Ayi, sindikupatsani inu ngati simundipatsa ine.” Ndipo timakhala mumkhalidwe wosakhazikika. Ndikukhulupirira kuti Ivan sangachite izi, koma mukumvetsa tanthauzo lakuti tili ndi anthu awiri omwe akufuna kupeza chinachake ndipo sali okonzeka kupereka mpaka winayo atawapatsa zomwe akufuna. Ndipo palibe yankho.

Ndipo kwenikweni, database yanu iyenera kuzindikira izi. Ndiyeno muyenera kuchotsa kapena kutseka imodzi mwa magawo, chifukwa mwinamwake iwo adzakhala kumeneko kwamuyaya. Ndipo timaziwona m'ma database, timaziwona m'makina ogwiritsira ntchito. Ndipo m'malo onse omwe tili ndi njira zofananira, izi zitha kuchitika.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo tsopano tiyika ma deadlocks awiri. Tiyika 50 ndi 80. Mzere woyamba, ndisintha kuchokera ku 50 mpaka 50. Ndipeza nambala yamalonda 710.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kenako ndisintha 80 kukhala 81, ndi 50 kukhala 51.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo izi ndi momwe zidzawonekere. Ndipo kotero 710 ili ndi mzere wotsekedwa, ndipo 711 ikuyembekezera kutsimikiziridwa. Tidawona izi powonjezera. 710 ndiye mwini wa mndandanda wathu. Ndipo 711 amadikirira 710 kuti amalize ntchitoyo.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo imanenanso kuti mizere yakufa imachitika pati. Ndipo apa ndi pomwe zimayamba kukhala zodabwitsa.

Kutsegula Postgres Lock Manager. Bruce Momjian

Tsopano tikusintha 80 mpaka 80.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo apa ndi pamene ma deadlocks amayamba. 710 ikuyembekezera yankho kuchokera ku 711, ndipo 711 ikuyembekezera 710. Ndipo izi sizidzatha bwino. Ndipo palibe njira yothetsera izi. Ndipo adzayembekezera yankho kuchokera kwa wina ndi mzake.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ingoyamba kuchedwetsa chilichonse. Ndipo ife sitikufuna zimenezo.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo Postgres ali ndi njira zowonera izi zikachitika. Ndipo izi zikachitika, mumapeza cholakwika ichi. Ndipo kuchokera pa izi zikuwonekeratu kuti ndondomeko yotereyi ikudikirira SHARE LOCK kuchokera ku ndondomeko ina, mwachitsanzo, yomwe imatsekedwa ndi ndondomeko ya 711. Ndipo ndondomekoyi inali kudikirira kuti SHARE LOCK iperekedwe pa ID yazinthu zotere ndipo idaletsedwa ndi izi. Chifukwa chake, pali vuto la deadlock pano.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kodi pali njira zitatu zakufa? Ndizotheka kodi? Inde.

Kutsegula Postgres Lock Manager. Bruce Momjian

Timalowetsa manambala awa mu tebulo. Timasintha 40 mpaka 40, timachita kutsekereza.

Kutsegula Postgres Lock Manager. Bruce Momjian

Timasintha 60 kukhala 61, 80 kukhala 81.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kenako timasintha 80 ndiyeno timakwera!

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo 714 tsopano ikuyembekezera 715. Ya 716 ikuyembekezera 715. Ndipo palibe chimene chingachitidwe.

Kutsegula Postgres Lock Manager. Bruce Momjian

Palibenso anthu awiri pano, pali anthu atatu pano. Ine ndikufuna chinachake kwa inu, uyu akufuna chinachake kwa munthu wachitatu, ndipo wachitatu akufuna chinachake kwa ine. Ndipo timadikirira njira zitatu chifukwa tonse timadikirira kuti winayo amalize zomwe ayenera kuchita.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo Postgres amadziwa mzere womwe izi zimachitika. Ndipo kotero izo zidzakupatsani uthenga wotsatira, womwe umasonyeza kuti muli ndi vuto pamene zolowetsa zitatu zikutsekereza wina ndi mzake. Ndipo palibe zoletsa pano. Izi zitha kukhala choncho pomwe zolemba 20 zimatsekereza wina ndi mnzake.

Kutsegula Postgres Lock Manager. Bruce Momjian

Vuto lotsatira ndi serializable.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ngati wapadera serializable loko.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo timabwerera ku 719. Zotsatira zake ndizabwinobwino.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo mutha kudina kuti mugwiritse ntchito kuchokera ku serializable.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo mukuzindikira kuti tsopano muli ndi loko yamtundu wina wa SA - zikutanthauza kuti sungatheke.

Kutsegula Postgres Lock Manager. Bruce Momjian

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo kotero tili ndi mtundu watsopano wa loko wotchedwa SARiadLock, womwe ndi loko yotsekera ndikukulolani kuti mulowetse mndandanda.

Kutsegula Postgres Lock Manager. Bruce Momjian

Komanso mutha kuyika ma index apadera.

Kutsegula Postgres Lock Manager. Bruce Momjian

Pa tebulo ili tili ndi ma index apadera.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndiye ngati ndiyika nambala 2 apa, kuti ndikhale ndi 2. Koma pamwamba kwambiri, ndimayika 2 wina. Ndipo mutha kuwona kuti 721 ili ndi loko yokha. Koma tsopano 722 ikuyembekezera 721 kuti imalize ntchito yake chifukwa siyingalowetse 2 mpaka itadziwa zomwe zidzachitike ku 721.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ngati tichita subtransaction.

Kutsegula Postgres Lock Manager. Bruce Momjian

Pano pali 723.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo ngati tisunga mfundoyo ndikuyisintha, ndiye kuti timapeza ID yatsopano yogulitsira. Ichi ndi chikhalidwe china chomwe muyenera kudziwa. Ngati tibweza izi, ndiye kuti ID yamalonda imachoka. 724 ikupita. Koma tsopano tili ndi 725.

Ndiye ndikuyesera kuchita chiyani pano? Ndikuyesera kukuwonetsani zitsanzo za maloko osazolowereka omwe mungapeze: kaya ndi maloko otha kutha kapena SAVEPOINT, awa ndi mitundu yosiyanasiyana ya maloko omwe aziwonekera pa loko.

Kutsegula Postgres Lock Manager. Bruce Momjian

Uku ndikupanga maloko omveka (omveka), omwe ali ndi pg_advisory_lock.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo mukuwona kuti mtundu wotsekereza walembedwa ngati upangiri. Ndipo apa akuti "advisory" mofiira. Ndipo mutha kuletsa nthawi imodzi chonchi ndi pg_advisory_unlock.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo pomaliza, ndikufuna kukuwonetsani chinthu chimodzi chopatsa chidwi. Ndipanga mawonekedwe ena. Koma ndilowa nawo pg_locks tebulo ndi pg_stat_activity tebulo. Ndipo ndichifukwa chiyani ndikufuna kuchita izi? Chifukwa izi zidzandilola kuyang'ana ndikuwona magawo onse apano ndikuwona ndendende zokhoma zomwe akuyembekezera. Ndipo izi ndizosangalatsa tikayika tebulo lokhoma ndi tebulo lamafunso.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo apa tikupanga pg_stat_view.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo timasintha mzere umodzi. Ndipo apa tikuwona 724. Kenako timasintha mzere wathu kukhala atatu. Ndipo mukuwona chiyani pano tsopano? Izi ndi zopempha, mwachitsanzo, mukuwona mndandanda wonse wa zopempha zomwe zalembedwa kumanzere. Ndiyeno kumanja mukhoza kuona blockages ndi zimene kulenga. Ndipo zitha kukhala zomveka bwino kwa inu kuti musamabwererenso ku gawo lililonse nthawi zonse ndikuwona ngati mukufuna kulowa nawo kapena ayi. Iwo amatichitira izo.

Mbali ina yomwe ili yothandiza kwambiri ndi pg_blocking_pids. Mwina simunamvepo za iye. Kodi iye akuchita chiyani? Zimatithandiza kudziwa kuti gawoli 11740 ndi ma ID otani omwe akuyembekezera. Ndipo mutha kuwona kuti 11740 ikuyembekezera 724. Ndipo 724 ili pamwamba kwambiri. Ndipo 11306 ndiye ID yanu yantchito. Kwenikweni, ntchitoyi imadutsa pa tebulo lanu la loko. Ndipo ndikudziwa kuti ndizovuta pang'ono, koma mumatha kuzimvetsa. Kwenikweni ntchitoyi imadutsa patebulo lokhoma ndikuyesera kupeza komwe ID yamtunduwu imapatsidwa maloko omwe akudikirira. Ndipo imayesanso kudziwa njira ya ID yomwe ikudikirira loko ili nayo. Kotero inu mukhoza kuyendetsa ntchitoyi pg_blocking_pids.

Ndipo izi zingakhale zothandiza kwambiri. Tidangowonjezera izi mu mtundu wa 9.6, ndiye kuti izi ndi zaka 5 zokha, koma ndizothandiza kwambiri. Ndipo zomwezo zikugwiranso ntchito pa pempho lachiwiri. Zimasonyeza ndendende zimene tiyenera kuona.

Kutsegula Postgres Lock Manager. Bruce Momjian

Izi ndi zomwe ndimafuna kuyankhula nanu. Ndipo monga ndimayembekezera, tinathera nthaŵi yathu yonse chifukwa chakuti panali masilaidi ambiri. Ndipo zithunzi zilipo kuti zitsitsidwe. Ndikufuna kukuthokozani chifukwa chokhala pano. Ndikukhulupirira kuti mudzasangalala ndi msonkhano wonsewo, zikomo kwambiri!

Mafunso:

Mwachitsanzo, ngati ndikuyesera kusintha mizere, ndipo gawo lachiwiri likuyesera kuchotsa tebulo lonse. Momwe ndikumvera, payenera kukhala china chake ngati loko yofuna. Kodi pali zinthu zotere ku Postgres?

Kutsegula Postgres Lock Manager. Bruce Momjian

Tiyeni tibwerere kuchiyambi. Mungakumbukire kuti mukachita chilichonse, mwachitsanzo mukamapanga ZOSANKHA, timatulutsa AccessShareLock. Ndipo izi zimalepheretsa tebulo kugwetsedwa. Kotero ngati inu, mwachitsanzo, mukufuna kusintha mzere patebulo kapena kuchotsa mzere, ndiye kuti wina sangathe kuchotsa tebulo lonse nthawi imodzi chifukwa mukugwira AccessShareLock pa tebulo lonse ndi pamzerewu. Ndipo mukamaliza, akhoza kuchotsa. Koma pamene inu mwachindunji kusintha chinachake kumeneko, iwo sangathe kuzichita.

Tiyeni tichitenso. Tiyeni tipitirire kuchitsanzo cha kufufuta. Ndipo mukuwona momwe pali loko yokhazikika pamzere pamwamba pa tebulo lonse.

Izi ziwoneka ngati loko basi, sichoncho?

Inde, zikuwoneka ngati izo. Ndikumvetsa zomwe mukunena. Mukunena kuti ndikapanga SALKHA ndiye ndili ndi ShareExclusive ndiyeno ndimapanga Row Exclusive, kodi zimakhala vuto? Koma chodabwitsa izi sizibweretsa vuto. Izi zikuwoneka ngati kukulitsa digirii yotseka, koma kwenikweni ndili ndi loko yomwe imalepheretsa kufufutidwa. Ndipo tsopano, ndikapanga loko yamphamvu kwambiri, imalepheretsa kufufutidwa. Kotero siziri ngati ndikukwera. Ndiko kuti, izo zinalepheretsa kuti zisachitike pamene zinali pa mlingo wotsika kwambiri, kotero pamene ine ndikweza mulingo wake zimalepheretsabe tebulo kuti lichotsedwe.

Ndikumvetsa zomwe mukunena. Palibe chiwopsezo chokweza loko, pomwe mukuyesera kusiya loko kuti muwonetse cholimba. Apa zimangowonjezera kupewa izi ponseponse, kotero sizimayambitsa mkangano uliwonse. Koma ndi funso labwino. Zikomo kwambiri pofunsa izi!

Kodi tiyenera kuchita chiyani kuti tipewe vuto lachikumbutso tikakhala ndi magawo ambiri, ogwiritsa ntchito ambiri?

Postgres imangozindikira zomwe zikuchitika. Ndipo izo basi kuchotsa mmodzi wa magawo. Njira yokhayo yopewera kutsekereza kwakufa ndikutsekereza anthu mu dongosolo lomwelo. Ndiye mukayang'ana pa ntchito yanu, nthawi zambiri chifukwa cha ma deadlocks ... Tiyerekeze kuti ndikufuna kuletsa zinthu ziwiri zosiyana. Ntchito imodzi imakhoma tebulo 1, ndipo pulogalamu ina imatseka 2, kenako tebulo 1. Ndipo njira yosavuta yopewera ma deadlocks ndiyo kuyang'ana pulogalamu yanu ndikuyesera kuonetsetsa kuti kutseka kukuchitika mu dongosolo lomwelo pamapulogalamu onse. Ndipo izi nthawi zambiri zimachotsa 80% yamavuto, chifukwa anthu amitundu yonse amalemba izi. Ndipo ngati muwatsekereza mu dongosolo lomwelo, ndiye kuti simukumana ndi vuto la deadlock.

Zikomo kwambiri chifukwa chakuchita kwanu! Munalankhula za vacuum yodzaza ndipo, ngati ndikumvetsetsa, vacuum yodzaza imasokoneza dongosolo la zosungirako zosungirako zosiyana, kotero amasunga zolemba zomwe zilipo osasintha. Chifukwa chiyani vacuum imatenga maloko okhawo ndipo chifukwa chiyani imasemphana ndi kulemba?

Ndilo funso labwino. Chifukwa chake ndikuti vacuum yodzaza ndi tebulo. Ndipo kwenikweni tikupanga mtundu watsopano wa tebulo. Ndipo tebulo lidzakhala latsopano. Zikuoneka kuti iyi idzakhala mtundu watsopano wa tebulo. Ndipo vuto ndi loti tikamachita izi, sitifuna kuti anthu aziwerenga chifukwa timafunikira kuti awone tebulo latsopano. Ndipo kotero izi zikugwirizana ndi funso lapitalo. Ngati titha kuwerenga nthawi yomweyo, sitingathe kusuntha ndikuwongolera anthu ku tebulo latsopano. Tiyenera kudikirira kuti aliyense amalize kuwerenga tebulo ili, chifukwa chake ndi maloko okhawo.
Timangonena kuti tatseka kuyambira pachiyambi chifukwa tikudziwa kuti pamapeto pake tidzafunika loko yokha kuti tisunthire aliyense kukope latsopano. Kotero ife tikhoza kuthetsa izi. Ndipo timachita motere ndi indexing munthawi yomweyo. Koma izi ndizovuta kwambiri kuchita. Ndipo izi zikugwirizana kwambiri ndi funso lanu lakale lokhudza loko kokha.

Kodi ndizotheka kuwonjezera nthawi yotseka ku Postgres? Ku Oracle, nditha, mwachitsanzo, kulemba "sankhani kuti musinthe" ndikudikirira masekondi 50 musanasinthe. Zinali zabwino pakugwiritsa ntchito. Koma ku Postgres, ndiyenera kuchita nthawi yomweyo osadikirira, kapena kudikirira mpaka nthawi.

Inde, mutha kusankha nthawi yomaliza pamaloko anu, pamaloko anu. Mukhozanso kutulutsa lamulo loti palibe njira, zomwe ... ngati simungathe kupeza loko. Chifukwa chake, mwina nthawi yotsekera kapena china chake chomwe chingakuthandizeni kuchita izi. Izi sizimachitidwa pamlingo wa syntactic. Izi zimachitika ngati kusintha kwa seva. Nthawi zina izi sizingagwiritsidwe ntchito.

Kodi mungatsegule slide 75?

Inde.

Kutsegula Postgres Lock Manager. Bruce Momjian

Ndipo funso langa ndi ili. Chifukwa chiyani njira zonse ziwiri zikuyembekezera 703?

Ndipo ili ndi funso lalikulu. Sindikumvetsa, mwa njira, chifukwa chiyani Postgres amachita izi. Koma pamene 703 inalengedwa, inali kuyembekezera 702. Ndipo pamene 704 ndi 705 akuwonekera, zikuwoneka ngati sakudziwa zomwe akuyembekezera chifukwa palibe kanthu komweko. Ndipo Postgres amachita motere: pamene simungathe kupeza loko, imalemba kuti "N'chifukwa chiyani mukukonza?", Chifukwa mukudikirira kale munthu. Chifukwa chake tingoyisiya kuti ikhale m'mlengalenga, siyisinthanso. Koma chinachitika ndi chiyani apa? 702 itangomaliza ntchitoyi ndipo 703 idalandira loko yake, makinawo adabwereranso. Ndipo adanena kuti tsopano tili ndi anthu awiri omwe akuyembekezera. Ndiyeno tiyeni tisinthe pamodzi. Ndipo tiyeni tisonyeze kuti onse akuyembekezera.

Sindikudziwa chifukwa chake Postgres amachita izi. Koma pali vuto lotchedwa f…. Zikuwoneka kwa ine kuti ili si liwu mu Russian. Apa ndi pamene aliyense akuyembekezera nyumba yachifumu imodzi, ngakhale pali akuluakulu 20 omwe akuyembekezera nyumbayi. Ndipo mwadzidzidzi onse amadzuka nthawi imodzi. Ndipo aliyense akuyamba kuyesera kuchitapo kanthu. Koma dongosolo limapangitsa kuti aliyense adikire 703. Chifukwa onse akuyembekezera, ndipo nthawi yomweyo tidzawafola onse. Ndipo ngati pempho lina latsopano likuwoneka lomwe lidapangidwa pambuyo pa izi, mwachitsanzo, 707, ndiye kuti padzakhalanso chopanda kanthu.

Ndipo zikuwoneka kwa ine kuti izi zachitika kotero kuti tikhoza kunena kuti panthawiyi 702 ikuyembekezera 703, ndipo onse omwe akubwera pambuyo pake sadzakhala ndi mwayi uliwonse m'munda uno. Koma woperekera zakudya woyamba atangochoka, onse omwe anali kuyembekezera nthawi imeneyo asanasinthe amalandira chizindikiro chomwecho. Ndipo kotero ine ndikuganiza izi zachitika kuti ife tikhoza kukonza dongosolo kuti iwo analamula bwino.

Nthawi zonse ndimayang'ana izi ngati chodabwitsa. Chifukwa apa, mwachitsanzo, sitiwalemba konse. Koma zikuwoneka kwa ine kuti nthawi iliyonse yomwe timapereka loko yatsopano, timayang'ana onse omwe akuyembekezera. Kenako timawafola onse. Ndiyeno watsopano aliyense amene abwera amangolowa pamzere munthu wina akamaliza kukonzedwa. Funso labwino kwambiri. Zikomo kwambiri chifukwa cha funso lanu!

Zikuwoneka kwa ine kuti ndizomveka kwambiri pamene 705 ikuyembekeza 704.

Koma vuto apa ndi lotsatila. Mwaukadaulo, mutha kudzuka chimodzi kapena chimzake. Ndipo kotero ife tidzadzuka chimodzi kapena chimzake. Koma chimachitika ndi chiyani mu dongosolo? Mutha kuwona momwe 703 pamwamba pomwe adatsekereza ID yake yogulitsa. Umu ndi momwe Postgres amagwirira ntchito. Ndipo 703 yatsekedwa ndi ID yake yamalonda, kotero ngati wina akufuna kuyembekezera, ndiye kuti adzadikirira 703. Ndipo, makamaka, 703 imamaliza. Ndipo pokhapokha ikamalizidwa ndi imodzi mwazinthuzo zimadzuka. Ndipo sitikudziwa chomwe ndondomekoyi idzakhala. Kenako timakonza zonse pang'onopang'ono. Koma sizikudziwika kuti ndi njira iti yomwe imadzutsidwa poyamba, chifukwa ikhoza kukhala iliyonse mwa njirazi. Kwenikweni, tinali ndi wokonza mapulani yemwe adati tsopano titha kudzutsa chilichonse mwazinthu izi. Timangosankha imodzi mwachisawawa. Choncho onse awiri ayenera kuzindikiridwa chifukwa tikhoza kudzutsa aliyense wa iwo.

Ndipo vuto ndiloti tili ndi CP-infinity. Chifukwa chake, ndizotheka kuti titha kudzuka pambuyo pake. Ndipo ngati, mwachitsanzo, tidzutsa wina wamtsogolo, tidzadikirira yemwe wangolandira chipikacho, kuti tisadziwe yemwe adzadzutse kaye. Timangopanga izi, ndipo dongosololi lidzawadzutsa mwachisawawa.

pali Nkhani zokhudzana ndi maloko a Egor Rogov. Onani, nawonso ndi osangalatsa komanso othandiza. Mutuwu, ndithudi, ndi wovuta kwambiri. Zikomo kwambiri, Bruce!

Source: www.habr.com

Kuwonjezera ndemanga