Nuqulka hadalka Bruce Momjian 2020 "Furitaanka Maareeyaha Qufulka Boostada".
(Fiiro gaar ah: Dhammaan weydiimaha SQL ee boggaga waxaa laga heli karaa xiriirkan:
Hello! Aad bay u fiican tahay inaad mar kale halkan ku noqoto Ruushka. Waan ka xumahay maan imaan karin sanadkii hore, laakiin sanadkan aniga iyo Ivan waxaan wadnaa qorshooyin waaweyn. Waxaan rajeynayaa inaan halkaan joogo marar badan. Waxaan jeclahay imaatinka Ruushka. Waxaan booqan doonaa Tyumen, Tver. Aad ayaan ugu faraxsanahay in aan awoodi doono in aan booqdo magaalooyinkaas.
Magacaygu waa Bruce Momjian. Waxaan ka shaqeeyaa EnterpriseDB waxaanan la shaqaynayay Postgres in ka badan 23 sano. Waxaan ku noolahay Philadelphia, USA. Waxaan socdaalaa qiyaastii 90 maalmood sannadkii. Waxaana ka qayb gala ilaa 40 shir. My
Waxaan ahaan jiray macalin, borofisar ka hor intaanan bilaabin la shaqaynta Postgres. Aad baan ugu faraxsanahay inaan hadda awoodi doono inaan kuu sheego waxaan doonayo inaan idiin sheego. Tani waa mid ka mid ah bandhigyadayda ugu xiisaha badan. Waxayna bandhigani ka kooban tahay 110 bog. Waxaan ku bilaabi doonaa inaan ku hadalno waxyaabo fudud, iyadoo dhamaadka warbixinta ay noqon doonto mid aad u adag, oo noqon doonta mid aad u adag.
Tani waa wada hadal aan wanaagsanayn. Xannibaadda maaha mawduuca ugu caansan. Waxaan rabnaa in tan ay meesha ka baxdo. Waxay la mid tahay inaad u tagto dhakhtarka ilkaha.
- Qufulku waxay dhibaato ku tahay dad badan oo ka shaqeeya kaydka xogta oo leh habab badan oo isku mar wada socda. Waxay u baahan yihiin xannibaad. Taasi waa, maanta waxaan ku siin doonaa aqoonta aasaasiga ah ee xannibista.
- Aqoonsiga wax kala iibsiga Tani waa qayb caajis ah oo ka mid ah bandhigga, laakiin waxay u baahan yihiin in la fahmo.
- Marka xigta waxaan ka hadli doonaa noocyada xannibaadda. Tani waa qayb farsamaysan oo cadaalad ah.
- Hoosta waxaan ku siin doonaa tusaalooyin qaar ka mid ah xannibista. Wayna adkaan doontaa in la fahmo.
Aan ka hadalno xannibaadda.
Eray-bixinteenu waa mid aad u adag. Immisa idinka mid ah ayaa og meesha tuducan ka yimid? Laba qof. Tani waxay ka timid ciyaar la yiraahdo Colossal Cave Adventure. Waxay ahayd ciyaar kombuyuutar qoraal-ku-salaysan sannadihii 80aadkii, waxay ila tahay. Halkaa waxa ay noqotay in aad god ka gasho, oo aad gasho shaybaadhka, qoraalkuna wuu is beddelay, laakiin nuxurku waxa uu ahaa qiyaastii isku mid mar kasta. Sidaas ayaan ku xasuustaa ciyaartan.
Oo halkan waxaan ku aragnaa magaca qufullada nooga yimid Oracle. Waxaan isticmaalnaa iyaga.
Halkan waxaan ku aragnaa shuruudo i jahawareersan. Tusaale ahaan, la wadaag cusboonaysiinta ECXLUSIVE. Marka xigta SHARE CAYNIIN ECXLUSIVE. Run ahaantii, magacyadani aad uma cadda. Waxaan isku dayi doonaa inaan u tixgelinno si faahfaahsan. Qaar ka mid ah waxay ka kooban yihiin ereyga "share", oo macneheedu yahay kala go'. Qaar ka mid ah waxay ka kooban yihiin ereyga "gaar ah". Qaar baa ka kooban labadan kelmadood. Waxaan jeclaan lahaa inaan ku bilaabo sida qufuladani u shaqeeyaan.
Iyo ereyga "helitaanka" sidoo kale waa mid aad muhiim u ah. Ereyada " saf"na waa xarig. Taasi waa, qaybinta helitaanka, qaybinta safka.
Arrin kale oo u baahan in lagu fahmo Postgres, oo aan nasiib darro aan hadalkeyga ku dabooli karin, waa MVCC. Mawduucan waxaan ku hayaa mawduucan mareegahayga. Oo haddii aad u malaynayso in bandhigani uu adag yahay, MVCC waxay u badan tahay inay iigu adag tahay. Haddii aad xiisaynaysona, waxaad ka daawan kartaa mareegaha. Waxaad daawan kartaa muuqaalka.
Wax kale oo aan u baahanahay inaan fahanno waa aqoonsiga wax kala iibsiga. Wax kala beddelasho badan ma shaqayn karaan la'aanteed aqoonsiyo gaar ah. Oo halkan waxaan ku haynaa sharaxaad ku saabsan waxa macaamil ganacsigu yahay. Postgres waxay leedahay laba hab oo nambarada wax kala iibsiga. Waan ogahay in tani aysan ahayn xal aad u qurux badan.
Sidoo kale maskaxda ku hay in sawiradu ay aad u adkaan doonaan in la fahmo, markaa waxa lagu muujiyay casaanka waa waxa aad u baahan tahay inaad fiiro gaar ah u yeelato.
Aan aragno. Nambarka wax kala iibsiga waxa lagu muujiyay casaan Shaqada SELECT pg_back ayaa lagu muujiyay halkan. Waxay soo celisaa wax kala iibsigayga iyo aqoonsiga wax kala iibsiga.
Hal shay oo kale, haddii aad jeceshahay bandhiggan oo aad rabto inaad ku socodsiiso xogtaada, markaa waxaad aadi kartaa isku xirka casaanka oo soo dejiso SQL bandhiggan. Waxaadna si fudud ugu socodsiin kartaa PSQL-gaaga oo dhanba soo jeedintu waxay isla markaaba ku soo muuqan doontaa shaashaddaada. Kuma jiri doono ubax, laakiin ugu yaraan waan arki karnaa.
Xaaladdan oo kale waxaan aragnaa aqoonsiga macaamil ganacsi. Kani waa lambarkii aanu u qoondaynay. Oo waxaa jira nooc kale oo aqoonsiga macaamil ganacsi gudaha Postgres, kaas oo loo yaqaan aqoonsiga macaamil ganacsi
Waana inaan fahannaa tan. Tani aad bay muhiim u tahay, haddii kale ma awoodi doono inaan fahamno qufulka Postgres.
Aqoonsiga wax-kala-socod ee dalwadku waa aqoonsi wax kala beddelasho oo aan ku jirin qiimayaal joogto ah. Tusaale ahaan, haddii aan maamulo amarka SELECT, markaas waxay u badan tahay inaan bedeli doonin xogta xogta, waxba ma xidhi doono. Markaa marka aanu wadno Xulasho fudud, ma siino wax kala iibsigaas aqoonsi joogto ah. Waxa kaliya oo aan ku siinay aqoonsi dalwad ah halkaas.
Tani waxay hagaajinaysaa waxqabadka Postgres, waxay hagaajinaysaa awoodaha nadiifinta, markaa aqoonsiga macaamil ganacsi ee farsamada ah wuxuu ka kooban yahay laba lambar. Lambarka ugu horreeya ee ka horreeya jeexjeexa waa aqoonsiga dambe. Oo dhanka midig waxaan ku aragnaa kaliya counter.
Sidaa darteed, haddii aan sameeyo codsi, waxay sheegaysaa in aqoonsiga dambe uu yahay 2.
Oo haddii aan sameeyo taxane ah oo macaamil ganacsi ah, markaa waxaan aragnaa in xisaabiyuhu uu kordho mar kasta oo aan sameeyo su'aal. Tusaale ahaan, marka aan wado su'aasha 2/10, 2/11, 2/12, iwm.
Maskaxda ku hay in halkan ay jiraan laba tiir. Dhanka bidix waxaan ku aragnaa aqoonsiga macaamil ganacsi ee farsamada - 2/12. Dhanka midigna waxaan ku haynaa aqoonsi macaamil ganacsi oo joogto ah. Oo garoonkani waa madhan. Wax kala iibsigana ma beddelo xogta macluumaadka. Markaa ma siiyo aqoonsi macaamil ganacsi oo joogto ah.
Isla markii aan socodsiiyo amarka falanqeynta ((ANALYZE)), isla waydiinta ayaa i siinaysa aqoonsi macaamil ganacsi oo joogto ah. Bal u fiirso sida tani noogu bedeshay. Aqoonsigan hore ma aan haysan, laakiin hadda waan haystaa.
Markaa halkan waa codsi kale, macaamil kale. Nambarka wax kala iibsiga dalwaddu waa 2/13. Oo haddii aan weydiiyo aqoonsiga macaamil ganacsi oo joogto ah, ka dib markaan su'aasha qabto, waan heli doonaa.
Markaa, hal mar oo kale. Waxaan haynaa Aqoonsi wax kala beddelasho toos ah iyo aqoonsi macaamil ganacsi oo joogto ah. Kaliya u fahan qodobkan si aad u fahanto dhaqanka Postgres.
Waxaan u gudbaynaa qaybta saddexaad. Halkan waxaan si fudud u dhex mari doonaa noocyada kala duwan ee qufulka ee Postgres. Ma ahan mid aad u xiiso badan. Qeybta ugu dambeysa waxay noqon doontaa mid aad u xiiso badan. Laakiin waa in aan tixgelinno waxyaabaha aasaasiga ah, sababtoo ah haddii kale ma fahmi doono waxa dhici doona xiga.
Waxaan dhex mari doonaa qaybtan, waxaan eegi doonaa nooc kasta oo quful ah. Oo waxaan ku tusi doonaa tusaalayaal ku saabsan sida loo rakibo, sida ay u shaqeeyaan, waxaan ku tusi doonaa qaar ka mid ah weydiimaha aad isticmaali karto si aad u aragto sida qufulku u shaqeeyo Postgres.
Si loo abuuro weydiimo oo aan u aragno waxa ka dhacaya Postgres, waxaan u baahanahay inaan ku soo saarno su'aasha aragtida nidaamka. Xaaladdan oo kale, pg_lock waxa lagu iftiimiyay casaan Pg_lock waa shax nidaam oo noo sheegaya qufullada hadda lagu isticmaalo Postgres.
Si kastaba ha ahaatee, aad bay iigu adag tahay inaan ku tuso pg_lock kaligiis sababtoo ah way adag tahay. Markaa waxaan sameeyay muuqaal muujinaya pg_locks. Oo weliba waxay ii qabataa shaqo ii ogolaata inaan si fiican u fahmo. Taasi waa, waxay ka saaraysaa qufulkaygii, fadhigayga, iwm. Waa SQL-ga caadiga ah waxayna kuu ogolaaneysaa inaad si fiican kuu tusto waxa socda.
Dhibaato kale ayaa ah in aragtidani aad u ballaaran tahay, markaa waa inaan abuuraa mid labaad - lockview2.
Oo waxay i tusinaysaa tiirar badan oo miiska ka soo baxay. Iyo mid kale oo i tusaya tiirarka intiisa kale. Tani waa mid aad u adag, sidaas darteed waxaan isku dayay inaan u soo bandhigo sida ugu fudud ee suurtogalka ah.
Markaa waxaanu samaynay miis la yidhaahdo Lockdemo. Waxaana halkaas ka abuurnay hal xariiq. Kani waa miiska tusaalahayaga. Oo waxaanu abuuri doonaa qaybo si aanu ku tuso tusaalooyinka qufulka.
Markaa, hal saf, hal tiir. Nooca koowaad ee qufulka waxaa loo yaqaan ACCESS SHARE. Tani waa xannibaadda ugu yar. Taas macneheedu waxa weeye in aanay ka hor imanayn qufulyada kale.
Oo haddii aan rabno inaan si cad u qeexno quful, waxaan wadnaa amarka "miiska qufulka". Waxayna si cad u xannibi doontaa, tusaale ahaan qaabka ACCESS SHARE waxaanu ku bilaabaynaa miiska qufulka. Oo haddii aan PSQL gadaal ka wado, ka dib waxaan ka bilaabayaa casharka labaad casharkaygii kowaad sidan. Taasi waa, maxaan halkan ku qaban doonaa? Waxaan aadaa fadhi kale oo aan u sheego "i tus qufulka codsigan." Oo halkan waxaan ku hayaa AccessShareLock shaxdan. Tani waa dhab ahaan waxa aan codsaday. Wuxuuna sheegay in balootkii loo qoondeeyay. Aad u fudud.
Dheeraad ah, haddii aan eegno tiirka labaad, markaa ma jiraan wax jira. Way madhan yihiin.
Oo haddii aan socodsiiyo amarka "SELECT", markaa tani waa dariiqa qarsoon (sida cad) ee lagu codsado AccessShareLock. Markaa miiskayga waan sii daayaa oo waan socodsiiyaa weydiinta su'aashuna waxay soo celisaa safaf badan. Oo mid ka mid ah khadadka waxaan ku aragnaa AccessShareLock. Markaa, SELECT waxay ugu yeedhaa AccessShareLock miiska dushiisa. Waxna kama hor imanayso sababtoo ah waa quful heerkiisu hooseeyo.
Maxaa dhacaya haddii aan sameeyo SELECT oo aan haysto saddex miis oo kala duwan? Markii hore waxaan waday hal miis oo kaliya, hadda waxaan ordayaa seddex: pg_class, pg_namespace iyo pg_attribute.
Oo hadda markaan eego weydiinta, waxaan ku arkaa 9 AccessShareLocks oo ku jira saddex miis. Waa maxay sababtu? Saddex miis ayaa lagu iftiimiyay buluug: pg_attribute, pg_class, pg_namespace. Laakiin waxaad sidoo kale arki kartaa in dhammaan tusmooyinka lagu qeexay jaantusyadan ay sidoo kale leeyihiin AccessShareLock.
Tanina waa quful aan ficil ahaan iska dhicin dadka kale. Waxa kaliya ee ay sameyneyso ayaa ah inay si fudud nooga horjoogsadaan inaan dib u dejinno miiska inta aan dooraneyno. Waxay macno samaynaysaa. Taasi waa, haddii aan doorano miis, wuu baaba'aa wakhtigaas, markaa tani waa khalad, sidaas darteed AccessShare waa quful heer hoose ah oo noo sheegaya "ha tuurin miiskan inta aan shaqaynayo". Dhab ahaantii, taasi waa waxa kaliya ee ay sameyso.
SAFKA WADAAG - Qufulkani wuu ka yara duwan yahay.
Aan tusaale usoo qaadano. Xulo habka SAFKA WADAAG oo saf kasta si gaar ah loogu qufulayo. Sidan cidina ma tirtiri karto ama ma beddeli karto inta aynu daawanayno.
Haddaba muxuu qabtaa qufulka SHARE? Waxaan aragnaa in aqoonsiga wax kala iibsiga uu yahay 681 ee SELECT. Tanina waa mid xiiso leh. Maxaa halkan ka dhacay? Marka ugu horeysa ee aan aragno nambarku waxay ku yaalaan goobta "Lock". Waxaan qaadanaa aqoonsiga wax kala iibsiga oo uu sheegay in uu u xannibayo qaab gaar ah. Waxa kaliya ee ay sameyso waa in la yiraahdo waxaan haystaa saf oo farsamo ahaan ku xiran meel miiska ah. Laakiin ma uusan sheegin meesha saxda ah. Waxaan si faahfaahsan u eegi doonaa tan wax yar ka dib.
Halkan waxaan ku nidhi qufulka annagu waa isticmaalnaa.
Markaa, quful gaar ah ayaa si cad u sheegaya inay gaar tahay. Iyo sidoo kale haddii aad tirtirto safka shaxdan, markaa tani waa waxa dhici doona, sida aad arki karto.
SHARE EXCLUSIVE waa quful dheer.
Kani waa (ANALYZE) amarka falanqeeye ee la isticmaali doono.
LOCK WADAAG - waxaad si cad u quful kartaa qaabka wadaaga
Waxa kale oo aad samayn kartaa index gaar ah. Halkaasna waxa aad ka arki kartaa LOCK SHARE, kaas oo qayb ka ah. Miiskana way xidhaa oo ay dul saartaa QOF SHARE LOCK ah.
Sida caadiga ah, QOLKA Miiska la wadaago macnaheedu waa in dadka kale ay akhriyi karaan miiska, laakiin cidina ma beddeli karto. Tanina waa dhab ahaan waxa dhacaya markaad abuurto tusaha gaarka ah.
Haddii aan sameeyo tusaha is-xigxiga ee gaarka ah, markaas waxaan yeelan doonaa nooc kale oo quful ah sababtoo ah, sida aad xasuusato, isticmaalka tusmooyinka isku-xiran waxay yaraynaysaa shuruudaha xiritaanka. Oo haddii aan isticmaalo quful caadi ah, tusaha caadiga ah, markaa waxaan ka hortagi doonaa in la qoro tusmada miiska inta la abuurayo. Haddii aan isticmaalo tusmaynta isku mar, markaa waxaan u baahanahay inaan isticmaalo nooc kale oo quful ah.
LA wadaag Safka GAAR AH - mar labaad si cad ayaa loo dejin karaa (si cad).
Ama waxaan abuuri karnaa xeer, tusaale ahaan, qaado kiis gaar ah oo loo isticmaali doono.
Quful gaar ah waxay ka dhigan tahay in qof kale uusan bedeli karin miiska.
Halkan waxaan ku aragnaa noocyo kala duwan oo quful ah.
ACCESS EXCLUSIVE, tusaale ahaan, waa amar xannibaya. Tusaale ahaan, haddii aad sameyso CLUSTER table
, markaas tani waxay ka dhigan tahay in qofna ma awoodi doono inuu halkaas wax ku qoro. Oo ma xidho oo keliya miiska laftiisa, laakiin sidoo kale tusmooyinka.
Kani waa bogga labaad ee xannibaadda GAARARKA AH, halkaas oo aan ku aragno sida saxda ah waxa ay u xannibayso miiska. Waxay xirtaa safafka miiska gaarka ah, taas oo aad u xiiso badan.
Taasi waa dhammaan macluumaadka aasaasiga ah ee aan rabay in aan bixiyo. Waxaan ka hadalnay qufullada, wax ku saabsan aqoonsiga wax kala iibsiga, waxaan ka hadalnay aqoonsiyada macaamil ganacsi, wax ku saabsan aqoonsiga macaamil ganacsi ee joogtada ah.
Oo hadda waxaan soo mari doonaa qaar ka mid ah tusaalayaal xannibaya. Tani waa qaybta ugu xiisaha badan. Waxaan eegi doonaa kiisas aad u xiiso badan. Hadafkayga soo jeedintan waa inaan ku siiyo faham wanaagsan waxa Postgres dhab ahaantii samaynayo marka ay isku daydo inay xannibto waxyaabaha qaarkood. Waxaan u maleynayaa inuu aad ugu fiican yahay xannibaadda qaybaha.
Aynu eegno tusaalooyin gaar ah.
Waxaan ku bilaabi doonaa miisaska iyo hal saf oo miis ah. Marka aan geliyo shay waxaan haystaa ExclusiveLock, Aqoonsiga Ganacsiga iyo ExclusiveLock oo miiska saaran.
Maxaa dhacaya haddii aan geliyo laba saf oo kale? Oo hadda miiskayagu wuxuu leeyahay saddex saf. Oo hal saf ayaan galiyay oo tan u helay wax soo saar ahaan. Haddaan laba saf oo kale soo galiyo, maxaa yaab leh? Waxaa jira wax yaab leh halkan sababtoo ah waxaan ku daray saddex saf miiskan, laakiin weli waxaan haystaa laba saf oo miiska qufulka ah. Tanina asal ahaan waa hab-dhaqanka aasaasiga ah ee Postgres.
Dad badan ayaa u maleynaya in haddii database-ka aad xirto 100 saf, markaa waxaad u baahan doontaa inaad abuurto 100 quful ah. Haddii aan xannibo 1 saf hal mar, markaa waxaan u baahan doonaa 000 su'aalood oo noocaas ah. Oo haddii aan u baahdo hal milyan ama bilyan si aan u xannibo. Laakiin haddii aan tan samayno, si fiican uma shaqayn doonto. Haddii aad isticmaashay nidaam abuuraya xannibaadda gelitaanka saf kasta, markaa waxaad arki kartaa in tani ay adag tahay. Sababtoo ah waxaad u baahan tahay inaad isla markiiba qeexdo miiska qufulka oo buux dhaafi kara, laakiin Postgres ma sameeyo taas.
Iyo waxa runtii muhiimka ah ee ku saabsan boggan waa in ay si cad u muujinayso in uu jiro nidaam kale oo ka socda gudaha MVCC kaas oo xira safka gaarka ah. Markaa markaad xidhid balaayiin saf, Postgres ma abuurto balaayiin amaro quful gooni ah. Waxayna tani saameyn aad u wanaagsan ku leedahay wax soo saarka.
Ka warran cusbooneysiin? Hadda waxaan cusbooneysiinayaa safka, oo waxaad arki kartaa inuu sameeyay laba qalliin oo kala duwan hal mar. Miiskii ayay isku mar qufulisay, laakiin sidoo kale waxa ay xidhay tusmada. Oo wuxuu u baahday inuu xiro tusaha sababtoo ah waxaa jira caqabado gaar ah oo miiskaan saaran. Waxaana rabnaa inaan hubinno in qofna uusan beddelin, sidaas darteed waannu xannibnay.
Maxaa dhacaya haddii aan rabo inaan cusboonaysiiyo laba saf? Oo waxaynu aragnaa inuu sidaas oo kale u dhaqmo. Waxaan samaynaa labanlaab cusbooneysiinta badan, laakiin dhab ahaan tiro isku mid ah ee xariiqyada qufulka.
Haddii aad la yaabban tahay sida Postgres uu tan u sameeyo, waxaad u baahan doontaa inaad dhegaysato hadalladayda ku saabsan MVCC si aad u barato sida Postgres gudaha ugu calaamadiso khadadkan inay isbeddelayso. Postgres waxay leedahay hab ay sidan u sameyso, laakiin kuma samaynayso heerka qufulka miiska, waxay ku qabataa heer hoose oo hufan.
Maxaa dhacaya haddii aan rabo inaan wax tirtiro? Haddii aan tirtiro, tusaale ahaan, hal saf oo aan wali haysto labadayda qalab ee xannibaya, xitaa haddii aan rabo in aan tirtiro dhammaantood, weli way jiraan.
Oo, tusaale ahaan, waxaan rabaa in aan geliyo 1 sadar, ka dibna ama tirtir ama ku daro 000 sadar, ka dibna kuwa shakhsi ahaaneed ee aan ku daro ama beddelo, halkan kuma qorna. Waxay ku qoran yihiin heer hoose oo taxane ah laftiisa. Oo intii lagu jiray hadalka MVCC waxaan si faahfaahsan uga hadlay arrintan. Laakiin aad bay muhiim u tahay markaad falanqaynayso qufullada si aad u hubiso inaad ku xidhayso heerka miiska iyo inaadan arkayn sida safka shakhsi ahaaneed halkan loogu duubayo.
Ka waran xannibaadda cad?
Haddii aan guji refresh, waxaan haystaa laba saf oo xiran. Oo haddii aan doorto dhammaantood oo aan gujiyo "cusbooneysii meel kasta," ka dibna waxaan weli haystaa laba diiwaan oo xannibaya.
Uma samayno diiwaano gaar ah saf kasta. Sababtoo ah markaa wax soo saarku hoos u dhaco, waxaa laga yaabaa inay aad u badan tahay. Waxaana laga yaabaa in aan isku aragno xaalad aan fiicneyn.
Sidoo kale, haddii aan wadaagno, waxaan sameyn karnaa dhammaan 30 jeer.
Miiskayaga ayaanu soo celinay, wax walba tirtirnaa, ka dibna hal saf mar kale gelinaa.
Dabeecad kale oo aad ku aragto Postgres oo aad loo yaqaan oo habdhaqanka la rabo waa inaad samayn karto cusbooneysiin ama dooro. Oo waxaad samayn kartaa tan isku mar. Oo dooro ma xannibi update iyo wax la mid ah jihada ka soo horjeeda. Waxa aanu u sheegaynaa akhristaha in aanu is-hortaagin qoraaga, qoraaguna ma xannibin akhristaha.
Waxaan ku tusi doonaa tusaale tan ah. Hadda waxaan samayn doonaa doorasho. Waxaan markaas samayn doonaa GALINTA. Oo markaas waxaad arki kartaa - 694. Waxaad arki kartaa aqoonsiga macaamil ganacsi sameeyey galinta this. Waana sida ay u shaqeyso.
Oo haddaan eego aqoonsigayga dhabarka dambe, hadda waa 695.
Oo waxaan arki karaa 695 oo ka soo muuqday miiskayga.
Oo haddii aan halkan u cusbooneysiiyo sidan oo kale, markaa waxaan helayaa kiis kale. Xaaladdan oo kale, 695 waa quful gaar ah, iyo cusbooneysiintu waxay leedahay dabeecad isku mid ah, laakiin ma jiraan wax khilaaf ah oo u dhexeeya, taas oo ah mid aan caadi ahayn.
Waxaadna arki kartaa in meesha ugu sareysa ay tahay ShareLock, halka hoosena ay tahay ExclusiveLock. Oo labada macaamiloodba way shaqeeyeen.
Oo waxaad u baahan tahay inaad dhegaysato hadalkayga MVCC si aad u fahamto sida tani u dhacdo. Laakin kani waa tusaale in aad isku mar samayn karto, tusaale ahaan samee XUL iyo UPDATE isku mar.
Aynu dib u dajin oo hal qalliin oo kale samayno.
Haddii aad isku daydo in aad isku mar ku socodsiiso laba updates isku mar, waa la xannibi doonaa. Xusuusnow, waxaan idhi akhristuhu ma xannibo qoraaga, qoraaguna ma xannibo akhristaha, laakiin hal qoraa ayaa xannibaya qoraa kale. Taasi waa, ma yeelan karno laba qof oo isku mar cusbooneysiiya isku mar. Waa inaad sugtaa ilaa mid ka mid ah uu dhammeeyo.
Oo si aan tan u muujiyo, waxaan eegi doonaa miiska Lockdemo. Oo waxaan eegi doonaa hal saf. Xawaalad kasta 698.
Waxaan tan u cusboonaysiinnay 2. 699 waa cusbooneysiinta ugu horreysa. Wayna ku guulaysatay ama waxay ku jirtaa wax kala iibsi oo sugaya oo waxay sugaysaa inaanu xaqiijino ama joojino.
Laakiin bal wax kale eeg - 2/51 waa macaamil ganacsigeenii ugu horreeyay, fadhigeena koowaad. 3/112 waa codsigii labaad ee xagga sare ka yimid ee qiimahaas u beddelay 3. Haddaad u fiirsatona kan sare ayaa is xidhay, kaas oo ah 699. Laakiin 3/112 ma siin qufulka. Tiirka Lock_mode wuxuu sheegayaa waxa la sugayo. Waxay filaysaa 699. Haddaad eegto 699 waa ka sarreeyaa. Maxaase kalfadhigii u horeeyay qabtay? Waxay ku samaysay quful gaar ah aqoonsigeeda wax kala iibsiga. Tani waa sida Postgres u sameeyo. Waxay xannibaysaa aqoonsigeeda wax kala iibsiga. Oo haddii aad rabto inaad sugto qof inuu xaqiijiyo ama joojiyo, markaa waxaad u baahan tahay inaad sugto inta uu jiro macaamil ganacsi oo sugaya. Taasina waa sababta aan u arki karno khad qariib ah.
Aan mar kale eegno. Dhanka bidix waxaan ku aragnaa aqoonsigayada habaynta Tiirka labaad waxa aanu ku aragnaa aqoonsigayaga wax kala iibsiga, ka saddexaadna waxa aanu aragnaa lock_type. Maxay tani ka dhigan tahay? Asal ahaan waxa ay leedahay waa in ay xannibayso aqoonsiga macaamil ganacsi. Laakin ogow in dhammaan safafka hoose ay sheegaan xiriir. Oo sidaas darteed waxaad haysataa laba nooc oo quful miiska saaran. Waxaa jira quful xiriir. Kadibna waxaa jira xannibaado ganacsi, halkaas oo aad adigu xannibayso, taas oo ah sida dhabta ah ee ka dhacaysa safka koowaad ama ugu hooseeya, halka macaamilku ku yaal, halkaas oo aan sugno 699 si uu u dhammeeyo hawlihiisa.
Waan arki doonaa waxa ka dhaca halkan Oo halkan laba shay ayaa isku mar dhacaya. Waxaad eegaysaa qufulka aqoonsiga wax kala iibsiga ee safka kowaad kaas oo is xidhay. Waxayna isku xirtaa si ay dadka u sugaan.
Haddii aad eegto safka 6aad, waa isla gelitaanka kii hore. Oo sidaas darteed wax kala iibsiga 699 waa la xannibay. 700 sidoo kale waa is-quful. Kadibna safka hoose waxaad arki doontaa inaan sugeyno 699 si uu u dhammeeyo hawlgalkiisa.
Oo ku jira lock_type, tuple waxaad ku aragtaa tirooyinka.
Waxaad arki kartaa inay tahay 0/10. Oo kanu waa lambarka bogga, iyo sidoo kale ka-goynta safkan gaarka ah.
Oo waxaad arkaysaa inay noqonayso 0/11 markaan cusbooneysiinno.
Laakiin dhab ahaantii waa 0/10, sababtoo ah waxaa jira sugitaanka hawlgalkan. Waxaan haysanaa fursad aan ku aragno in tani ay tahay taxanaha aan sugayo inaan xaqiijiyo.
Marka aan xaqiijino oo aan riixno ballan, iyo marka cusbooneysiinta dhammaato, tani waa waxa aan mar kale helno. Wax kala iibsiga 700 waa qufulka kaliya, ma sugto qof kale sababtoo ah waa la go'aamiyay. Waxay si fudud u sugaysaa macaamil ganacsigu inuu dhammaystiro. Mar haddii 699 dhamaado, wax dambe ma sugin. Oo hadda macaamilka 700 ayaa sheegaya in wax walba ay fiican yihiin, in ay haystaan ββdhammaan qufullada ay u baahan yihiin dhammaan miisaska la oggol yahay.
Iyo si aad tan oo dhan uga dhigto mid aad u adag, waxaan abuurnaa aragti kale, taas oo waqtigan na siin doonta kala sareyn. Ma filayo inaad fahantay codsigan. Laakiin tani waxay ina siin doontaa aragti cad oo ku saabsan waxa socda.
Tani waa aragti soo noqnoqota oo sidoo kale leh qayb kale. Kadibna wax walba mar kale ayay isu keentaa. Aan isticmaalno kan.
Ka warran haddii aan samayno saddex updates oo isku mar ah oo aan nidhaahno safku hadda waa saddex. Waxaana u bedeli doonaa 3 ilaa 4.
Oo halkan waxaan ku aragnaa 4. Iyo aqoonsiga macaamil ganacsi 702.
Kadibna waxaan u badali doonaa 4 ilaa 5. Iyo 5 ilaa 6, iyo 6 ilaa 7. Waxaanan saf u gali doonaa tiro dad ah oo sugaya in hal ganacsi uu dhamaado.
Wax walbana way cad yihiin. Waa maxay safka koowaad? Tani waa 702. Kani waa aqoonsiga macaamil ganacsi ee markii hore qiimeeyay. Maxaa ku qoran tiirkayga la siiyay? waxaan leeyahay calaamado f
. Kuwani waa cusbooneysiintayda oo (5, 6, 7) aan la oggolaan karin sababtoo ah waxaan sugeynaa aqoonsiga macaamil ganacsi 702 inuu dhammaanayo. Halkaa waxaan ku leenahay xannibaadyada aqoonsiga macaamil ganacsi. Oo tani waxay keenaysaa 5 quful aqoonsiga macaamil ganacsi.
Oo haddii aad eegto 704, at 705, weli waxba halkaas kuma qorin, sababtoo ah ma garanayaan waxa socda weli. Waxay si fudud u qoraan inaysan wax fikrad ah ka lahayn waxa dhacaya. Wayna seexan doonaan sababtoo ah waxay sugayaan qof dhammeeya oo la toosiyo marka ay jirto fursad ay ku beddelaan safafka.
Tani waa sida ay u egtahay. Waxaa cad in dhamaantood ay sugayaan safka 12-aad.
Tani waa waxa aan ku aragnay halkan. Halkan waa 0/12.
Markaa marka macaamilka ugu horreeya la oggolaado, waxaad halkan ku arki kartaa sida kala sarrayntu u shaqeyso. Oo hadda wax walba way cad yihiin. Dhammaantood nadiif bay noqdeen. Waxayna dhab ahaantii wali sugayaan.
Waa kan waxa dhacaya 702 ayaa galay. Oo hadda 703 ayaa helaya qufulkan, ka dibna 704 waxay bilaabeen inay sugaan 703 inay sameeyaan. Oo 705-ta ayaa sidoo kale sugaya tan. Oo markii waxaas oo dhan ay dhammaadaan, way is nadiifiyaan. Waxaanan rabaa in aan tilmaamo in qof walba uu safan yahay. Waxayna tani aad ula mid tahay xaalada saxmadda wadooyinka marka qof walba uu sugayo gaariga ugu horeeya. Baabuurkii u horeeyay ayaa istaagay, qof walbana saf dheer ayuu soo galay. Dabadeed wuu dhaqaaqaa, dabadeed baabuurka ku xiga ayaa horay u sii wadi kara oo heli kara block-kiisa, iwm.
Oo haddii tani aysan kuugu muuqan mid kugu adag, markaa waxaan hadda kaala hadli doonaa waxyaabaha ku saabsan xirmooyinka. Ma garanayo midkiin la kulmay. Tani waa dhibaato caadi ah oo ka jirta nidaamyada macluumaadka. Laakin ismari waa marka hal fadhi la sugayo fadhi kale si uu wax u qabto. Haddana fadhi kale ayaa sugaya fadhiga ugu horreeya si uu wax u qabto.
Iyo, tusaale ahaan, haddii Ivan uu yiraahdo: "wax i sii," oo aan idhaahdo: "Maya, kaliya waxaan ku siinayaa haddii aad wax kale i siiso." Oo isna wuxuu ku yidhi, "Maya, ku siin maayo haddii aadan i siin." Waxaanan ku dambaynaynaa xaalad is-miidaamin ah. Waan hubaa in Ivan uusan sidan yeeli doonin, laakiin waxaad fahantay macnaha inaan leenahay laba qof oo doonaya inay wax helaan diyaarna uma aha inay bixiyaan ilaa qofka kale uu siiyo wuxuu rabo. Xalna ma jiro.
Iyo asal ahaan, xogtaadu waxay u baahan tahay inay ogaato tan. Kadibna waxaad u baahan tahay inaad tirtirto ama xirto mid ka mid ah fadhiyada, sababtoo ah haddii kale waxay ku sii jiri doonaan weligood. Oo waxaan ku aragnaa xogta macluumaadka, waxaan ku aragnaa nidaamyada hawlgalka. Iyo dhammaan meelaha aan ku leenahay habab isbarbar socda, tani way dhici kartaa.
Oo hadda waxaan ku rakibi doonaa laba bakhtiya. Waxaan dhigi doonaa 50 iyo 80. Safka koowaad, waxaan cusbooneysiin doonaa 50 ilaa 50. Waxaan heli doonaa macaamil ganacsi lambar 710.
Kadibna waxaan bedeli doonaa 80 ilaa 81, iyo 50 ilaa 51.
Oo tani waa sida ay u ekaan doonto. Oo sidaas daraaddeed 710 ayaa isku xigta la xannibay, 711na waxay sugayaan xaqiijinta. Waxaan aragnay tan markii aan cusbooneysiinay. 710 waa milkiilaha taxanahayaga. Oo 711 ayaa sugaya 710 si ay u dhamaystiraan wax kala iibsiga.
Oo xataa waxay sheegaysaa in safkee ayay xidhidhisku ku dhacayaan. Oo halkan waa halka ay ka bilaabato inay noqoto mid yaab leh.
Hadda waxaan cusbooneysiineynaa 80 ilaa 80.
Waana halka ay ka bilaabmato xidhidhiyaha. 710 ayaa jawaab ka sugaya 711, 711na waxay sugayaan 710. Tanina si fiican kuma dhammaanayso. Taasna waddo looga baxo ma jirto. Waxayna midba midka kale jawaab ka filayaan.
Oo waxay bilaabi doontaa uun inay dib u dhigto wax walba. Taasna ma rabno.
Postgres waxay leedahay habab lagu ogaado markay tani dhacdo. Oo markay tani dhacdo, waxaad helaysaa qaladkan. Waxaana halkaa ka cad in nidaamka noocaas ah iyo kuwan la mid ahba ay sugayaan quful SHARE ah oo ka soo baxa hab kale, yacni, kaas oo uu xannibay habka 711. Hawshaasina waxa ay sugaysay QOF SHARE LOCK ah in lagu bixiyo aqoonsiga noocaan oo kale ah iyo wax kala iibsi waxaana xannibay habkan iyo sidaan oo kale. Sidaa darteed, halkan waxaa ka jira xaalad is-mariwaa ah.
Ma jiraan xannibaado saddex geesood ah? Suurtagal ma tahay? Haa
Waxaan galeynaa tirooyinkaan miis. Waxaan u beddelnaa 40 ilaa 40, waxaanu samaynaa xannibaad.
Waxaan u beddelnaa 60 ilaa 61, 80 ilaa 81.
Ka dibna waxaan bedelnaa 80 ka dibna boom!
Oo 714 ayaa hadda sugaya 715. 716 ayaa sugaya 715. Waxna lagama qaban karo.
Ma jiraan laba qof oo halkan jooga, horeba saddex qof ayaa halkan joogay. Wax baan kaa rabaa, kani qof saddexaad buu wax ka rabaa, kan saddexaadna wax buu iga rabaa. Oo waxaan ku dhamaanaynaa sugitaan saddex geesood ah sababtoo ah waxaan dhammaanteen sugeynaa qofka kale si uu u dhamaystiro waxa uu u baahan yahay inuu sameeyo.
Postgresna way ogtahay safka tani ka dhacayso. Oo sidaas daraaddeed waxay ku siin doonaa fariinta soo socota, taas oo muujinaysa in aad leedahay dhibaato halkaas oo saddex wax soo saarka ayaa xannibaya midba midka kale. Oo ma jiraan wax xannibaad ah halkan. Tani waxay noqon kartaa kiiska halka 20 gelitaanku ay is-hortaageen midba midka kale.
Dhibka soo socdaa waa taxane.
Haddii quful taxane ah oo gaar ah.
Oo waxaynu ku noqonaynaa 719. Wax-soo-saarkeedu waa iska caadi.
Oo waxaad riixi kartaa si aad wax kala iibsiga ka sameyso serializable.
Oo waxaad ogaatay inaad hadda haysato nooc ka duwan oo SA quful ah - waxay la macno tahay serializable.
Oo sidaas daraaddeed waxaan haynaa nooc cusub oo quful ah oo la yiraahdo SArieadLock, kaas oo ah quful taxane ah oo kuu ogolaanaya inaad gasho taxane.
Oo weliba waxaad gelin kartaa tusmooyinka gaarka ah.
Shaxdan waxaan ku haynaa tilmaamo gaar ah.
Markaa haddii aan lambarka 2 ku dhejiyo halkan, markaa waxaan haystaa 2. Laakiin meesha ugu sarreysa, 2 kale ayaan gelinayaa. Waxaadna arki kartaa in 721 uu leeyahay quful gaar ah. Laakiin hadda 722 ayaa sugaya 721 si ay u dhamaystiraan hawshooda sababtoo ah ma geli karaan 2 ilaa ay ogaadaan waxa ku dhici doona 721.
Iyo haddii aan samayno ganacsi hoosaad.
Halkan waxaan ku haynaa 723.
Oo haddii aan kaydinno barta oo ka dibna cusbooneysiinno, ka dibna waxaan helnaa aqoonsi cusub oo macaamil ganacsi. Tani waa hab dhaqan kale oo aad u baahan tahay inaad ka warqabto. Haddii aan tan soo celino, markaa aqoonsiga wax kala iibsiga wuu baxayaa. 724 ayaa baxaya. Laakiin hadda waxaanu haynaa 725.
Haddaba maxaan isku dayayaa inaan halkan ku sameeyo? Waxaan isku dayayaa inaan ku tuso tusaalayaal qufulo aan caadi ahayn oo laga yaabo inaad hesho: hadday tahay quful taxane ah ama SAVEPOINT, kuwani waa noocyo kala duwan oo qufulo ah oo ka soo muuqan doona miiska qufulka.
Tani waa abuurista qufulo cad (cad), kuwaas oo leh pg_advisory_lock.
Oo waxaad arkaysaa in nooca xannibaadda uu ku qoran yahay talobixin ahaan. Oo halkan waxay ku leedahay "talobixin" casaan. Oo waxaad isku mar ku xannibi kartaa sidan oo kale pg_advisory_unlock.
Gebagebadiina, waxaan jeclaan lahaa inaan ku tuso hal shay oo kale oo maskaxda ku haya. Waxaan abuuri doonaa aragti kale. Laakiin waxaan ku biiri doonaa miiska pg_locks iyo miiska pg_stat_activity. Oo maxaan rabaa inaan tan sameeyo? Sababtoo ah tani waxay ii ogolaan doontaa inaan eego oo aan arko dhammaan fadhiyada hadda jira oo aan arko sida saxda ah nooca qufulka ay sugayaan. Waxayna tani aad u xiiso badan tahay markaan isu geyno miiska qufulka iyo miiska weydiinta.
Oo halkan waxaan ku abuurnaa pg_stat_view.
Oo safka mid ayaan u cusbooneysiineynaa. Anaguna waanu aragnaa 724. Dabadeed safkayaga ayaanu saddex ka dhigaynaa. Oo maxaad hadda ku aragtaa halkan? Kuwani waa codsiyo, tusaale ahaan, waxaad arkaysaa dhammaan liiska codsiyada ee ku qoran tiirka bidix. Kadibna dhanka midig waxaad ka arki kartaa xannibaadaha iyo waxa ay abuuraan. Waxayna kuu noqon kartaa mid aad u cad si aanad mar kasta dib ugu laaban fadhi kasta oo aad eegto haddii aad u baahan tahay inaad ku biirto iyo in kale. Way noo qabtaan.
Muuqaal kale oo aad waxtar u leh ayaa ah pg_blocking_pids
. Waxay u badan tahay inaadan weligaa maqlin iyada. Maxay samaynaysaa? Waxay noo ogolaanaysaa inaan u sheegno in fadhigan 11740 nooca aqoonsiga nidaamka gaarka ah ee uu sugayo. Waxaadna arki kartaa in 11740 ay sugayaan 724. Oo 724 ayaa ugu sarreeya. 11306na waa aqoonsiga nidaamkaaga. Asal ahaan, shaqadani waxay soo martaa miiskaaga qufulka. Oo waan ogahay inay yara adag tahay, laakiin waxaad maareysaa inaad fahanto. Asal ahaan shaqadani waxay soo martaa miiska qufulka waxayna isku daydaa inay hesho meesha aqoonsiga nidaamkan lagu siinayo qufullada ay sugayso. Waxayna sidoo kale isku daydaa inay ogaato aqoonsiga habraaca ee habka sugaya qufulku leeyahay. Markaa waad socodsiin kartaa shaqadan pg_blocking_pids
.
Tani waxay noqon kartaa mid aad waxtar u leh. Waxaan kaliya ku darnay kan nooca 9.6, marka sifadaani waa 5 sano oo kaliya, laakiin aad iyo aad bay faa'iido u leedahay. Waxayna la mid tahay codsiga labaad. Waxay si sax ah u muujinaysaa waxa aan u baahanahay inaan aragno.
Tani waa waxa aan rabay in aan kaala hadlo. Iyo sida aan filayo, waxaan isticmaalnay waqtigeena oo dhan sababtoo ah waxaa jiray sawirro badan. Sawiradana waa diyaar si loo soo dejiyo. Waxaan jeclaan lahaa inaan kaaga mahadceliyo joogitaankaaga halkan. Waxaan hubaa inaad ka heli doontaan inta shirka ka dhiman, aad baad u mahadsantahay!
Su'aalo:
Tusaale ahaan, haddii aan isku dayayo inaan cusbooneysiiyo safafka, iyo fadhiga labaad wuxuu isku dayayaa inuu tirtiro dhammaan miiska. Inta aan fahmayo, waa in uu jiraa wax la mid ah quful ujeedo. Ma waxaas oo kale ma ka jirtaa Postgres?
Aan ku noqono bilowgii hore. Waxa laga yaabaa inaad xasuusato marka aad wax samayso, tusaale ahaan marka aad samayso SELECT, waxaanu bixinaa AccessShareLock. Waxayna tani ka hortagtaa in miiska la tuuro. Markaa haddii aad, tusaale ahaan, rabto inaad cusboonaysiiso safka miiska ku yaal ama aad tirtirto saf, markaa qof ma tirtiri karo miiska oo dhan isku mar sababtoo ah waxaad ku haysaa AccessShareLock miiska oo dhan iyo safka. Oo marka aad dhammayso, way tirtiri karaan. Laakin intaad si toos ah wax uga bedesho halkaas, ma awoodi doonaan inay sameeyaan.
Aan mar kale samayno. Aan u gudubno tusaalaha tirtirka. Oo waxaad arkaysaa sida uu u jiro quful gaar ah oo ku yaal safka ka sarreeya miiska oo dhan.
Tani waxay u ekaan doontaa quful gaar ah, sax?
Haa, way u egtahay. Waan fahmay waxaad ka hadlayso. Waxaad leedahay haddii aan sameeyo SELECT ka dib waxaan haystaa ShareExclusive ka dibna aan ka dhigo Row Exclusive, taasi dhib miyay noqotaa? Laakiin waxaa la yaab leh in tani aysan wax dhibaato ah keenin. Tani waxay u egtahay kordhinta heerka qufulka, laakiin asal ahaan waxaan haystaa quful ka hortagaya tirtirka. Oo hadda, markaan ka dhigo qufulkan mid aad u xoog badan, wuxuu weli ka hortagayaa tirtirka. Markaa ma aha sidii inaan kor u kacayo. Taasi waa, waxay ka hortagtay inay dhacdo markii ay ahayd heerka hoose sidoo kale, markaa markaan kor u qaado heerka waxay weli ka hortagtaa in miiska la tirtiro.
Waan fahmay waxaad ka hadlayso. Ma jiro kiis quful ah oo kor u qaadaya halkan, halkaas oo aad isku dayayso inaad ka tagto hal quful si aad u soo bandhigto mid ka xoog badan. Halkan waxa ay kordhisaa ka hortaggan guud ahaan guddiga, si aanay wax khilaaf ah u keenin. Laakiin waa su'aal wanaagsan. Aad baad ugu mahadsantahay inaad tan waydiisay!
Maxaan u baahanahay inaan sameyno si aan uga fogaano xaalad xirmo ah marka aan haysano kulamo badan, tiro badan oo isticmaaleyaal ah?
Postgres waxay si toos ah u ogaanaysaa xaaladaha xidhitaan. Oo waxay si toos ah u tirtiri doontaa mid ka mid ah fadhiyada. Sida kaliya ee looga badbaadi karo xannibaadda dhintay waa in la xannibo dadka si isku mid ah. Markaa marka aad eegto codsigaaga, inta badan sababta xidhidhiyeyaasha... Aynu qiyaasno in aan doonayo in aan xannibo laba shay oo kala duwan. Hal codsi ayaa qufulaya miiska 1, mid kalena waxa uu xidhaa 2, ka dibna shaxda 1. Sida ugu fudud ee aad uga fogaan karto qufulka waa in aad eegto codsigaga oo aad isku daydo in aad hubiso in qufulku u dhaco si isku mid ah dhammaan codsiyada. Waxayna tani inta badan meesha ka saartaa 80% dhibaatooyinka, sababtoo ah dhammaan noocyada dadka ayaa qora codsiyadan. Oo haddii aad u xannibto si isku mid ah, markaa ma la kulmid xaalad xannibaad ah.
Aad baad ugu mahadsantahay waxqabadkaaga! Waxaad ka hadashay vacuum buuxa oo, haddii aan si sax ah u fahmay, vacuum full wuxuu qalloociyaa nidaamka diiwaannada ee kaydinta kala duwan, si ay u hayaan diiwaannada hadda aan isbeddelin. Muxuu vacuum full u qaataa gelitaanka quful gaar ah maxayse uga hor imanaysaa hawlgallada qorista?
Taasi waa su'aal wanaagsan. Sababta ayaa ah in vacuum buuxa uu qaato miiska. Oo waxaan asal ahaan abuureynaa nooc cusub oo miiska ah. Miiskana wuxuu noqon doonaa mid cusub. Waxay soo baxday in tani ay noqon doonto nooc cusub oo miiska ah. Dhibaataduna waxay tahay marka aan sidan samayno, ma doonayno in dadku akhriyaan sababtoo ah waxaan u baahanahay iyaga si ay u arkaan miiska cusub. Oo sidaas daraaddeed tani waxay ku xidhan tahay su'aashii hore. Haddaynu isku mar akhrin lahayn, ma awoodno inaan dhaqaajinno oo dadka ku hagayo miis cusub. Waxaan u baahannahay inaan sugno qof walba inuu dhammeeyo akhrinta miiskan, sidaas darteed asal ahaan waa xaalad quful ah.
Waxaan leenahay waanu quful tan iyo bilowgii sababtoo ah waxaan ognahay in dhamaadka ugu danbeyn aan u baahan doono quful gaar ah si qof walba loogu wareejiyo nuqulka cusub. Markaa waxaan awood u yeelan karnaa in aan xalino tan. Oo waxaanu ku samaynaa habkan iyadoo la adeegsanayo tusmaynta isku mar. Laakiin tani aad bay u adag tahay in la sameeyo. Waxayna tani aad ula xidhiidhaa su'aashaadii hore ee qufulka gaarka ah.
Suurtagal ma tahay in lagu daro wakhtiga xidhitaanka ee Postgres? Gudaha Oracle, waxaan karaa, tusaale ahaan, ku qori karaa "dooro update" oo waxaan sugi 50 ilbiriqsi ka hor cusboonaysiinta. Way ku fiicnayd codsiga Laakiin gudaha Postgres, waxaan u baahanahay inaan isla markiiba sameeyo oo aanan sugin, ama sugin ilaa wakhti.
Haa, waxaad dooran kartaa wakhti ku-meel-gaar ah qufulkaaga, qufulkaaga. Waxa kale oo aad soo saari kartaa amar aan jid lahayn, kaas oo... haddii aanad isla markiiba heli karin qufulka. Sidaa darteed, ama wakhti quful ama wax kale oo kuu ogolaanaya inaad tan sameyso. Tan laguma sameeyo heerka isdhexgalka. Tan waxa loo sameeyaa doorsoome ahaan server-ka. Mararka qaarkood tan lama isticmaali karo.
Ma furi kartaa slide 75?
Haa.
Su'aashayduna waa tan soo socota. Waa maxay sababta ay labadaba hababka cusboonaysiinta u sugayaan 703?
Tanina waa su'aal weyn. Ma fahmin, jid ahaan, sababta Postgres ay tan u sameyso. Laakiin markii 703 la abuuray, waxay filaysay 702. Marka 704 iyo 705 soo baxaan, waxay u egtahay inaysan garanayn waxa ay filayaan sababtoo ah weli waxba ma jiraan. Postgres waxay sidan u sameysaa: marka aadan heli karin quful, waxay ku qortaa "Maxay tahay faa'iidada aad ku shaqeyneyso?", sababtoo ah waxaad horeyba u sugeysaa qof. Markaa waxaanu u ogolaan doonaa inuu hawada ku sii jiro, gabi ahaanba ma cusboonaysiin doono. Laakiin maxaa halkan ka dhacay? Isla markii 702 ay dhammeeyeen hawsha oo 703 ay heleen qufulkeeda, nidaamku dib ayuu u soo noqday. Waxayna tidhi hadda waxaan haynaa laba qof oo sugaya. Ka dibna aynu wada cusbooneysiinno. Oo aan tilmaanno in labaduba ay sugayaan.
Ma garanayo sababta uu Postgres sidan u sameeyo. Laakiin waxaa jirta dhibaato la yiraahdo fβ¦. Waxay ila tahay in tani aysan ahayn erey Ruush ah. Tani waa marka qof kastaa uu sugayo hal qalcadood, xitaa haddii ay jiraan 20 maamul oo sugaya qalcadda. Oo si lama filaan ah ayay dhammaantood isku mar u wada tooseen. Oo qof kastaa wuxuu bilaabay inuu isku dayo inuu ka falceliyo. Laakiin nidaamku wuxuu dhigayaa in qof kastaa sugayo 703. Waayo way wada sugayaan, oo isla markaaba waanu wada safaynaa. Oo haddii codsi kale oo cusub uu soo baxo kaas oo la sameeyay tan ka dib, tusaale ahaan, 707, markaa waxaa jiri doona faaruq mar kale.
Oo waxay ila tahay in tan la sameeyay si aan u nidhaahno heerkan 702 ayaa sugaya 703, dhammaan kuwa ka dambeeyana ma geli doonaan goobtan. Laakiin sida ugu dhakhsaha badan kabalyeeri ugu horeysay ka tago, dhammaan kuwa sugayay waqtigaas ka hor update heli calaamad isku mid ah. Oo sidaas daraaddeed waxaan u maleynayaa in tan loo sameeyay si aan u habaysan karno si ay si sax ah u dalbadaan.
Had iyo jeer waxaan u eegi jiray tan inay tahay dhacdo la yaab leh. Sababtoo ah halkan, tusaale ahaan, kuma wada liis gareeyno iyaga. Laakiin waxay ila tahay in mar kasta oo aan siinno quful cusub, aan eegno dhammaan kuwa ku jira habka sugitaanka. Markaas ayaanu wada safnaa. Ka dibna mid kasta oo cusub oo soo gala wuxuu gala safka marka qofka ku xiga uu dhammeeyo hawsha. Su'aal aad u wanaagsan. Aad baad ugu mahadsantahay su'aashaada!
Waxay iila muuqataa inay aad uga macquulsan tahay marka 705 uu filayo 704.
Laakiin dhibka halkan ka jira waa kan soo socda. Farsamo ahaan, waxaad toosin kartaa mid ama mid kale. Oo sidaas daraaddeed mid ama mid kale ayaan toosin doonnaa. Laakiin maxaa ka dhacaya nidaamka? Waxaad arki kartaa sida 703 ee ugu sarreeya uu u xannibay aqoonsigiisa wax kala iibsiga. Tani waa sida Postgres u shaqeyso. Oo 703 waxaa xannibay aqoonsiga macaamil ganacsi, markaa haddii qof rabo inuu sugo, markaa waxay sugi doonaan 703. Iyo, nuxur ahaan, 703 ayaa dhammaystiray. Kaliya ka dib marka la dhammeeyo ayaa mid ka mid ah hababka soo toosaa. Mana garanayno waxa dhabta ah ee habkani noqon doono. Kadibna wax walba si tartiib tartiib ah ayaan u farsameyneynaa. Laakiin ma cadda habka marka hore la toosay, sababtoo ah waxay noqon kartaa mid ka mid ah hababkan. Asal ahaan, waxaanu haysanay jadwal u sheegaya inaan hadda kicin karno mid ka mid ah hababkan. Waxaan ku dooranaa mid si aan kala sooc lahayn. Markaa labadoodaba waxay u baahan yihiin in la xuso waayo midna waan toosin karnaa.
Dhibaataduna waa in aan haysano CP-infinity. Sidaa darteed, waxay u badan tahay inaan ka toosi karno kan dambe. Haddii, tusaale ahaan, aan toosinno kan dambe, waxaan sugi doonnaa kan hadda helay blockka, markaa ma go'aaminno cidda dhabta ah ee la toosin doono marka hore. Waxaan si fudud u abuurnaa xaalad noocaas ah, nidaamkuna wuxuu ku toosin doonaa si aan kala sooc lahayn.
Waxaa jira
Source: www.habr.com