Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Nyob zoo sawv daws. Vladislav Rodin yog nyob rau hauv kov. Tam sim no kuv yog Tus Thawj Coj ntawm Chav Ua Haujlwm rau High Workload Architect chav kawm ntawm OTUS thiab tseem qhia cov chav kawm software architecture.

Ntxiv rau kev qhia, raws li koj tuaj yeem pom, Kuv tabtom sau cov ntaub ntawv tseem ceeb rau OTUS blog ntawm HabrΓ© thiab kuv xav ua ke nrog hnub no tsab xov xwm los ua ke nrog kev pib ntawm chav kawm "PostgreSQL", uas yog qhib rau cuv npe tam sim no.

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Taw qhia

Π’ zaum kawg peb tau tham txog qhov tseeb tias kev hloov pauv hauv cov ntaub ntawv siv los daws ob qhov teeb meem: ua kom muaj kev ua txhaum cai thiab nkag mus rau cov ntaub ntawv hauv qhov chaw sib tw. Txhawm rau ua tiav cov haujlwm no, kev hloov pauv yuav tsum muaj ACID cov khoom. Niaj hnub no peb yuav tham ntau yam txog tsab ntawv Kuv (kev cais) hauv no abbreviation.

Rwb thaiv tsev

Kev rho tawm daws qhov teeb meem ntawm kev nkag mus rau cov ntaub ntawv hauv qhov chaw sib tw, qhov tseem ceeb yog muab kev tiv thaiv los ntawm haiv neeg. Qhov zoo tshaj plaws, kev cais tawm txhais tau tias yog serialization, uas yog ib qho cuab yeej uas ua kom ntseeg tau tias qhov txiaj ntsig ntawm kev ua lag luam nyob rau hauv parallel yog tib yam li yog tias lawv tau ua tiav. Qhov teeb meem tseem ceeb ntawm cov cuab yeej no yog tias nws nyuaj heev los muab technically thiab, vim li ntawd, muaj kev cuam tshuam loj rau kev ua haujlwm ntawm lub cev. Tias yog vim li cas kev sib cais feem ntau tsis muaj zog, lees txais cov kev pheej hmoo ntawm qee qhov tsis txaus ntseeg, uas yuav tau tham hauv qab no. Qhov muaj peev xwm ntawm qee qhov kev tsis sib haum xeeb tshwm sim precisely characterizes theem ntawm kev rho tawm kev rho tawm.

Cov kev paub zoo tshaj plaws yog: nyeem qias neeg, nyeem tsis tau rov ua dua, nyeem phantom, tab sis qhov tseeb muaj 5 ntau ntxiv: qias neeg sau, cursor ploj hloov tshiab, ploj hloov tshiab, nyeem skew, sau skew.

qias neeg sau

Lub ntsiab lus ntawm qhov tsis txaus ntseeg yog tias kev hloov pauv tuaj yeem sau cov ntaub ntawv tsis raug cai.

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Qhov kev tsis txaus ntseeg no yog qhov txaus ntshai tsis yog vim tias cov ntaub ntawv tuaj yeem cuam tshuam tom qab ua ob qho kev lag luam (raws li hauv daim duab), tab sis kuj yog vim muaj kev ua txhaum atomicity: txij li thaum peb tso cai rau cov ntaub ntawv tsis raug sau dua, nws tsis paub meej tias yuav ua li cas rov qab ib qho kev lag luam tsis cuam tshuam rau lwm tus. .

Qhov tsis xws luag tuaj yeem kho tau yooj yim: peb muab lub xauv rau hauv cov ntaub ntawv ua ntej pib sau, txwv tsis pub lwm cov kev hloov pauv ntawm cov ntaub ntawv kom txog thaum lub xauv raug tshem tawm.

qias neeg nyeem

Kev nyeem qias neeg txhais tau tias nyeem cov ntaub ntawv tsis raug cai.

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Teeb meem tshwm sim thaum yuav tsum tau ua lossis txiav txim siab raws li tus qauv.

Txhawm rau kho qhov tsis txaus ntseeg, koj tuaj yeem txuas lub kaw lus nyeem, tab sis qhov no yuav cuam tshuam rau kev ua tau zoo. Nws yog qhov yooj yim dua los hais tias rau kev hloov pauv rov qab, thawj lub xeev ntawm cov ntaub ntawv (ua ntej pib sau) yuav tsum tau khaws cia hauv qhov system. Vim li cas ho tsis nyeem los ntawm qhov ntawd? Nws yog pheej yig txaus uas feem ntau databases tshem tawm qias neeg nyeem los ntawm lub neej ntawd.

Poob hloov tshiab

Poob kev hloov tshiab txhais tau tias ploj hloov tshiab, thiab kev txhais lus tau zoo qhia txog qhov tseem ceeb ntawm qhov teeb meem:

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Qhov tseeb, qhov txiaj ntsig ntawm kev hloov pauv T2 tau thim rov qab. Qhov xwm txheej no tuaj yeem kho tau los ntawm kev sau ntawv tsis meej lossis tsis meej. Ntawd yog, peb tsuas yog hloov kho cov ntaub ntawv, thiab tom qab ntawd qhov ntsuas qhov ntsuas tsis raug tshwm sim, lossis peb ua xaiv hloov tshiab, ua rau kev nyeem ntawv thiab sau ntawv xauv tshwm sim. Thov nco ntsoov tias qhov kev ua haujlwm no yog qhov txaus ntshai heev: nrog peb kev nyeem ntawv "tsis muaj txim", peb thaiv lwm yam kev nyeem. Qee cov databases muaj kev nyab xeeb dua xaiv share, cia cov ntaub ntawv nyeem tab sis tsis hloov.

Cursor poob hloov tshiab

Rau kev tswj kom zoo, cov hauv paus yuav muab lwm yam cuab yeej, xws li tus cursor. Tus cursor yog cov qauv uas muaj cov kab kab thiab tso cai rau koj rov ua dua lawv. tshaj tawm cursor_name rau select_statement. Cov ntsiab lus ntawm tus cursor tau piav qhia los ntawm kev xaiv.

Vim li cas koj thiaj xav tau tus cursor? Qhov tseeb yog tias qee qhov databases muab xauv rau txhua cov ntaub ntawv xaiv los ntawm kev xaiv (nyeem kev ruaj ntseg), lossis tsuas yog ntawm cov ntaub ntawv uas tus cursor tam sim no nyob (cursor stability). Nrog tus cursor stability, luv xauv yog siv, uas tso cai rau peb txo tus naj npawb ntawm cov xauv yog tias peb rov ua dua cov qauv loj ntawm cov ntaub ntawv. Yog li ntawd, qhov poob hloov tshiab anomaly yog cais cais rau tus cursor.

Kev nyeem tsis rov ua dua

Kev nyeem tsis tau rov ua dua yog tias thaum lub sijhawm ua tiav ntawm peb qhov kev sib pauv, 2 qhov sib txuas ntawm tib cov ntaub ntawv yuav ua rau cov txiaj ntsig sib txawv, vim tias lwm qhov kev hloov pauv cuam tshuam ntawm ob qhov kev nyeem no, hloov peb cov ntaub ntawv thiab tau cog lus.

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Vim li cas qhov no txawm muaj teeb meem? Xav txog tias lub hom phiaj ntawm kev hloov pauv T2 hauv daim duab yog xaiv txhua yam khoom uas nws tus nqi qis dua 150 USD. Lwm tus tau hloov kho tus nqi rau $200. Yog li, lub lim ntsia tsis ua haujlwm.

Cov kev tsis sib haum xeeb no tau tshwm sim thaum ob-theem interlocks ntxiv lossis thaum siv MVCC mechanism, uas kuv xav sib tham sib cais.

Phantom nyeem

Phantom yog nyeem cov ntaub ntawv uas tau ntxiv los ntawm lwm qhov kev hloov pauv.

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Ua piv txwv, peb tuaj yeem soj ntsuam qhov kev xaiv tsis raug ntawm cov khoom pheej yig tshaj plaws thaum qhov tsis zoo no tshwm sim.

Tau tshem ntawm phantom nyeem yog twb nyuaj heev. Kev thaiv tsis tu ncua tsis txaus, vim peb tsis tuaj yeem thaiv qee yam uas tseem tsis tau muaj. 2PL tshuab siv kev ntsuas ntsuas ntsuas ntsuas, thaum MVCC cov tshuab muaj lub sijhawm ua lag luam uas thim rov qab kev lag luam uas yuav cuam tshuam los ntawm kev ntxig. Ob qho tib si thawj thiab thib ob mechanisms yog hnyav heev.

Nyeem skew

Nyeem skew tshwm sim thaum peb ua hauj lwm nrog ob peb lub rooj, cov ntsiab lus uas yuav tsum tau hloov tsis tu ncua.

Cia peb hais tias peb muaj cov rooj sawv cev rau cov posts thiab lawv cov ntaub ntawv meta:

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Ib qho kev hloov pauv nyeem los ntawm cov ntxhuav, lwm qhov hloov kho lawv:

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Raws li qhov tshwm sim ntawm kev hloov pauv T1, cov ntawv tshaj tawm muaj lub npe = Zoo, thiab hloov kho_by = T2, uas yog qee yam tsis sib xws.

Qhov tseeb, qhov no yog ib qho uas tsis tau nyeem dua, tab sis yog ib feem ntawm ntau lub rooj.

Txhawm rau txhim kho qhov no, T1 tuaj yeem muab xauv rau txhua kab uas nws yuav nyeem, uas yuav tiv thaiv kev hloov pauv T2 los ntawm kev hloov cov ntaub ntawv. Nyob rau hauv rooj plaub ntawm MVCC, qhov kev hloov pauv T2 yuav raug muab tso tseg. Kev tiv thaiv tawm tsam qhov tsis zoo no tuaj yeem ua qhov tseem ceeb yog tias peb siv tus cursors.

Sau skew

Qhov kev tsis txaus ntseeg no kuj yooj yim piav qhia nrog piv txwv: xav tias hauv peb lub cev yam tsawg ib tus kws kho mob yuav tsum tau ua haujlwm, tab sis ob tus kws kho mob txiav txim siab tshem tawm lawv lub luag haujlwm:

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Qhov tsis txaus ntseeg txhais tau tias tsis muaj ib tus kws kho mob yuav ua haujlwm. Vim li cas qhov no tshwm sim? Vim tias qhov kev sib pauv tau tshuaj xyuas ib qho xwm txheej uas tuaj yeem ua txhaum lwm qhov kev sib pauv, thiab vim kev sib cais peb tsis pom qhov kev hloov pauv no.

Qhov no yog tib yam uas tsis tau nyeem dua. Xwb, xaiv tuaj yeem tso cov xauv rau ntawm cov ntaub ntawv no.

Sau skew thiab nyeem skew yog kev sib xyaw ua ke ntawm qhov tsis sib xws dhau los. Koj tuaj yeem xav txog kev sau skew, uas yog qhov tseem ceeb ntawm kev nyeem phantom. Xav txog ib lub rooj uas muaj cov npe ntawm cov neeg ua haujlwm, lawv cov nyiaj hli, thiab txoj haujlwm lawv ua haujlwm:

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Dab tsi tuaj yeem tshwm sim los ntawm kev ua kom tsis muaj zog ntawm kev sib cais theem hauv cov ntaub ntawv?

Raws li qhov tshwm sim, peb tau txais cov duab hauv qab no: txhua tus thawj coj xav tias lawv qhov kev hloov pauv yuav tsis ua rau mus dhau pob nyiaj siv, yog li lawv tau hloov pauv cov neeg ua haujlwm uas ua ke ua rau raug nqi ntau dhau.

Qhov ua rau ntawm qhov teeb meem yog raws nraim tib yam li hauv phantom nyeem ntawv.

tshawb pom

Relaxing theem kev rho tawm kev rho tawm hauv cov ntaub ntawv yog kev lag luam tawm ntawm kev ruaj ntseg thiab kev ua haujlwm; kev xaiv ntawm qib no yuav tsum tau ua raws li qhov muaj feem cuam tshuam rau kev lag luam yog tias muaj qee yam tsis txaus ntseeg tshwm sim.

Kawm ntxiv txog chav kawm.

Tau qhov twg los: www.hab.com

Ntxiv ib saib