Buɗe Manajan Kulle Postgres. Bruce Momjian

Kwafi na jawabin Bruce Momjian na 2020 "Buɗe Manajan Kulle Postgres".

Buɗe Manajan Kulle Postgres. Bruce Momjian

(Lura: Duk tambayoyin SQL daga zane-zane za a iya samun su ta wannan hanyar haɗin yanar gizon: http://momjian.us/main/writings/pgsql/locking.sql)

Sannu! Yana da kyau ka sake zama a nan Rasha. Yi hakuri ba zan iya zuwa bara ba, amma a wannan shekarar ni da Ivan muna da manyan tsare-tsare. Ina fatan zama a nan sau da yawa. Ina son zuwa Rasha. Zan ziyarci Tyumen, Tver. Na yi matukar farin ciki da zan iya ziyartar wadannan garuruwa.

Sunana Bruce Momjian. Ina aiki a EnterpriseDB kuma ina aiki tare da Postgres sama da shekaru 23. Ina zaune a Philadelphia, Amurka. Ina tafiya kamar kwanaki 90 a shekara. Kuma ina halartar taro kusan 40. Nawa Gidan Yanar Gizo, wanda ya ƙunshi nunin faifai waɗanda zan nuna muku yanzu. Saboda haka, bayan taron za ku iya sauke su daga gidan yanar gizona na sirri. Hakanan ya ƙunshi kusan gabatarwa 30. Har ila yau, akwai bidiyoyi da adadi mai yawa na shigarwar blog, fiye da 500. Wannan hanya ce mai cikakken bayani. Kuma idan kuna sha'awar wannan kayan, to ina gayyatar ku don amfani da shi.

Na kasance malami, farfesa kafin in fara aiki da Postgres. Kuma na yi farin ciki da cewa yanzu zan iya gaya muku abin da zan faɗa muku. Wannan yana ɗaya daga cikin gabatarwa na mafi ban sha'awa. Kuma wannan gabatarwar ta ƙunshi nunin faifai 110. Za mu fara magana da abubuwa masu sauƙi, kuma a ƙarshe rahoton zai zama mai rikitarwa, kuma zai zama mai rikitarwa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan tattaunawa ce mara dadi. Toshewa ba shine abin da ya fi shahara ba. Muna son wannan ya ɓace a wani wuri. Kamar zuwa wurin likitan hakori ne.

Buɗe Manajan Kulle Postgres. Bruce Momjian

  1. Kulle matsala ce ga mutane da yawa waɗanda ke aiki a cikin bayanan bayanai kuma suna da matakai da yawa suna gudana a lokaci guda. Suna buƙatar toshewa. Wato a yau zan ba ku ilimi na asali akan toshewa.
  2. ID na kasuwanci Wannan wani bangare ne mai ban sha'awa na gabatarwa, amma suna buƙatar fahimtar su.
  3. Na gaba za mu yi magana game da nau'ikan toshewa. Wannan bangare ne na inji mai adalci.
  4. Kuma a ƙasa za mu ba da wasu misalai na toshewa. Kuma zai yi wuya a fahimta.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Bari muyi magana game da toshewa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kalmomin mu suna da wahala sosai. Ku nawa ne kuka san inda wannan sashe ya fito? Mutane biyu. Wannan daga wasa ne mai suna Colossal Cave Adventure. Wasan kwamfuta ne na tushen rubutu a cikin 80s, ina tsammanin. A nan dole ne ka shiga cikin kogo, cikin ɗakin karatu, kuma rubutun ya canza, amma abin da ke ciki ya kasance kusan iri ɗaya kowane lokaci. Haka na tuna wannan wasan.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma a nan muna ganin sunan makullan da suka zo mana daga Oracle. Muna amfani da su.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Anan muna ganin sharuddan da ke ruɗani. Misali, SHARE UPDATE ECXLUSIVE. Na gaba SHARE RAW ECXLUSIVE. A gaskiya, waɗannan sunaye ba su fito fili ba. Za mu yi ƙoƙarin yin la'akari da su dalla-dalla. Wasu sun ƙunshi kalmar “share”, ma’ana a raba. Wasu sun ƙunshi kalmar “keɓe”. Wasu sun ƙunshi waɗannan kalmomi biyun. Ina so in fara da yadda waɗannan makullai ke aiki.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma kalmar “shigarwa” ita ma tana da matukar muhimmanci. Kuma kalmomin “jere” kirtani ne. Wato, rarraba damar shiga, rarraba layi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wani batun da ya kamata a fahimta a cikin Postgres, wanda abin takaici ba zan iya rufewa a cikin maganata ba, shine MVCC. Ina da gabatarwa daban akan wannan batu akan gidan yanar gizona. Kuma idan kuna tunanin wannan gabatarwar yana da wahala, MVCC tabbas shine mafi wuya na. Kuma idan kuna sha'awar, kuna iya kallon shi akan gidan yanar gizon. Kuna iya kallon bidiyon.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wani abu da muke buƙatar fahimta shine ID na kasuwanci. Yawancin ma'amaloli ba za su iya aiki ba tare da masu ganowa na musamman ba. Kuma a nan muna da bayanin menene ciniki. Postgres yana da tsarin lambobin ma'amala guda biyu. Na san wannan ba kyakkyawar mafita ba ce.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Har ila yau, ka tuna cewa nunin faifai zai zama da wuya a fahimta, don haka abin da aka haskaka a ja shine abin da kake buƙatar kula da shi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

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

Mu gani. An haskaka lambar ciniki da ja. Ana nuna aikin SELECT pg_back anan. Yana dawo da cinikina da ID ɗin ciniki.

Wani abu kuma, idan kuna son wannan gabatarwar kuma kuna son gudanar da shi a kan bayananku, to zaku iya zuwa wannan hanyar haɗin yanar gizo cikin ruwan hoda sannan ku saukar da SQL don wannan gabatarwar. Kuma za ku iya kawai gudanar da shi a cikin PSQL ɗin ku kuma duk gabatarwar za ta kasance akan allonku nan da nan. Ba zai ƙunshi furanni ba, amma aƙalla muna iya ganinsa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

A wannan yanayin muna ganin ID ɗin ma'amala. Wannan ita ce lambar da muka sanya mata. Kuma akwai wani nau'in ID na ma'amala a cikin Postgres, wanda ake kira ID ɗin ma'amala mai mahimmanci

Kuma dole ne mu fahimci wannan. Wannan yana da mahimmanci, in ba haka ba ba za mu iya fahimtar kullewa a Postgres ba.

ID ɗin ma'amala ta kama-da-wane ID ɗin ma'amala ne wanda baya ƙunshe da ƙima mai tsayi. Misali, idan na gudanar da umurnin SELECT, to da alama ba zan canza bayanan ba, ba zan kulle komai ba. Don haka lokacin da muke gudanar da SELECT mai sauƙi, ba ma ba wa waccan ma'amalar ID na dindindin ba. Muna ba ta ID na gani kawai a wurin.

Kuma wannan yana inganta aikin Postgres, yana inganta iyawar tsaftacewa, don haka ID ɗin ma'amala mai kama da juna ya ƙunshi lambobi biyu. Lambar farko kafin slash ita ce ID na baya. Kuma a hannun dama muna ganin counter kawai.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka, idan na gudanar da buƙatun, yana cewa ID na baya shine 2.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma idan na gudanar da jerin irin waɗannan ma'amaloli, to, za mu ga cewa ma'aunin yana ƙaruwa duk lokacin da na gudanar da tambaya. Misali, lokacin da na gudanar da tambayar 2/10, 2/11, 2/12, da sauransu.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Ka tuna cewa akwai ginshiƙai biyu a nan. A gefen hagu muna ganin ID na ma'amala mai kama-da-wane - 2/12. Kuma a hannun dama muna da ID ɗin ciniki na dindindin. Kuma wannan filin babu kowa. Kuma wannan ma'amala ba ta gyara ma'ajin bayanai. Don haka ba zan ba shi ID ɗin ciniki na dindindin ba.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Da zarar na gudanar da umarni na bincike ((ANALYZE)), wannan tambayar tana ba ni ID ɗin ciniki na dindindin. Dubi yadda wannan ya canza mana. Ba ni da wannan ID a da, amma yanzu ina da shi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

To ga wata bukata, wata mu’amala. Lambar ma'amala ta kama-da-wane ita ce 2/13. Kuma idan na nemi ID ɗin ciniki na dindindin, to lokacin da na kunna tambaya, zan samu.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka, sau ɗaya kuma. Muna da ID na ma'amala mai kama-da-wane da ID ɗin ma'amala mai tsayi. Kawai fahimtar wannan batu don fahimtar halin Postgres.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Mu ci gaba zuwa kashi na uku. Anan za mu yi tafiya kawai ta cikin nau'ikan makullai daban-daban a cikin Postgres. Ba shi da ban sha'awa sosai. Sashe na ƙarshe zai zama mai ban sha'awa sosai. Amma dole ne mu yi la'akari da ainihin abubuwan, domin in ba haka ba ba za mu fahimci abin da zai faru a gaba ba.

Za mu shiga cikin wannan sashe, za mu kalli kowane nau'in kullewa. Kuma zan nuna muku misalan yadda ake shigar da su, yadda suke aiki, zan nuna muku wasu tambayoyin da za ku iya amfani da su don ganin yadda kullewa ke aiki a Postgres.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don ƙirƙirar tambaya da ganin abin da ke faruwa a Postgres, muna buƙatar ba da tambayar a cikin tsarin tsarin. A wannan yanayin, pg_lock yana haskakawa da ja. Pg_lock tebur tsarin ne wanda ke gaya mana menene makullai a halin yanzu a cikin Postgres.

Koyaya, yana da matukar wahala a gare ni in nuna muku pg_lock da kanta saboda yana da rikitarwa. Don haka na ƙirƙiri hoto mai nuna pg_locks. Kuma yana yi mini wasu ayyuka waɗanda ke ba ni damar fahimtar da kyau. Wato yana cire makullaina, zaman kaina, da sauransu. Daidaitaccen SQL ne kawai kuma yana ba ku damar nuna muku abin da ke faruwa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wata matsala ita ce wannan ra'ayi yana da faɗi sosai, don haka dole ne in ƙirƙiri na biyu - lockview2.

Buɗe Manajan Kulle Postgres. Bruce Momjian Kuma yana nuna mani ƙarin ginshiƙai daga tebur. Da kuma wani wanda ke nuna mani sauran ginshiƙan. Wannan abu ne mai rikitarwa, don haka na yi ƙoƙarin gabatar da shi a sauƙaƙe kamar yadda zai yiwu.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka mun kirkiro tebur mai suna Lockdemo. Kuma mun kirkiro layi daya a can. Wannan shine teburin samfurin mu. Kuma za mu ƙirƙira sassan kawai don nuna muku misalan makullai.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka, jere ɗaya, ginshiƙi ɗaya. Nau'in kulle na farko ana kiransa ACCESS SHARE. Wannan shi ne mafi ƙarancin ƙuntatawa. Wannan yana nufin cewa a zahiri baya cin karo da wasu makullai.

Kuma idan muna son bayyana ma'anar kullewa, muna gudanar da umarnin "kulle tebur". Kuma a fili zai toshe, watau a cikin ACCESS SHARE yanayin mu kaddamar da lock table. Kuma idan na gudanar da PSQL a bango, to zan fara zama na biyu daga zama na farko ta wannan hanya. Wato me zan yi anan? Ina zuwa wani zama kuma in gaya masa "nuna mani makullin wannan buƙatar." Kuma a nan ina da AccessShareLock a cikin wannan tebur. Wannan shine ainihin abin da na nema. Kuma ya ce an sanya block din. Mai sauqi qwarai.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Bugu da ari, idan muka dubi shafi na biyu, to babu wani abu a can. Babu komai.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma idan na gudanar da umarnin "SELECT", to wannan ita ce hanya madaidaiciya (ta sarari) don neman AccessShareLock. Don haka na saki tebur na kuma in gudanar da tambaya kuma tambayar ta dawo da layuka da yawa. Kuma a cikin ɗayan layin muna ganin AccessShareLock. Don haka, SELECT yana kiran AccessShareLock akan tebur. Kuma ba ya cin karo da kusan komai saboda kulle-kulle ne mara nauyi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Idan na gudanar da SELECT kuma ina da teburi daban-daban guda uku fa? A da, tebur ɗaya kawai nake gudana, yanzu ina gudu uku: pg_class, pg_namespace da pg_attribute.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma yanzu idan na kalli tambayar, na ga 9 AccessShareLocks a cikin tebur uku. Me yasa? Tebura uku an haskaka su cikin shuɗi: pg_attribute, pg_class, pg_namespace. Amma kuna iya ganin cewa duk fihirisar da aka siffanta ta cikin waɗannan allunan kuma suna da AccessShareLock.

Kuma wannan makulli ne wanda a zahiri baya cin karo da wasu. Kuma duk abin da yake yi shine kawai hana mu sake saita tebur yayin da muke zaɓar shi. Yana da ma'ana. Wato, idan muka zaɓi tebur, ya ɓace a wannan lokacin, to wannan kuskure ne, don haka AccessShare ƙaramin kulle ne wanda ke gaya mana "kada ku sauke wannan tebur yayin da nake aiki". Ainihin, abin da take yi ke nan.

Buɗe Manajan Kulle Postgres. Bruce Momjian

ROW SHARE - Wannan makullin ya ɗan bambanta.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Bari mu dauki misali. Zaɓi hanyar raba ROW na kulle kowane layi ɗaya ɗaya. Ta haka babu wanda zai iya goge su ko canza su yayin da muke kallon su.

Buɗe Manajan Kulle Postgres. Bruce MomjianTo me SHARE LOCK yake yi? Mun ga cewa ID ɗin ma'amala shine 681 don SELECT. Kuma wannan yana da ban sha'awa. Me ya faru a nan? Lokaci na farko da muka ga lambar yana cikin filin "Kulle". Muna ɗaukar ID ɗin ciniki kuma ya ce yana toshe shi a cikin keɓantaccen yanayi. Abin da kawai yake yi shi ne ya ce ina da layin da aka kulle ta hanyar fasaha a wani wuri a cikin tebur. Sai dai bai bayyana ainihin inda yake ba. Za mu duba wannan dalla-dalla kadan nan gaba.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Anan sai mu ce makullin mu ke amfani da shi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka, keɓantaccen kulle a sarari yana cewa keɓantacce. Hakanan idan kun goge layi a cikin wannan tebur, to wannan shine abin da zai faru, kamar yadda kuke gani.

Buɗe Manajan Kulle Postgres. Bruce Momjian

SHARE EXCLUSIVE shine makulli mai tsayi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan shi ne (ANALYZE) umarnin nazari wanda za a yi amfani da shi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

KULLUM RABA – zaku iya kulle zahiri a yanayin raba.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Hakanan zaka iya ƙirƙirar fihirisa na musamman. Kuma a can za ku ga SHARE LOCK, wanda ke cikin su. Sannan ya kulle tebirin ya dora SHARE LOCK akansa.

Ta hanyar tsohuwa, KULLUM RABA akan tebur yana nufin cewa wasu mutane za su iya karanta teburin, amma babu wanda zai iya gyara shi. Kuma wannan shine ainihin abin da ke faruwa lokacin da kuka ƙirƙiri fihirisa na musamman.

Idan na ƙirƙiri fihirisa na musamman a lokaci guda, to, zan sami nau'in kullewa daban-daban domin, kamar yadda kuka tuna, yin amfani da fihirisa lokaci guda yana rage buƙatar kullewa. Kuma idan na yi amfani da makullin al'ada, ma'auni na al'ada, to, zan hana rubutawa zuwa ma'aunin tebur yayin da ake ƙirƙira shi. Idan na yi amfani da fihirisar lokaci guda, to ina buƙatar amfani da wani nau'in kullewa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

SHARE ROW EXCLUSIVE – kuma ana iya saita shi a sarari (a bayyane).

Buɗe Manajan Kulle Postgres. Bruce Momjian

Ko kuma za mu iya ƙirƙirar ka'ida, watau, ɗaukar takamaiman yanayin da za a yi amfani da shi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

KENAN kullewa yana nufin cewa babu wanda zai iya canza tebur.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Anan muna ganin nau'ikan makullai daban-daban.

Buɗe Manajan Kulle Postgres. Bruce Momjian

ACCESS EXCLUSIVE, misali, umarni ne na toshewa. Misali, idan kun yi CLUSTER table, to wannan yana nufin cewa babu wanda zai iya rubuta a can. Kuma yana kulle ba kawai teburin kanta ba, har ma da fihirisa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan shine shafi na biyu na toshewar ACCESS EXCLUSIVE, inda muka ga ainihin abin da yake toshewa a cikin tebur. Yana kulle layuka guda ɗaya na tebur, wanda yake da ban sha'awa sosai.

Wannan shine duk ainihin bayanin da nake son bayarwa. Mun yi magana game da makullai, game da ID na ma'amala, mun yi magana game da ID na ma'amala, game da ID na ma'amala na dindindin.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma yanzu za mu shiga ta wasu misalan toshewa. Wannan shine bangare mafi ban sha'awa. Za mu dubi lokuta masu ban sha'awa sosai. Kuma burina a cikin wannan gabatarwa shine in ba ku kyakkyawar fahimtar abin da Postgres ke yi a zahiri lokacin da yake ƙoƙarin toshe wasu abubuwa. Ina tsammanin yana da kyau sosai a toshe sassa.

Bari mu kalli wasu takamaiman misalai.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Za mu fara da teburi da jere ɗaya a cikin tebur. Lokacin da na saka wani abu ina da ExclusiveLock, ID na kasuwanci da ExclusiveLock da aka nuna akan tebur.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Me zai faru idan na saka wasu layuka biyu? Kuma yanzu teburin mu yana da layuka uku. Kuma na saka layi daya na samu wannan a matsayin fitarwa. Idan kuma na kara saka layuka biyu, me ke da ban mamaki game da hakan? Akwai wani abu mai ban mamaki a nan saboda na ƙara layuka uku zuwa wannan tebur, amma har yanzu ina da layuka biyu a cikin teburin kulle. Kuma wannan shine ainihin ainihin halayen Postgres.

Mutane da yawa suna tunanin cewa idan a cikin rumbun adana bayanai kun kulle layuka 100, to kuna buƙatar ƙirƙirar shigarwar kulle 100. Idan na toshe layuka 1 a lokaci ɗaya, to zan buƙaci irin waɗannan tambayoyin 000. Kuma idan ina buƙatar miliyan ko biliyan don toshewa. Amma idan muka yi wannan, ba zai yi aiki sosai ba. Idan kun yi amfani da tsarin da ke haifar da toshe shigarwar ga kowane layi ɗaya, to za ku ga cewa wannan yana da rikitarwa. Domin kuna buƙatar ayyana tebur ɗin kulle nan da nan wanda zai iya mamayewa, amma Postgres baya yin hakan.

Kuma abin da ke da mahimmanci game da wannan zanen shine cewa yana nuna a fili cewa akwai wani tsarin da ke gudana a cikin MVCC wanda ke kulle layuka guda ɗaya. Don haka lokacin da kuka kulle biliyoyin layuka, Postgres baya ƙirƙirar umarnin kulle daban na biliyan guda. Kuma wannan yana da tasiri mai kyau akan yawan aiki.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Me game da sabuntawa? Ina sabunta layin yanzu, kuma za ku ga cewa ya yi ayyuka daban-daban guda biyu a lokaci guda. Ya kulle tebur a lokaci guda, amma kuma ya kulle fihirisar. Kuma yana buƙatar kulle index saboda akwai ƙuntatawa na musamman akan wannan tebur. Kuma muna son tabbatar da cewa babu wanda ya canza shi, don haka mun toshe shi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Me zai faru idan ina son sabunta layuka biyu? Kuma muna ganin haka yake yi. Muna yin sabuntawa sau biyu, amma daidai adadin layukan kulle iri ɗaya.

Idan kuna mamakin yadda Postgres ke yin wannan, kuna buƙatar sauraron jawabaina akan MVCC don koyon yadda Postgres a ciki ke yiwa waɗannan layukan canzawa. Kuma Postgres yana da hanyar da yake yin haka, amma ba ya yin shi a matakin kulle tebur, yana yin shi a matakin ƙasa da inganci.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Idan ina son share wani abu fa? Idan na goge, alal misali, layi ɗaya kuma har yanzu ina da abubuwan toshewa biyu na toshewa, kuma ko da ina son goge su duka, suna nan.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma, misali, ina so in saka layukan 1, sannan in share ko ƙara layi 000, sannan waɗannan layukan guda ɗaya waɗanda na ƙara ko canza su, ba a rubuta su a nan. An rubuta su a ƙananan matakin a cikin jerin kanta. Kuma a lokacin jawabin MVCC na yi magana game da wannan daki-daki. Amma yana da matukar mahimmanci lokacin da kuke nazarin makullai don tabbatar da cewa kuna kullewa a matakin tebur kuma ba ku ganin yadda ake rikodin layuka ɗaya a nan.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Me game da tarewa bayyane?

Buɗe Manajan Kulle Postgres. Bruce Momjian

Idan na danna refresh, Ina da layuka biyu a kulle. Kuma idan na zaɓi su duka kuma na danna "update ko'ina," to, har yanzu ina da bayanan toshewa guda biyu.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Ba mu ƙirƙira rakodi daban-daban ga kowane jeri ɗaya ba. Domin sai yawan aiki ya ragu, zai iya zama da yawa daga ciki. Kuma muna iya samun kanmu a cikin wani yanayi mara dadi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Haka kuma, idan muka yi sharing, za mu iya yin shi duka sau 30.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Muna mayar da teburin mu, share komai, sannan mu sake saka layi daya.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wani hali da kuke gani a cikin Postgres wanda sananne ne kuma halin da ake so shine zaku iya yin sabuntawa ko zaɓi. Kuma kuna iya yin hakan a lokaci guda. Kuma zaɓi baya toshe sabuntawa da abu iri ɗaya a cikin kishiyar shugabanci. Muna gaya wa mai karatu kada ya toshe marubuci, kuma marubuci bai toshe mai karatu ba.

Zan nuna muku misalin wannan. Zan yi zabi yanzu. Za mu yi INSERT. Sannan za ku iya gani - 694. Kuna iya ganin ID na ma'amalar da ta yi wannan shigar. Kuma haka yake aiki.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma idan na kalli ID na baya yanzu, yanzu 695 ne.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma ina iya ganin 695 sun bayyana a teburina.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma idan na sabunta a nan kamar wannan, to ina samun wani akwati daban. A wannan yanayin, 695 keɓaɓɓen kulle ne, kuma sabuntawa yana da ɗabi'a iri ɗaya, amma babu wani rikici a tsakanin su, wanda ba sabon abu bane.

Kuma zaka iya ganin cewa a saman shine ShareLock, kuma a kasa yana da ExclusiveLock. Kuma duka ma'amaloli sun yi aiki.

Kuma kuna buƙatar sauraron maganata a MVCC don fahimtar yadda hakan ke faruwa. Amma wannan misali ne cewa za ku iya yin shi a lokaci guda, watau yin SELECT da UPDATE a lokaci guda.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Bari mu sake saiti kuma mu sake yin aiki ɗaya.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Idan kayi ƙoƙarin gudanar da sabuntawa guda biyu lokaci guda akan layi ɗaya, za'a toshe shi. Kuma ku tuna, na ce mai karatu ba ya toshe marubuci, kuma marubuci ba ya toshe mai karatu, amma wani marubuci ya toshe wani marubuci. Wato, ba za mu iya samun mutane biyu su sabunta layi ɗaya a lokaci guda ba. Dole ku jira har sai ɗayansu ya ƙare.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma don misalta wannan, zan kalli teburin Lockdemo. Kuma zamu kalli layi daya. Kowane ciniki 698.

Mun sabunta wannan zuwa 2. 699 shine sabuntawa na farko. Kuma an yi nasara ko kuma yana cikin ciniki mai gudana kuma yana jiran mu tabbatar ko sokewa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Amma dubi wani abu dabam - 2/51 shine kasuwancin mu na farko, zamanmu na farko. 3/112 ita ce buqatar ta biyu da ta fito daga saman wacce ta canza wannan darajar zuwa 3. Kuma idan kun lura, saman ya kulle kansa, wanda shine 699. Amma 3/112 bai ba da kulle ba. Rukunin Lock_mode yana faɗin abin da yake jira. Yana sa ran 699. Kuma in ka duba inda 699 yake, ya fi girma. Kuma me zaman farko ya yi? Ta ƙirƙiri keɓantaccen makulli akan ID ɗin kasuwancinta. Wannan shine yadda Postgres ke yi. Yana toshe ID ɗin kasuwancinsa. Kuma idan kuna son jira wani ya tabbatar ko sokewa, to kuna buƙatar jira yayin da ake ci gaba da ciniki. Kuma shi ya sa za mu iya ganin wani bakon layi.

Mu sake dubawa. A gefen hagu muna ganin ID ɗin sarrafa mu. A cikin shafi na biyu muna ganin ID ɗin mu na kasuwanci, kuma a cikin na uku muna ganin lock_type. Menene ma'anar wannan? Ainihin abin da yake cewa shine yana toshe ID ɗin ciniki. Amma lura cewa duk layuka a ƙasa suna faɗi alaƙa. Don haka kuna da nau'ikan makullai guda biyu akan tebur. Akwai makullin dangantaka. Sannan akwai blocking na ma'amala, inda zaka toshe da kanka, wanda shine ainihin abin da ke faruwa a layin farko ko a kasa, inda aka yi ciniki, inda muke jiran 699 ya gama aikinsa.

Zan ga abin da ya faru a nan. Kuma a nan abubuwa biyu suna faruwa a lokaci guda. Kuna kallon kulle ID na ma'amala a jere na farko wanda ya kulle kansa. Kuma ta toshe kanta don sa mutane su jira.

Idan ka kalli layi na 6, shigarwa ɗaya ne da na farko. Don haka an toshe ciniki 699. 700 kuma yana kulle kansa. Sannan a layin kasa za ku ga cewa muna jiran 699 ya gama aikinsa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma a cikin lock_type, tuple kuna ganin lambobi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuna iya ganin shi 0/10. Kuma wannan ita ce lambar shafin, da kuma madaidaicin wannan layi na musamman.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma kun ga ya zama 0/11 lokacin da muka sabunta.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Amma a gaskiya shi ne 0/10, saboda akwai jira don wannan aiki. Muna da damar ganin cewa wannan shine jerin abubuwan da nake jira don tabbatarwa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Da zarar mun tabbatar da shi kuma mun danna ƙaddamar, kuma lokacin da aka gama sabuntawa, wannan shine abin da muke sake samu. Kasuwanci 700 shine kawai kulle, ba ya jiran wani saboda an yi shi. Yana jira kawai don kammala cinikin. Da zarar 699 ya ƙare, ba ma jiran komai kuma. Kuma yanzu ma'amala 700 ta ce komai yana da kyau, yana da duk makullai da yake buƙata akan duk teburin da aka yarda.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma don sanya wannan duka ya fi rikitarwa, mun ƙirƙiri wani ra'ayi, wanda wannan lokacin zai samar mana da matsayi. Ba na tsammanin za ku fahimci wannan bukata. Amma wannan zai ba mu ƙarin haske game da abin da ke faruwa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan ra'ayi ne mai maimaitawa wanda kuma yana da wani sashe. Sannan ya sake dawo da komai tare. Mu yi amfani da wannan.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Menene idan muka yi sabuntawa guda uku a lokaci guda kuma mu ce jere yanzu uku ne. Kuma za mu canza 3 zuwa 4.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma a nan mun ga 4. Da kuma ma'amala ID 702.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Sannan zan canza 4 zuwa 5. Da 5 zuwa 6, da 6 zuwa 7. Kuma zan jera mutane da dama da za su jira a kawo karshen wannan ciniki.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma komai ya bayyana. Menene layin farko? Wannan shine 702. Wannan shine ID ɗin ciniki wanda ya fara saita wannan ƙimar. Menene aka rubuta a cikin ginshiƙin da aka ba da izini? Ina da alamomi f. Waɗannan sabuntawa na ne waɗanda (5, 6, 7) ba za a iya yarda da su ba saboda muna jiran ID 702 na ciniki ya ƙare. A can muna da toshe ID na ciniki. Kuma wannan yana haifar da kulle ID na ma'amala guda 5.

Kuma idan ka dubi 704, a 705, ba a rubuta komai a can ba tukuna, saboda ba su san abin da ke faruwa ba tukuna. Suna rubuta kawai cewa ba su da masaniyar abin da ke faruwa. Kuma za su yi barci ne kawai don suna jiran wani ya gama kuma a tashe su idan aka sami damar canza layuka.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan shi ne yadda abin yake. A fili yake cewa dukkansu suna jiran layi na 12.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan shi ne abin da muka gani a nan. A nan 0/12.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka da zarar an amince da ciniki na farko, za ku ga a nan yadda tsarin ke aiki. Kuma yanzu komai ya bayyana. Duk sun zama masu tsabta. Kuma a zahiri har yanzu suna jira.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Ga abin da ke faruwa. 702 a yi. Kuma yanzu 703 sun sami wannan makullin jere, sannan 704 suka fara jiran 703 suyi. Kuma 705 suna jiran wannan ma. Kuma idan aka gama duk wannan, sai su wanke kansu. Kuma ina so in nuna cewa kowa yana cikin layi. Kuma wannan yayi kama da yanayin cunkoson ababen hawa lokacin da kowa ke jiran motar farko. Motar farko ta tsaya kowa ya yi layi a dogon layi. Daga nan sai ta motsa, sannan motar ta gaba za ta iya yin gaba ta samu block dinta, da dai sauransu.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma idan wannan bai yi kama da rikitarwa ba a gare ku, to, yanzu za mu yi magana da ku game da matsi. Ban san wannenku ya ci karo da su ba. Wannan matsala ce gama gari a cikin tsarin bayanai. Amma ƙulle-ƙulle shine lokacin da wani zama yana jiran wani zama don yin wani abu. Kuma a wannan lokacin wani zaman yana jiran zaman farko don yin wani abu.

Kuma, alal misali, idan Ivan ya ce: "Ba ni wani abu," kuma na ce: "A'a, zan ba ku kawai idan kun ba ni wani abu dabam." Kuma ya ce, "A'a, ba zan ba ku ba idan ba ku ba ni ba." Kuma mun shiga cikin mawuyacin hali. Na tabbata Ivan ba zai yi haka ba, amma kun fahimci ma'anar cewa muna da mutane biyu da suke so su sami wani abu kuma ba su shirye su ba da shi ba har sai wani ya ba su abin da suke so. Kuma babu mafita.

Kuma da gaske, bayananku yana buƙatar gano wannan. Sannan kuna buƙatar share ko rufe ɗaya daga cikin zaman, saboda in ba haka ba za su kasance a can har abada. Kuma muna ganin shi a cikin bayanan bayanai, muna ganin shi a cikin tsarin aiki. Kuma a duk wuraren da muke da matakai iri ɗaya, wannan na iya faruwa.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma yanzu za mu shigar biyu deadlocks. Za mu sanya 50 da 80. A jere na farko, zan sabunta daga 50 zuwa 50. Zan sami lambar ciniki 710.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Sannan zan canza 80 zuwa 81, da 50 zuwa 51.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma wannan shi ne abin da zai kasance. Don haka 710 ya toshe jere, kuma 711 yana jiran tabbatarwa. Mun ga wannan lokacin da muka sabunta. 710 shine ma'abucin jerin mu. Kuma 711 suna jiran 710 don kammala cinikin.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma har ma ya ce akan wane layi ne aka yi ajalin. Kuma a nan ne inda ya fara samun m.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Yanzu muna sabunta 80 zuwa 80.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma a nan ne maƙasudin suka fara. 710 yana jiran amsa daga 711, kuma 711 yana jiran 710. Kuma wannan ba zai ƙare da kyau ba. Kuma babu wata hanya daga wannan. Kuma za su yi tsammanin amsa daga juna.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma kawai zai fara jinkirta komai. Kuma ba ma son hakan.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma Postgres yana da hanyoyin lura lokacin da wannan ya faru. Kuma idan wannan ya faru, kuna samun wannan kuskuren. Kuma daga wannan ya bayyana cewa irin wannan tsari da kuma irin wannan tsari yana jiran SHARE LOCK daga wani tsari, watau, wanda aka toshe ta hanyar 711. Kuma wannan tsari yana jiran a ba da SHARE LOCK akan irin wannan ID ɗin ciniki kuma an toshe shi ta hanyar irin wannan tsari. Saboda haka, a nan akwai wani matsi halin da ake ciki.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Akwai makullin hanyoyi uku? Shin zai yiwu? Ee.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Muna shigar da waɗannan lambobi a cikin tebur. Muna canza 40 zuwa 40, muna yin blocking.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Muna canza 60 zuwa 61, 80 zuwa 81.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Sannan mu canza 80 sannan mu buge!

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma 714 yanzu suna jiran 715. Na 716 yana jiran na 715. Kuma babu abin da za a iya yi game da shi.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Babu sauran mutane biyu a nan, akwai mutane uku a nan. Ina son wani abu daga gare ku, wannan yana son wani abu daga mutum na uku, na uku kuma yana son wani abu a gare ni. Kuma mun tsaya a jira ta hanyoyi uku domin duk muna jiran wani ya kammala abin da yake bukata.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma Postgres ya san akan wane layi wannan ya faru. Don haka zai ba ku sako mai zuwa, wanda ke nuna cewa kuna da matsala inda abubuwa uku ke toshe juna. Kuma babu hani a nan. Wannan yana iya zama yanayin inda shigarwar 20 ke toshe juna.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Matsala ta gaba mai yiwuwa ne.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Idan kulle serializable na musamman.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma mun koma 719. Its fitarwa ne quite al'ada.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma zaku iya danna don yin ma'amala daga serializable.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma kun gane cewa yanzu kuna da nau'in kulle SA daban-daban - yana nufin serializable.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka muna da sabon nau'in kulle mai suna SArieadLock, wanda ke kulle serial kuma yana ba ku damar shigar da siriyal.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Hakanan zaka iya saka fihirisa na musamman.

Buɗe Manajan Kulle Postgres. Bruce Momjian

A cikin wannan tebur muna da fihirisa na musamman.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Don haka idan na sanya lamba 2 a nan, don haka ina da 2. Amma a saman, na saka wani 2. Kuma kuna iya ganin cewa 721 yana da kullewa na musamman. Amma yanzu 722 suna jiran 721 su kammala aikinsu saboda ba za su iya saka 2 ba sai sun san abin da zai faru da 721.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma idan muka yi subtransaction.

Buɗe Manajan Kulle Postgres. Bruce Momjian

A nan muna da 723.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma idan muka ajiye batu sannan muka sabunta shi, to muna samun sabon ID na kasuwanci. Wannan wani salo ne na ɗabi'a da ya kamata ku sani. Idan muka dawo da wannan, to ID ɗin ma'amala ya tafi. 724 ya tafi. Amma yanzu muna da 725.

To me nake kokarin yi a nan? Ina ƙoƙarin nuna muku misalan makullai da ba a saba gani ba waɗanda za ku iya samu: ko makullai na serializable ko SAVEPOINT, waɗannan nau'ikan makullai ne daban-daban waɗanda za su bayyana a cikin tebirin kulle.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan shine ƙirƙirar makullai bayyane (bayyanannu), waɗanda suke da pg_advisory_lock.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma kun ga cewa an jera nau'in blocking a matsayin shawara. Kuma a nan ya ce "shawara" a ja. Kuma zaku iya toshe kamar wannan tare da pg_advisory_unlock.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma a ƙarshe, Ina so in nuna muku wani abu mai raɗaɗi. Zan ƙirƙiri wani kallo. Amma zan haɗa teburin pg_locks tare da tebur pg_stat_activity. Kuma me yasa nake son yin wannan? Domin wannan zai ba ni damar dubawa kuma in ga duk zaman da ake yi yanzu kuma in ga ainihin irin nau'in kulle-kulle da suke jira. Kuma wannan yana da ban sha'awa sosai idan muka haɗa teburin kulle da teburin tambaya.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma a nan mun ƙirƙiri pg_stat_view.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma muna sabunta layi daya. Kuma a nan mun ga 724. Sannan mu sabunta layinmu zuwa uku. Kuma me kuke gani a nan yanzu? Waɗannan buƙatun ne, watau kuna ganin duk jerin buƙatun da aka jera a shafi na hagu. Sannan a gefen dama zaka iya ganin toshewar da abin da suke haifarwa. Kuma yana iya zama mafi bayyane a gare ku don kada ku koma kowane zama kowane lokaci don ganin ko kuna buƙatar shiga ko a'a. Suna yi mana.

Wani fasalin da ke da matukar amfani shine pg_blocking_pids. Kila ba ka taba jin labarinta ba. Me take yi? Yana ba mu damar faɗi cewa don wannan zaman 11740 wane takamaiman ID ɗin tsari yake jira. Kuma za ku ga cewa 11740 yana jiran 724. Kuma 724 yana kan saman. Kuma 11306 shine ID ɗin tsarin ku. Mahimmanci, wannan aikin yana wucewa ta teburin makullin ku. Kuma na san yana da ɗan rikitarwa, amma kuna iya fahimtar shi. Ainihin wannan aikin yana wucewa ta wannan tebur na kulle kuma yana ƙoƙarin nemo inda aka ba wannan ID ɗin makullin da yake jira. Kuma yana ƙoƙarin gano wane tsari ID tsarin da ke jiran kulle yana da. Don haka kuna iya gudanar da wannan aikin pg_blocking_pids.

Kuma wannan na iya zama da amfani sosai. Mun ƙara wannan kawai a cikin nau'in 9.6, don haka wannan fasalin yana da shekaru 5 kawai, amma yana da matukar amfani. Kuma wannan ya shafi buƙatun na biyu. Yana nuna ainihin abin da muke buƙatar gani.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Wannan shi ne abin da nake so in yi magana da ku. Kuma kamar yadda na yi tsammani, mun yi amfani da duk lokacinmu saboda akwai nunin faifai da yawa. Kuma nunin faifai suna samuwa don saukewa. Ina so in gode muku da kasancewa a nan. Na tabbata za ku ji daɗin sauran taron, na gode sosai!

Tambayoyi:

Misali, idan ina ƙoƙarin sabunta layuka, kuma zama na biyu yana ƙoƙarin share teburin duka. Kamar yadda na fahimta, yakamata a sami wani abu kamar kulle niyya. Shin akwai irin wannan abu a Postgres?

Buɗe Manajan Kulle Postgres. Bruce Momjian

Mu koma tun farko. Kuna iya tuna cewa lokacin da kuka yi wani abu, misali lokacin da kuka yi SELECT, muna ba da AccessShareLock. Kuma wannan yana hana a sauke teburin. Don haka idan kuna, alal misali, kuna son sabunta layi a cikin tebur ko share jere, to wani ba zai iya share dukkan teburin a lokaci guda ba saboda kuna riƙe wannan AccessShareLock akan gabaɗayan tebur da kuma kan layi. Kuma da zarar kun gama, za su iya goge shi. Amma yayin da kai tsaye ka canza wani abu a can, ba za su iya yin shi ba.

Mu sake yi. Bari mu matsa zuwa misalin sharewa. Kuma kun ga yadda akwai keɓantaccen makulli akan jere sama da duka tebur ɗin.

Wannan zai yi kama da kulle keɓanta, daidai?

Ee, yana kama da shi. Na fahimci abin da kuke magana akai. Kuna cewa idan na yi SELECT to ina da ShareExclusive sannan na sanya shi Row Exclusive, shin hakan ya zama matsala? Amma abin mamaki wannan ba ya haifar da matsala. Wannan yana kama da ƙara darajar kulle, amma da gaske ina da makulli wanda ke hana gogewa. Kuma yanzu, lokacin da na sa wannan makullin ya fi ƙarfi, har yanzu yana hana gogewa. Don haka ba kamar zan hau ba. Wato ya hana shi faruwa a lokacin da yake a matakin ƙasa kuma, don haka idan na ɗaga matakinsa har yanzu yana hana a goge tebur.

Na fahimci abin da kuke magana akai. Babu ƙarar ƙarar kullewa a nan, inda kuke ƙoƙarin barin kulle ɗaya don gabatar da mafi ƙarfi. A nan yana ƙara wannan rigakafin a duk faɗin hukumar, don haka ba ya haifar da wani rikici. Amma tambaya ce mai kyau. Na gode sosai don tambayar wannan!

Menene muke buƙatar mu yi don guje wa yanayin kulle-kulle lokacin da muke da zaman da yawa, yawan masu amfani?

Postgres yana lura da yanayin kullewa ta atomatik. Kuma za ta share ɗaya daga cikin zaman ta atomatik. Hanya daya tilo da za a kauce wa toshe matattu ita ce toshe mutane a cikin tsari guda. Don haka lokacin da kuka kalli aikace-aikacenku, galibi dalilin mutuwar… Bari mu yi tunanin cewa ina son toshe abubuwa biyu daban-daban. Wani application yana kulle table 1, wani application ya kulle 2 sai kuma table 1. Kuma hanya mafi sauki don gujewa matsewa shine ka duba application din ka kayi kokarin tabbatar da cewa locking din ya kasance cikin tsari iri daya a duk application din. Kuma wannan yawanci yana kawar da kashi 80% na matsalolin, saboda kowane nau'in mutane suna rubuta waɗannan aikace-aikacen. Kuma idan kun toshe su a cikin tsari guda, to ba za ku ci karo da wani yanayi na kulle-kulle ba.

Na gode sosai don aikinku! Kun yi magana game da vacuum cikakke kuma, idan na fahimta daidai, cikakken injin yana gurbata tsarin rikodin a cikin ma'ajin daban, don haka suna kiyaye bayanan yanzu ba canzawa. Me yasa vacuum full ke ɗaukar damar kulle ta keɓance kuma me yasa yake cin karo da ayyukan rubutu?

Tambaya ce mai kyau. Dalilin shi ne cewa vacuum cike yana ɗaukar tebur. Kuma muna da gaske ƙirƙirar sabon sigar tebur. Kuma teburin zai zama sabo. Sai dai itace cewa wannan zai zama gaba daya sabon version na tebur. Kuma matsalar ita ce idan muka yi haka, ba ma son mutane su karanta shi domin muna bukatar su ga sabon tebur. Don haka wannan ya haɗu da tambayar da ta gabata. Idan za mu iya karantawa a lokaci guda, ba za mu iya matsar da shi kuma mu jagoranci mutane zuwa sabon tebur ba. Muna buƙatar jira kowa ya gama karanta wannan tebur, don haka ainihin yanayin kullewa ne.
Mu kawai muna cewa muna kulle tun daga farko saboda mun san cewa a ƙarshe za mu buƙaci kulle na musamman don matsar da kowa zuwa sabon kwafin. Don haka za mu iya yuwuwar warware wannan. Kuma muna yin haka ta wannan hanya tare da firikwensin lokaci guda. Amma wannan ya fi wuya a yi. Kuma wannan yana da alaƙa da tambayar ku ta baya game da kulle keɓantacce.

Shin zai yiwu a ƙara lokacin kullewa zuwa Postgres? A cikin Oracle, zan iya, misali, rubuta "zaɓi don ɗaukaka" kuma jira daƙiƙa 50 kafin ɗaukaka. Yayi kyau ga aikace-aikacen. Amma a cikin Postgres, ko dai ina buƙatar yin shi nan da nan kuma ban jira komai ba, ko jira har sai wani lokaci.

Ee, zaku iya zaɓar lokacin ƙarewa akan makullan ku, akan makullan ku. Hakanan zaka iya ba da umarnin babu hanya, wanda zai... idan ba za ka iya samun makullin nan da nan ba. Don haka, ko dai lokacin kullewa ko wani abu dabam wanda zai ba ku damar yin wannan. Ba a yin wannan a matakin syntactic. Ana yin wannan azaman mai canzawa akan sabar. Wani lokaci ba za a iya amfani da wannan ba.

Za a iya bude slide 75?

Ee.

Buɗe Manajan Kulle Postgres. Bruce Momjian

Kuma tambayata ita ce kamar haka. Me yasa dukkan hanyoyin sabunta su ke tsammanin 703?

Kuma wannan babbar tambaya ce. Ban gane ba, ta hanya, me yasa Postgres ke yin haka. Amma lokacin da aka ƙirƙiri 703, ana tsammanin 702. Kuma lokacin da 704 da 705 suka bayyana, kamar ba su san abin da suke tsammani ba saboda har yanzu babu wani abu a can. Kuma Postgres yana yin haka: lokacin da ba za ku iya samun kullewa ba, ya rubuta "Mene ne ma'anar sarrafa ku?", Domin kun riga kuna jiran wani. Don haka kawai za mu bar shi ya rataye a iska, ba zai sabunta shi ba kwata-kwata. Amma me ya faru a nan? Da zaran 702 sun kammala aikin kuma 703 sun karɓi kulle, tsarin ya dawo baya. Sai ta ce yanzu muna da mutane biyu da suke jira. Sannan mu sabunta su tare. Kuma bari mu nuna cewa duka biyu suna jira.

Ban san dalilin da yasa Postgres ke yin haka ba. Amma akwai matsala mai suna f…. Da alama a gare ni cewa wannan ba kalma ba ce a cikin Rashanci. Wannan shi ne lokacin da kowa ke jiran ginin gida daya, ko da akwai hukumomi 20 da ke jiran ginin. Kuma ba zato ba tsammani duk suka farka a lokaci guda. Kuma kowa ya fara ƙoƙarin mayar da martani. Amma tsarin ya sa kowa ya jira 703. Domin duk suna jira, kuma nan da nan za mu jera su duka. Kuma idan wani sabon buƙatun ya bayyana wanda aka samar bayan wannan, misali, 707, to za a sake samun fanko.

Kuma a ganina an yi haka ne domin mu ce a wannan mataki 702 na jiran 703, kuma duk wadanda suka zo bayan haka ba za su samu shiga a wannan fanni ba. Amma da zaran ma'aikaci na farko ya fita, duk waɗanda suke jira a wannan lokacin kafin sabuntawa sun sami wannan alamar. Don haka ina ganin an yi haka ne domin mu iya sarrafa su domin a yi odarsu yadda ya kamata.

A koyaushe ina kallon wannan a matsayin wani abu mai ban mamaki. Domin a nan, alal misali, ba mu lissafta su kwata-kwata. Amma a gare ni cewa duk lokacin da muka ba da sabon kulle, muna duban duk waɗanda ke cikin jira. Sai mu jera su duka. Sannan duk wani sabo da ya shigo sai ya shiga layi idan wanda na gaba ya gama sarrafa shi. Tambaya mai kyau. Na gode sosai don tambayar ku!

Da alama a gare ni yana da ma'ana sosai lokacin da 705 ke tsammanin 704.

Amma matsalar anan ita ce kamar haka. A fasaha, zaku iya tashi ɗaya ko ɗayan. Don haka za mu farka ɗaya ko ɗayan. Amma abin da ke faruwa a cikin tsarin? Kuna iya ganin yadda 703 a sama ya toshe ID ɗin kasuwancin sa. Wannan shine yadda Postgres ke aiki. Kuma 703 an toshe ta da ID ɗin kasuwancinsa, don haka idan wani yana son jira, to zai jira 703. Kuma, a zahiri, 703 ya cika. Kuma bayan kammala shi ne ɗayan hanyoyin ke farkawa. Kuma ba mu san menene ainihin wannan tsari zai kasance ba. Sannan muna sarrafa komai a hankali. Amma ba a bayyana ko wane tsari ya fara farkawa ba, saboda yana iya zama ɗayan waɗannan hanyoyin. Ainihin, muna da jadawali wanda ya ce yanzu za mu iya tada kowane ɗayan waɗannan hanyoyin. Mu kawai muna ɗaukar ɗaya a bazuwar. Don haka duka biyun suna bukatar a lura da su domin muna iya tada ko wannensu.

Kuma matsalar ita ce muna da CP-infinity. Sabili da haka, yana da yuwuwar cewa za mu iya tashi daga baya. Kuma idan, alal misali, mun tada na baya, za mu jira wanda ya karɓi tubalin, don haka ba mu tantance wanda za a fara ta da shi ba. Muna ƙirƙirar irin wannan yanayin kawai, kuma tsarin zai tada su a cikin tsari na bazuwar.

Akwai labarai game da makullai ta Egor Rogov. Duba, su ma suna da ban sha'awa da amfani. Taken, ba shakka, yana da matukar rikitarwa. Na gode sosai, Bruce!

source: www.habr.com

Add a comment