Xauv Postgres Lock Manager. Bruce Momjian

Cov ntawv sau tseg ntawm Bruce Momjian's 2020 tham "Xauv Tus Thawj Tswj Postgres Lock".

Xauv Postgres Lock Manager. Bruce Momjian

(Ceeb Toom: Tag nrho cov lus nug SQL los ntawm cov slides tuaj yeem tau txais los ntawm qhov txuas no: http://momjian.us/main/writings/pgsql/locking.sql)

Nyob zoo! Nws yog qhov zoo uas tau nyob ntawm no hauv Russia dua. Kuv thov txim kuv tuaj tsis tau xyoo tas los, tab sis xyoo no Ivan thiab kuv muaj kev npaj loj. Kuv vam tias yuav nyob ntawm no ntau zaus. Kuv nyiam tuaj rau Russia. Kuv yuav mus xyuas Tyumen, Tver. Kuv zoo siab heev uas kuv yuav tau mus xyuas cov nroog no.

Kuv lub npe yog Bruce Momjian. Kuv ua haujlwm ntawm EnterpriseDB thiab tau ua haujlwm nrog Postgres rau ntau dua 23 xyoos. Kuv nyob hauv Philadelphia, USA. Kuv mus txog 90 hnub hauv ib xyoos. Thiab kuv tuaj koom txog 40 lub rooj sab laj. Kuv Lub vev xaib, uas muaj cov slides uas kuv yuav tam sim no qhia koj. Yog li ntawd, tom qab lub rooj sib tham koj tuaj yeem rub tawm lawv los ntawm kuv tus kheej lub vev xaib. Nws kuj muaj txog 30 qhov kev nthuav qhia. Kuj tseem muaj cov yeeb yaj kiab thiab ntau tus blog nkag, ntau dua 500. Qhov no yog ib qho kev qhia ncaj ncees. Thiab yog tias koj txaus siab rau cov khoom siv no, ces kuv caw koj siv nws.

Kuv tau ua ib tug xib fwb, ib tug xib fwb ua ntej kuv pib ua hauj lwm nrog Postgres. Thiab kuv zoo siab heev uas tam sim no kuv tuaj yeem qhia koj qhov kuv tab tom yuav qhia rau koj. Nov yog ib qho ntawm kuv cov lus nthuav qhia tshaj plaws. Thiab qhov kev nthuav qhia no muaj 110 slides. Peb yuav pib tham nrog tej yam yooj yim, thiab thaum kawg daim ntawv qhia yuav ua ntau thiab ntau complex, thiab yuav ua heev complex.

Xauv Postgres Lock Manager. Bruce Momjian

Qhov no yog ib qho kev sib tham tsis txaus siab. Kev thaiv tsis yog qhov kev nyiam tshaj plaws. Peb xav kom qhov no ploj mus. Zoo li mus ntsib kws kho hniav.

Xauv Postgres Lock Manager. Bruce Momjian

  1. Xauv yog ib qho teeb meem rau ntau tus neeg ua haujlwm hauv databases thiab muaj ntau yam txheej txheem khiav tib lub sijhawm. Lawv xav tau kev thaiv. Ntawd yog, hnub no kuv yuav muab koj cov kev paub yooj yim ntawm kev thaiv.
  2. Kev lag luam IDs. Qhov no yog ib feem ntawm kev nthuav qhia, tab sis lawv yuav tsum to taub.
  3. Tom ntej no peb yuav tham txog hom kev thaiv. Qhov no yog ib feem ntawm txhua yam.
  4. Thiab hauv qab no peb yuav muab qee qhov piv txwv ntawm kev thaiv. Thiab nws yuav nyuaj heev kom nkag siab.

Xauv Postgres Lock Manager. Bruce Momjian

Wb tham txog kev thaiv.

Xauv Postgres Lock Manager. Bruce Momjian

Peb terminology yog heev complex. Koj muaj pes tsawg tus paub qhov nqe lus no tuaj ntawm qhov twg? Ob tug neeg. Qhov no yog los ntawm kev ua si hu ua Colossal Cave Adventure. Nws yog ib qho kev ua si hauv computer hauv 80s, kuv xav. Nyob ntawd koj yuav tsum mus rau hauv lub qhov tsua, mus rau hauv lub labyrinth, thiab cov ntawv hloov pauv, tab sis cov ntsiab lus yog kwv yees li qub txhua zaus. Yog li kuv nco txog qhov kev ua si no.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab ntawm no peb pom lub npe ntawm cov xauv uas tuaj rau peb los ntawm Oracle. Peb siv lawv.

Xauv Postgres Lock Manager. Bruce Momjian

Ntawm no peb pom cov ntsiab lus uas ua rau kuv tsis meej pem. Piv txwv li, SHARE UPDATE ECXLUSIVE. Next SHARE RAW ECXLUSIVE. Yuav kom ncaj ncees, cov npe no tsis meej heev. Peb yuav sim xav txog lawv hauv kev nthuav dav ntxiv. Qee qhov muaj lo lus "sib koom", uas txhais tau tias cais. Qee qhov muaj lo lus "exclusive". Ib txhia muaj ob lo lus no. Kuv xav pib nrog yuav ua li cas cov xauv no ua haujlwm.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab lo lus "access" kuj tseem ceeb heev. Thiab lo lus "kab" yog ib txoj hlua. Ntawd yog, nkag mus faib, kab faib.

Xauv Postgres Lock Manager. Bruce Momjian

Lwm qhov teeb meem uas yuav tsum tau nkag siab hauv Postgres, uas kuv hmoov tsis zoo yuav tsis tuaj yeem npog hauv kuv cov lus, yog MVCC. Kuv muaj ib qho kev nthuav qhia tshwj xeeb ntawm cov ncauj lus no hauv kuv lub vev xaib. Thiab yog tias koj xav tias qhov kev nthuav qhia no nyuaj, MVCC yog qhov nyuaj tshaj plaws. Thiab yog tias koj txaus siab, koj tuaj yeem saib nws ntawm lub vev xaib. Koj tuaj yeem saib cov yeeb yaj kiab.

Xauv Postgres Lock Manager. Bruce Momjian

Lwm qhov peb yuav tsum nkag siab yog kev hloov pauv ID. Ntau qhov kev hloov pauv tsis tuaj yeem ua haujlwm yam tsis muaj tus cim tshwj xeeb. Thiab ntawm no peb muaj cov lus piav qhia txog qhov kev lag luam yog dab tsi. Postgres muaj ob txoj kev ua lej lej. Kuv paub qhov no tsis yog ib qho kev daws teeb meem zoo nkauj heev.

Xauv Postgres Lock Manager. Bruce Momjian

Tsis tas li ntawd nco ntsoov tias cov slides yuav nyuaj heev rau kev nkag siab, yog li qhov tseem ceeb ntawm liab yog dab tsi koj yuav tsum tau them sai sai rau.

Xauv Postgres Lock Manager. Bruce Momjian

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

Cia peb saib. Tus lej hloov pauv tau qhia hauv liab. SELECT pg_back muaj nuj nqi tau qhia ntawm no. Nws rov qab kuv qhov kev hloov pauv thiab tus lej hloov pauv.

Ib qho ntxiv, yog tias koj nyiam qhov kev nthuav qhia no thiab xav khiav nws ntawm koj cov ntaub ntawv, ces koj tuaj yeem mus rau qhov txuas no hauv paj yeeb thiab rub tawm SQL rau qhov kev nthuav qhia no. Thiab koj tuaj yeem khiav nws hauv koj lub PSQL thiab tag nrho kev nthuav qhia yuav nyob ntawm koj lub vijtsam tam sim ntawd. Nws yuav tsis muaj paj, tab sis tsawg kawg peb tuaj yeem pom nws.

Xauv Postgres Lock Manager. Bruce Momjian

Hauv qhov no peb pom qhov kev hloov pauv ID. Nov yog tus naj npawb peb muab rau nws. Thiab muaj lwm hom kev lag luam ID hauv Postgres, uas yog hu ua virtual pauv ID

Thiab peb yuav tsum to taub qhov no. Qhov no tseem ceeb heev, txwv tsis pub peb yuav tsis tuaj yeem nkag siab txog kev kaw hauv Postgres.

Tus ID kev lag luam virtual yog tus ID kev lag luam uas tsis muaj qhov tseem ceeb. Piv txwv li, yog tias kuv khiav SELECT cov lus txib, ces kuv feem ntau yuav tsis hloov cov ntaub ntawv, kuv yuav tsis xauv dab tsi. Yog li thaum peb khiav ib qho yooj yim SELECT, peb tsis muab qhov kev hloov pauv ib tus ID tsis tu ncua. Peb tsuas yog muab nws tus ID virtual rau ntawd.

Thiab qhov no txhim kho Postgres kev ua tau zoo, txhim kho kev tu lub peev xwm, yog li tus ID pauv virtual muaj ob tus lej. Thawj tus lej ua ntej tus lej yog tus lej ID. Thiab ntawm sab xis peb pom tsuas yog lub txee.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li ntawd, yog tias kuv khiav qhov kev thov, nws hais tias tus backend ID yog 2.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog hais tias kuv khiav ib tug series ntawm xws muas, ces peb pom tias lub txee nce txhua txhua lub sij hawm kuv khiav cov lus nug. Piv txwv li, thaum kuv khiav cov lus nug 2/10, 2/11, 2/12, thiab lwm yam.

Xauv Postgres Lock Manager. Bruce Momjian

Nco ntsoov tias muaj ob kab ntawm no. Nyob rau sab laug peb pom tus ID pauv virtual - 2/12. Thiab ntawm sab xis peb muaj daim ID pauv mus tas li. Thiab daim teb no yog khoob. Thiab qhov kev pauv no tsis hloov kho cov ntaub ntawv. Yog li kuv tsis muab nws daim ID pauv mus tas li.

Xauv Postgres Lock Manager. Bruce Momjian

Thaum kuv khiav qhov kev txheeb xyuas cov lus txib ((SAIB XYUAS)), cov lus nug tib yam muab rau kuv mus tas li ID nkag mus. Saib seb qhov no tau hloov pauv li cas rau peb. Kuv tsis muaj tus ID no ua ntej, tab sis tam sim no kuv muaj nws.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li ntawm no yog lwm qhov kev thov, lwm qhov kev hloov pauv. Tus lej hloov pauv virtual yog 2/13. Thiab yog tias kuv thov kom muaj tus ID tsis tu ncua, ces thaum kuv khiav cov lus nug, kuv yuav tau txais.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li, ib zaug ntxiv. Peb muaj ib tug virtual muas ID thiab ib tug tsis tu ncua kev pauv ID. Tsuas yog nkag siab cov ntsiab lus no kom nkag siab tus cwj pwm Postgres.

Xauv Postgres Lock Manager. Bruce Momjian

Peb mus rau ntu thib peb. Ntawm no peb tsuas yog taug kev los ntawm ntau hom kev xauv hauv Postgres. Nws tsis yog qhov nthuav heev. Ntu kawg yuav nthuav ntau dua. Tab sis peb yuav tsum xav txog tej yam tseem ceeb, vim hais tias txwv tsis pub peb yuav tsis to taub dab tsi yuav tshwm sim tom ntej.

Peb yuav mus txog ntu no, peb yuav saib txhua hom xauv. Thiab kuv yuav qhia koj cov piv txwv ntawm yuav ua li cas lawv raug teeb tsa, lawv ua haujlwm li cas, Kuv yuav qhia koj qee cov lus nug uas koj tuaj yeem siv los saib seb kev kaw haujlwm li cas hauv Postgres.

Xauv Postgres Lock Manager. Bruce Momjian

Txhawm rau tsim cov lus nug thiab pom muaj dab tsi tshwm sim hauv Postgres, peb yuav tsum muab cov lus nug hauv qhov system saib. Hauv qhov no, pg_lock yog qhov tseem ceeb hauv xim liab. Pg_lock yog lub rooj kaw lus uas qhia peb tias qhov ntsuas phoo tam sim no siv hauv Postgres.

Txawm li cas los xij, nws nyuaj heev rau kuv los qhia koj pg_lock ntawm nws tus kheej vim nws nyuaj heev. Yog li kuv tsim ib qho kev pom uas qhia pg_locks. Thiab nws kuj ua qee yam haujlwm rau kuv uas tso cai rau kuv nkag siab zoo dua. Ntawd yog, nws tsis suav nrog kuv cov xauv, kuv tus kheej kev sib tham, thiab lwm yam. Nws tsuas yog tus qauv SQL thiab nws tso cai rau koj los qhia koj zoo dua dab tsi tshwm sim.

Xauv Postgres Lock Manager. Bruce Momjian

Lwm qhov teeb meem yog tias qhov kev pom no dav heev, yog li kuv yuav tsum tsim qhov thib ob - lockview2.

Xauv Postgres Lock Manager. Bruce Momjian Thiab nws qhia kuv ntau kab ntawm lub rooj. Thiab ib qho ntxiv uas qhia kuv txog cov kab tag. Qhov no yog qhov nyuaj heev, yog li kuv sim qhia nws kom yooj yim li sai tau.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li ntawd peb tsim ib lub rooj hu ua Lockdemo. Thiab peb tsim ib kab nyob ntawd. Nov yog peb cov lus piv txwv. Thiab peb yuav tsim cov ntu tsuas yog los qhia koj cov piv txwv ntawm cov xauv.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li, ib kab, ib kab. Thawj hom xauv yog hu ua ACCESS SHARE. Qhov no yog qhov txwv tsis pub tsawg tshaj plaws. Qhov no txhais tau hais tias nws xyaum tsis cuam tshuam nrog lwm cov xauv.

Thiab yog hais tias peb xav kom meej meej txhais ib lub xauv, peb khiav "lock table" hais kom ua. Thiab nws yuav pom tseeb thaiv, piv txwv li hauv ACCESS SHARE hom peb tso lub rooj xauv. Thiab yog tias kuv khiav PSQL hauv keeb kwm yav dhau, ces kuv pib qhov kev sib tham thib ob los ntawm kuv thawj qhov kev sib tham no. Qhov ntawd yog, kuv yuav ua li cas ntawm no? Kuv mus rau lwm qhov kev sib tham thiab qhia nws "qhia kuv qhov kev ntsuas xauv rau qhov kev thov no." Thiab ntawm no kuv muaj AccessShareLock hauv cov lus no. Nov yog qhov kuv thov. Thiab nws hais tias qhov thaiv tau raug xa mus. Yooj yim heev.

Xauv Postgres Lock Manager. Bruce Momjian

Ntxiv mus, yog peb saib ntawm kab thib ob, ces tsis muaj dab tsi nyob ntawd. Lawv yog cov khoob.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog tias kuv khiav qhov "SELECT" hais kom ua, qhov no yog txoj hauv kev tsis txaus ntseeg (qhia meej) thov AccessShareLock. Yog li kuv tso kuv lub rooj thiab khiav cov lus nug thiab cov lus nug rov qab ntau kab. Thiab nyob rau hauv ib qho ntawm cov kab peb pom AccessShareLock. Yog li, SELECT hu rau AccessShareLock ntawm lub rooj. Thiab nws tsis cuam tshuam nrog txhua yam zoo vim nws yog qhov ntsuas qis qis.

Xauv Postgres Lock Manager. Bruce Momjian

Yuav ua li cas yog tias kuv khiav SELECT thiab muaj peb lub rooj sib txawv? Yav dhau los kuv tsuas yog khiav ib lub rooj xwb, tam sim no kuv tab tom khiav peb: pg_class, pg_namespace thiab pg_attribute.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab tam sim no thaum kuv saib cov lus nug, kuv pom 9 AccessShareLocks hauv peb lub rooj. Vim li cas? Peb lub rooj tseem ceeb hauv xiav: pg_attribute, pg_class, pg_namespace. Tab sis koj tseem tuaj yeem pom tias txhua qhov ntsuas tau txhais los ntawm cov rooj no kuj muaj AccessShareLock.

Thiab qhov no yog qhov ntsuas phoo uas xyaum tsis muaj teeb meem nrog lwm tus. Thiab txhua yam nws ua yog tsuas yog tiv thaiv peb ntawm kev rov pib dua lub rooj thaum peb xaiv nws. Nws ua rau kev nkag siab. Qhov ntawd yog, yog tias peb xaiv ib lub rooj, nws ploj thaum lub sijhawm ntawd, ces qhov no tsis yog lawm, yog li ntawd AccessShare yog qhov ntsuas qis qis uas qhia peb "tsis txhob tso lub rooj no thaum kuv ua haujlwm". Qhov tseem ceeb, qhov ntawd yog txhua yam nws ua.

Xauv Postgres Lock Manager. Bruce Momjian

ROW SHARE - Qhov ntsuas phoo no txawv me ntsis.

Xauv Postgres Lock Manager. Bruce Momjian

Cia peb ua piv txwv. SELECT ROW SHARE txoj kev xauv txhua kab ib tus zuj zus. Txoj kev no tsis muaj leej twg tuaj yeem rho tawm lossis hloov pauv thaum peb tab tom saib lawv.

Xauv Postgres Lock Manager. Bruce MomjianYog li ntawd SHARE LOCK ua dab tsi? Peb pom tias kev hloov pauv ID yog 681 rau SELECT. Thiab qhov no yog qhov nthuav. Dab tsi tshwm sim ntawm no? Thawj zaug peb pom tus lej yog nyob rau hauv "Lock" teb. Peb coj tus lej ID thiab nws hais tias nws thaiv nws hauv hom tshwj xeeb. Txhua yam nws ua yog nws hais tias kuv muaj kab uas yog technically xauv qhov chaw ntawm lub rooj. Tab sis nws tsis hais qhov tseeb. Peb mam li saib qhov no hauv kev nthuav dav ntxiv me ntsis tom qab.

Xauv Postgres Lock Manager. Bruce Momjian

Ntawm no peb hais tias lub xauv yog siv los ntawm peb.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li, ib qho kev xauv tshwj xeeb qhia meej meej tias nws yog tshwj xeeb. Thiab kuj yog tias koj rho tawm ib kab hauv cov lus no, ces qhov no yuav tshwm sim, raws li koj tuaj yeem pom.

Xauv Postgres Lock Manager. Bruce Momjian

SHARE EXCLUSIVE yog qhov xauv ntev dua.

Xauv Postgres Lock Manager. Bruce Momjian

Qhov no yog (ANALYZE) cov lus txib ntsuas uas yuav raug siv.

Xauv Postgres Lock Manager. Bruce Momjian

SHARE LOCK - koj tuaj yeem kaw ncaj qha rau hauv kev qhia hom.

Xauv Postgres Lock Manager. Bruce Momjian

Koj tuaj yeem tsim qhov ntsuas tshwj xeeb. Thiab nyob ntawd koj tuaj yeem pom SHARE LOCK, uas yog ib feem ntawm lawv. Thiab nws kaw lub rooj thiab muab SHARE LOCK rau nws.

Los ntawm lub neej ntawd, SHARE LOCK ntawm lub rooj txhais tau hais tias lwm tus neeg tuaj yeem nyeem lub rooj, tab sis tsis muaj leej twg tuaj yeem hloov kho nws. Thiab qhov no yog qhov tshwm sim thaum koj tsim ib qho kev ntsuas tshwj xeeb.

Yog hais tias kuv tsim ib tug cim concurrently Performance index, ces kuv yuav muaj ib tug sib txawv hom ntawm xauv vim hais tias, raws li koj nco qab, siv concurrently indexes txo qhov yuav tsum tau ntawm xauv. Thiab yog tias kuv siv lub xauv qhov qub, qhov ntsuas ib txwm, ces kuv yuav yog li tiv thaiv kev sau ntawv rau lub rooj ntsuas thaum nws tab tom tsim. Yog tias kuv siv qhov ntsuas ntsuas ib txhij, ces kuv yuav tsum siv ntau hom kev ntsuas ntsuas.

Xauv Postgres Lock Manager. Bruce Momjian

SHARE ROW EXCLUSIVE – dua nws tuaj yeem teem tau meej meej (qhia meej).

Xauv Postgres Lock Manager. Bruce Momjian

Lossis peb tuaj yeem tsim txoj cai, piv txwv li, coj ib rooj plaub tshwj xeeb uas nws yuav siv.

Xauv Postgres Lock Manager. Bruce Momjian

EXCLUSIVE locking txhais tau hais tias tsis muaj leej twg tuaj yeem hloov lub rooj.

Xauv Postgres Lock Manager. Bruce Momjian

Ntawm no peb pom ntau hom xauv.

Xauv Postgres Lock Manager. Bruce Momjian

ACCESS EXCLUSIVE, piv txwv li, yog cov lus txib thaiv. Piv txwv li, yog tias koj ua CLUSTER table, ces qhov no yuav txhais tau tias tsis muaj leej twg yuav sau tau rau ntawd. Thiab nws xauv tsis tau tsuas yog lub rooj xwb, tab sis kuj cov indexes.

Xauv Postgres Lock Manager. Bruce Momjian

Qhov no yog nplooj ntawv thib ob ntawm ACCESS EXCLUSIVE thaiv, qhov twg peb pom raws nraim qhov nws thaiv hauv lub rooj. Nws kaw cov kab lus ntawm tus kheej, uas yog qhov nthuav heev.

Nov yog tag nrho cov ntaub ntawv yooj yim uas kuv xav muab. Peb tham txog kev xauv, hais txog kev lag luam IDs, peb tham txog virtual kev lag luam IDs, txog kev hloov pauv mus tas li IDs.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab tam sim no peb yuav dhau los ntawm qee cov piv txwv thaiv. Qhov no yog qhov nthuav tshaj plaws. Peb yuav saib cov xwm txheej nthuav heev. Thiab kuv lub hom phiaj hauv qhov kev nthuav qhia no yog muab rau koj kom nkag siab zoo txog qhov Postgres ua tau tiag tiag thaum nws sim thaiv qee yam. Kuv xav tias nws zoo heev ntawm kev thaiv cov khoom.

Cia peb saib qee qhov piv txwv tshwj xeeb.

Xauv Postgres Lock Manager. Bruce Momjian

Peb mam li pib nrog cov ntxhuav thiab ib kab hauv ib lub rooj. Thaum kuv ntxig ib yam dab tsi kuv muaj ExclusiveLock, Transaction ID thiab ExclusiveLock tso tawm rau ntawm lub rooj.

Xauv Postgres Lock Manager. Bruce Momjian

Yuav ua li cas yog tias kuv ntxig ob kab ntxiv? Thiab tam sim no peb lub rooj muaj peb kab. Thiab kuv tau ntxig ib kab thiab tau txais qhov no raws li qhov tso zis. Thiab yog tias kuv ntxig ob kab ntxiv, dab tsi yog qhov txawv ntawm qhov ntawd? Muaj ib qho txawv ntawm no vim kuv tau ntxiv peb kab rau lub rooj no, tab sis kuv tseem muaj ob kab hauv lub rooj xauv. Thiab qhov no yog qhov tseem ceeb ntawm tus cwj pwm tseem ceeb ntawm Postgres.

Ntau tus neeg xav tias yog nyob rau hauv ib lub database koj xauv 100 kab, ces koj yuav tsum tau tsim 100 xauv nkag. Yog tias kuv thaiv 1 kab ib zaug, ces kuv yuav xav tau 000 cov lus nug. Thiab yog tias kuv xav tau ib lab lossis billion los thaiv. Tab sis yog tias peb ua qhov no, nws yuav tsis ua haujlwm zoo. Yog tias koj tau siv lub kaw lus uas tsim thaiv kev nkag rau txhua tus kab ke, koj tuaj yeem pom tias qhov no nyuaj. Vim tias koj yuav tsum tau txhais tam sim lub rooj xauv uas tuaj yeem dhau, tab sis Postgres tsis ua li ntawd.

Thiab qhov tseem ceeb ntawm qhov swb no yog qhov ua kom pom tseeb tias muaj lwm qhov system uas khiav hauv MVCC uas kaw cov kab ib leeg. Yog li thaum koj kaw billions ntawm kab, Postgres tsis tsim ib billion cais cov lus txib. Thiab qhov no muaj txiaj ntsig zoo heev rau kev tsim khoom.

Xauv Postgres Lock Manager. Bruce Momjian

Yuav ua li cas txog qhov hloov tshiab? Kuv tab tom hloov kho kab tam sim no, thiab koj tuaj yeem pom tias nws tau ua ob txoj haujlwm sib txawv ib zaug. Nws kaw lub rooj rau tib lub sijhawm, tab sis nws kuj kaw qhov ntsuas. Thiab nws yuav tsum tau kaw qhov Performance index vim tias muaj cov kev txwv tshwj xeeb ntawm lub rooj no. Thiab peb xav kom paub tseeb tias tsis muaj leej twg hloov nws, yog li peb thaiv nws.

Xauv Postgres Lock Manager. Bruce Momjian

Yuav ua li cas yog tias kuv xav hloov kho ob kab? Thiab peb pom tias nws coj ib yam nkaus. Peb ua ob zaug ntau qhov hloov tshiab, tab sis raws nraim tib tus lej ntawm cov kab xauv.

Yog tias koj xav paub tias Postgres ua li cas qhov no, koj yuav tsum tau mloog kuv cov lus hais ntawm MVCC kom kawm paub tias Postgres nyob hauv cov kab no tau hloov pauv li cas. Thiab Postgres muaj ib txoj hauv kev uas nws ua qhov no, tab sis nws tsis ua nws ntawm lub rooj xauv theem, nws ua nws qis dua thiab ua tau zoo dua.

Xauv Postgres Lock Manager. Bruce Momjian

Yuav ua li cas yog kuv xav rho tawm ib yam dab tsi? Yog tias kuv rho tawm, piv txwv li, ib kab thiab kuv tseem muaj kuv ob qhov thaiv kev nkag, thiab txawm tias kuv xav rho tawm tag nrho, lawv tseem nyob ntawd.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab, piv txwv li, kuv xav ntxig 1 kab, thiab tom qab ntawd tshem tawm lossis ntxiv 000 kab, ces cov kab ib tus neeg uas kuv ntxiv lossis hloov pauv, lawv tsis raug kaw ntawm no. Lawv tau sau nyob rau theem qis hauv koob nws tus kheej. Thiab thaum lub sij hawm MVCC hais lus kuv tau tham txog qhov no kom meej. Tab sis nws yog ib qho tseem ceeb heev thaum koj txheeb xyuas cov xauv kom paub tseeb tias koj tau xauv ntawm lub rooj theem thiab koj tsis pom tias tus neeg kab tau kaw li cas ntawm no.

Xauv Postgres Lock Manager. Bruce Momjian

Yuav ua li cas hais txog kev thaiv meej?

Xauv Postgres Lock Manager. Bruce Momjian

Yog tias kuv nyem refresh, kuv muaj ob kab xauv. Thiab yog tias kuv xaiv lawv tag nrho thiab nyem "hloov txhua qhov chaw," ces kuv tseem muaj ob daim ntawv thaiv.

Xauv Postgres Lock Manager. Bruce Momjian

Peb tsis tsim cov ntaub ntawv sib cais rau txhua kab. Vim tias cov khoom lag luam poob qis, tej zaum yuav muaj ntau dhau. Thiab peb yuav pom peb tus kheej hauv qhov xwm txheej tsis zoo.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab tib yam, yog tias peb sib koom, peb tuaj yeem ua tau 30 zaug.

Xauv Postgres Lock Manager. Bruce Momjian

Peb rov qab peb lub rooj, tshem tawm txhua yam, tom qab ntawd ntxig ib kab dua.

Xauv Postgres Lock Manager. Bruce Momjian

Lwm tus cwj pwm uas koj pom hauv Postgres uas paub zoo thiab tus cwj pwm xav tau yog tias koj tuaj yeem ua qhov hloov tshiab lossis xaiv. Thiab koj tuaj yeem ua qhov no tib lub sijhawm. Thiab xaiv tsis thaiv kev hloov tshiab thiab tib yam nyob rau hauv qhov kev coj rov qab. Peb qhia rau tus nyeem tsis txhob thaiv tus sau, thiab tus kws sau ntawv tsis thaiv tus nyeem ntawv.

Kuv yuav qhia koj ib qho piv txwv ntawm qhov no. Kuv yuav xaiv tam sim no. Tom qab ntawd peb yuav ua qhov INSERT. Thiab tom qab ntawd koj tuaj yeem pom - 694. Koj tuaj yeem pom tus ID ntawm kev hloov pauv uas tau ua qhov kev ntxig no. Thiab yog li nws ua haujlwm.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog tias kuv saib kuv tus ID backend tam sim no, nws yog 695.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab kuv tuaj yeem pom 695 tshwm hauv kuv lub rooj.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog tias kuv hloov kho qhov no zoo li qhov no, ces kuv tau txais ib rooj plaub sib txawv. Hauv qhov no, 695 yog lub xauv tshwj xeeb, thiab hloov tshiab muaj tus cwj pwm zoo ib yam, tab sis tsis muaj qhov tsis sib haum xeeb ntawm lawv, uas yog qhov txawv heev.

Thiab koj tuaj yeem pom tias nyob rau sab saum toj nws yog ShareLock, thiab hauv qab nws yog ExclusiveLock. Thiab ob qho kev lag luam tau ua tiav.

Thiab koj yuav tsum mloog kuv cov lus ntawm MVCC kom nkag siab tias qhov no tshwm sim li cas. Tab sis qhov no yog ib qho piv txwv uas koj tuaj yeem ua tau tib lub sijhawm, piv txwv li ua SELECT thiab UPDATE tib lub sijhawm.

Xauv Postgres Lock Manager. Bruce Momjian

Cia peb pib dua thiab ua ib qho haujlwm ntxiv.

Xauv Postgres Lock Manager. Bruce Momjian

Yog tias koj sim khiav ob qhov hloov tshiab ib txhij ntawm tib kab, nws yuav raug thaiv. Thiab nco ntsoov, kuv tau hais tias tus nyeem ntawv tsis thaiv tus sau, thiab tus kws sau ntawv tsis thaiv tus nyeem ntawv, tab sis ib tus kws sau ntawv thaiv lwm tus kws sau ntawv. Ntawd yog, peb tsis tuaj yeem muaj ob tus neeg hloov kho tib kab tib lub sijhawm. Koj yuav tsum tau tos kom txog thaum ib tug ntawm lawv tiav.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab txhawm rau piav qhia qhov no, kuv yuav saib ntawm lub rooj Lockdemo. Thiab peb yuav saib ntawm ib kab. Ib qho kev sib pauv 698.

Peb tau hloov kho qhov no rau 2. 699 yog thawj qhov hloov tshiab. Thiab nws tau ua tiav lossis nws yog nyob rau hauv kev ua lag luam tseem tab tom tos peb kom paub meej lossis tshem tawm.

Xauv Postgres Lock Manager. Bruce Momjian

Tab sis saib lwm yam - 2/51 yog peb qhov kev sib pauv thawj zaug, peb thawj zaug. 3/112 yog qhov kev thov thib ob uas los ntawm sab saum toj uas hloov tus nqi ntawd rau 3. Thiab yog tias koj pom, qhov saum toj kawg nkaus tau kaw nws tus kheej, uas yog 699. Tab sis 3/112 tsis tau muab lub xauv. Cov kab Lock_mode hais tias nws tab tom tos dab tsi. Nws cia siab tias 699. Thiab yog tias koj saib qhov twg 699 yog, nws siab dua. Thiab thawj zaug tau ua dab tsi? Nws tsim ib lub xauv tshwj xeeb ntawm nws tus kheej kev lag luam ID. Qhov no yog li cas Postgres ua nws. Nws thaiv nws tus kheej kev lag luam ID. Thiab yog tias koj xav tos ib tus neeg kom paub meej lossis tshem tawm, ces koj yuav tsum tau tos thaum muaj kev hloov pauv tseem tshuav. Thiab yog vim li cas peb thiaj pom kab txawv txawv.

Wb rov los saib dua. Ntawm sab laug peb pom peb tus lej ua haujlwm. Hauv kab thib ob peb pom peb tus ID kev lag luam virtual, thiab hauv peb peb pom lock_type. Qhov no txhais li cas? Qhov tseem ceeb ntawm qhov nws hais yog tias nws thaiv qhov kev hloov pauv ID. Tab sis pom tias tag nrho cov kab hauv qab hais txog kev sib raug zoo. Thiab yog li koj muaj ob hom xauv ntawm lub rooj. Muaj kev sib raug kaw. Thiab tom qab ntawd muaj qhov thaiv kev lag luam, qhov twg koj thaiv ntawm koj tus kheej, uas yog raws nraim li cas tshwm sim ntawm thawj kab lossis hauv qab kawg, qhov twg qhov kev lag luam yog, qhov twg peb tos rau 699 kom tiav nws txoj haujlwm.

Kuv mam li pom dab tsi tshwm sim ntawm no. Thiab ntawm no ob yam tshwm sim ib txhij. Koj tab tom saib qhov kev hloov pauv ID xauv hauv thawj kab uas xauv nws tus kheej. Thiab nws thaiv nws tus kheej kom cov neeg tos.

Yog tias koj saib ntawm kab 6, nws yog tib yam nkag mus rau thawj. Thiab yog li ntawd kev hloov pauv 699 raug thaiv. 700 kuj yog qhov ntsuas tus kheej. Thiab tom qab ntawd hauv kab hauv qab koj yuav pom tias peb tab tom tos 699 kom tiav nws txoj haujlwm.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab hauv lock_type, tuple koj pom cov lej.

Xauv Postgres Lock Manager. Bruce Momjian

Koj tuaj yeem pom nws yog 0/10. Thiab qhov no yog tus naj npawb nplooj ntawv, thiab kuj yog qhov offset ntawm kab tshwj xeeb no.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab koj pom nws dhau los ua 0/11 thaum peb hloov kho.

Xauv Postgres Lock Manager. Bruce Momjian

Tab sis nyob rau hauv kev muaj tiag nws yog 0/10, vim hais tias muaj ib tug tos rau lub lag luam no. Peb muaj lub sijhawm los pom tias qhov no yog cov koob uas kuv tab tom tos kom paub meej.

Xauv Postgres Lock Manager. Bruce Momjian

Thaum peb tau lees paub nws thiab nias cog lus, thiab thaum qhov hloov tshiab tiav, qhov no yog qhov peb tau txais dua. Transaction 700 yog qhov xauv nkaus xwb, nws tsis tos lwm tus vim nws tau cog lus. Nws tsuas yog tos rau qhov kev sib pauv kom tiav. Thaum 699 khiav tawm, peb tsis tos dab tsi ntxiv lawm. Thiab tam sim no kev hloov pauv 700 hais tias txhua yam zoo, tias nws muaj tag nrho cov xauv nws xav tau ntawm txhua lub rooj tso cai.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab txhawm rau ua kom tag nrho qhov no nyuaj dua, peb tsim lwm qhov kev pom, uas lub sijhawm no yuav muab peb lub hierarchy. Kuv tsis xav kom koj nkag siab qhov kev thov no. Tab sis qhov no yuav ua rau peb pom qhov tseeb ntawm qhov tshwm sim.

Xauv Postgres Lock Manager. Bruce Momjian

Qhov no yog ib tug recursive saib uas kuj muaj lwm seem. Thiab ces nws coj txhua yam rov qab ua ke dua. Cia peb siv qhov no.

Xauv Postgres Lock Manager. Bruce Momjian

Yuav ua li cas yog peb ua peb ib txhij hloov tshiab thiab hais tias kab yog tam sim no peb. Thiab peb yuav hloov 3 mus rau 4.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab ntawm no peb pom 4. Thiab kev hloov pauv ID 702.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab ces kuv mam li hloov 4 mus rau 5. Thiab 5 mus rau 6, thiab 6 mus rau 7. Thiab kuv mam li line up a number of people who will be waiting for this one transaction to end.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab txhua yam ua kom meej. Thawj kab yog dab tsi? Qhov no yog 702. Qhov no yog qhov kev hloov pauv ID uas pib tsim tus nqi no. Dab tsi yog sau rau hauv kuv kab ntawv Pom Zoo? Kuv muaj qhabnias f. Cov no yog kuv qhov hloov tshiab uas (5, 6, 7) tsis tuaj yeem pom zoo vim tias peb tab tom tos kev hloov pauv ID 702 kom xaus. Peb muaj kev sib pauv ID thaiv. Thiab qhov no ua rau 5 kev hloov pauv ID xauv.

Thiab yog tias koj saib ntawm 704, ntawm 705, tsis muaj dab tsi tau sau rau ntawd, vim lawv tsis paub tias muaj dab tsi tshwm sim. Lawv tsuas sau tias lawv tsis paub tias yuav muaj dab tsi tshwm sim. Thiab lawv yuav cia li mus pw vim lawv tab tom tos ib tug neeg ua kom tiav thiab raug tsa thaum muaj sijhawm hloov kab.

Xauv Postgres Lock Manager. Bruce Momjian

Qhov no yog qhov nws zoo li. Nws yog qhov tseeb tias lawv txhua tus tab tom tos kab 12.

Xauv Postgres Lock Manager. Bruce Momjian

Nov yog qhov peb pom ntawm no. Nov yog 0/12.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li thaum thawj qhov kev sib pauv tau pom zoo, koj tuaj yeem pom ntawm no li cas hierarchy ua haujlwm. Thiab tam sim no txhua yam ua kom pom tseeb. Lawv sawv daws ua huv si. Thiab lawv yeej tseem tos.

Xauv Postgres Lock Manager. Bruce Momjian

Nov yog qhov tshwm sim. 702 703 ua . Thiab tam sim no 704 tau txais cov kab kaw no, thiab tom qab ntawd 703 pib tos 705 ua txhaum. Thiab XNUMX tseem tos qhov no thiab. Thiab thaum tag nrho cov no tiav lawm, lawv ntxuav lawv tus kheej. Thiab kuv xav taw tes tias txhua leej txhua tus nyob rau hauv. Thiab qhov no zoo ib yam li cov xwm txheej hauv kev tsheb khiav ceev thaum sawv daws tos thawj lub tsheb. Thawj lub tsheb nres thiab txhua leej txhua tus nyob rau hauv ib txoj kab ntev. Tom qab ntawd nws txav mus, ces lub tsheb tom ntej tuaj yeem tsav mus rau pem hauv ntej thiab tau txais nws qhov thaiv, thiab lwm yam.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog tias qhov no tsis zoo li nyuaj txaus rau koj, tam sim no peb yuav tham nrog koj txog kev tuag. Kuv tsis paub nej leej twg tau ntsib lawv. Qhov no yog ib qho teeb meem tshwm sim nyob rau hauv database systems. Tab sis kev tuag yog thaum ib zaug tab tom tos rau lwm qhov kev sib tham ua ib yam dab tsi. Thiab lub sijhawm no lwm qhov kev sib tham tab tom tos thawj zaug los ua ib yam dab tsi.

Thiab, piv txwv li, yog Ivan hais tias: "Muab ib yam dab tsi rau kuv," thiab kuv hais tias: "Tsis yog, kuv tsuas yog muab rau koj yog tias koj muab lwm yam rau kuv." Thiab nws hais tias, "Tsis yog, kuv yuav tsis muab rau koj yog tias koj tsis muab rau kuv." Thiab peb xaus rau hauv qhov xwm txheej tsis txaus ntseeg. Kuv paub tseeb tias Ivan yuav tsis ua qhov no, tab sis koj nkag siab lub ntsiab lus tias peb muaj ob tus neeg xav tau ib yam dab tsi thiab lawv tsis npaj muab nws mus txog thaum lwm tus muab lawv qhov lawv xav tau. Thiab tsis muaj kev daws teeb meem.

Thiab qhov tseem ceeb, koj cov ntaub ntawv yuav tsum tau kuaj xyuas qhov no. Thiab tom qab ntawd koj yuav tsum rho tawm lossis kaw ib qho ntawm cov ntu, vim tias lawv yuav nyob ntawd mus ib txhis. Thiab peb pom nws hauv databases, peb pom nws hauv kev khiav haujlwm. Thiab hauv txhua qhov chaw uas peb muaj cov txheej txheem sib luag, qhov no tuaj yeem tshwm sim.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab tam sim no peb yuav nruab ob lub kaw lus kaw. Peb mam li muab 50 thiab 80. Thawj kab, kuv mam li hloov kho ntawm 50 mus rau 50. Kuv yuav tau txais tus lej pauv 710.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab ces kuv mam li hloov 80 rau 81, thiab 50 rau 51.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab qhov no yog qhov nws yuav zoo li. Thiab yog li 710 muaj kab thaiv, thiab 711 tseem tos kom pom tseeb. Peb pom qhov no thaum peb hloov kho. 710 yog tus tswv ntawm peb series. Thiab 711 tos 710 kom ua tiav qhov kev sib pauv.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab nws txawm hais tias nyob rau qhov twg kab qhov kev tuag tshwm sim. Thiab ntawm no yog qhov uas nws pib mus weird.

Xauv Postgres Lock Manager. Bruce Momjian

Tam sim no peb tab tom hloov kho 80 rau 80.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab qhov no yog qhov uas qhov kev tuag pib. 710 tab tom tos cov lus teb los ntawm 711, thiab 711 tos rau 710. Thiab qhov no yuav tsis xaus zoo. Thiab tsis muaj txoj hauv kev tawm ntawm qhov no. Thiab lawv yuav cia siab tias yuav muaj lus teb los ntawm ib leeg.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab nws yuav cia li pib ncua txhua yam. Thiab peb tsis xav li ntawd.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab Postgres muaj txoj hauv kev los ceeb toom thaum qhov no tshwm sim. Thiab thaum qhov no tshwm sim, koj tau txais qhov yuam kev no. Thiab los ntawm qhov no nws yog tseeb hais tias xws li thiab xws li ib tug txheej txheem yog tos rau ib tug SHARE LOCK los ntawm lwm tus txheej txheem, piv txwv li, uas yog thaiv los ntawm 711 txheej txheem. Thiab cov txheej txheem ntawd tau tos rau SHARE LOCK kom muab rau ntawm xws li thiab xws li kev hloov pauv ID thiab raug thaiv los ntawm cov txheej txheem zoo li no. Yog li ntawd, muaj qhov xwm txheej tsis txaus ntseeg ntawm no.

Xauv Postgres Lock Manager. Bruce Momjian

Puas muaj peb txoj kev tuag? Nws puas ua tau? Yog lawm.

Xauv Postgres Lock Manager. Bruce Momjian

Peb sau cov lej no rau hauv ib lub rooj. Peb hloov 40 mus rau 40, peb ua thaiv.

Xauv Postgres Lock Manager. Bruce Momjian

Peb hloov 60 mus rau 61, 80 rau 81.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab ces peb hloov 80 thiab ces boom!

Xauv Postgres Lock Manager. Bruce Momjian

Thiab 714 tam sim no tos rau 715. Lub 716th yog tos rau 715th. Thiab tsis muaj dab tsi ua tau txog nws.

Xauv Postgres Lock Manager. Bruce Momjian

Tsis muaj ob tug nyob ntawm no lawm, twb muaj peb tug lawm. Kuv xav tau ib yam dab tsi los ntawm koj, tus no xav tau ib yam dab tsi los ntawm tus thib peb, thiab tus thib peb xav tau ib yam dab tsi los ntawm kuv. Thiab peb xaus rau hauv peb txoj kev tos vim peb txhua tus tos kom lwm tus ua tiav qhov lawv yuav tsum ua.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab Postgres paub txog kab twg qhov no tshwm sim. Thiab yog li nws yuav muab cov lus hauv qab no rau koj, uas qhia tau hais tias koj muaj teeb meem qhov twg peb lub tswv yim thaiv ib leeg. Thiab tsis muaj kev txwv ntawm no. Qhov no yuav yog rooj plaub uas 20 nkag thaiv ib leeg.

Xauv Postgres Lock Manager. Bruce Momjian

Qhov teeb meem tom ntej yog serializable.

Xauv Postgres Lock Manager. Bruce Momjian

Yog tshwj xeeb serializable xauv.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab peb rov qab mus rau 719. Nws cov zis yog qhov qub.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab koj tuaj yeem nyem ua qhov kev hloov pauv los ntawm serializable.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab koj paub tias tam sim no koj muaj ntau hom SA xauv - nws txhais tau tias serializable.

Xauv Postgres Lock Manager. Bruce Momjian

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog li ntawd peb muaj ib tug tshiab hom xauv hu ua SARieadLock, uas yog ib tug serial xauv thiab tso cai rau koj nkag mus rau serials.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab kuj koj tuaj yeem ntxig cov indexes tshwj xeeb.

Xauv Postgres Lock Manager. Bruce Momjian

Hauv cov lus no peb muaj cov cim tshwj xeeb.

Xauv Postgres Lock Manager. Bruce Momjian

Yog li kuv muab tus lej 2 ntawm no, kuv thiaj muaj 2. Tab sis nyob rau sab saum toj, kuv muab 2 ntxiv rau. Thiab koj tuaj yeem pom tias 721 muaj lub xauv tshwj xeeb. Tab sis tam sim no 722 tab tom tos 721 kom ua tiav nws txoj haujlwm vim nws tsis tuaj yeem ntxig 2 txog thaum nws paub tias yuav muaj dab tsi tshwm sim rau 721.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog tias peb ua subtransaction.

Xauv Postgres Lock Manager. Bruce Momjian

Ntawm no peb muaj 723.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab yog tias peb khaws cov ntsiab lus thiab hloov kho nws, ces peb tau txais tus ID hloov tshiab. Nov yog lwm tus qauv ntawm tus cwj pwm koj yuav tsum paub txog. Yog tias peb xa rov qab qhov no, ces tus ID pauv mus lawm. 724 rov. Tab sis tam sim no peb muaj 725.

Yog li cas kuv sim ua ntawm no? Kuv tab tom sim qhia koj cov piv txwv ntawm cov xauv txawv txawv uas koj yuav pom: txawm tias nws yog serializable locks lossis SAVEPOINT, cov no yog ntau hom xauv uas yuav tshwm sim hauv lub rooj xauv.

Xauv Postgres Lock Manager. Bruce Momjian

Qhov no yog qhov tsim ntawm qhov tseeb (qhib) locks, uas muaj pg_advisory_lock.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab koj pom tias hom thaiv tau teev tseg raws li kev tawm tswv yim. Thiab ntawm no nws hais tias "qhia" hauv liab. Thiab koj tuaj yeem thaiv ib txhij zoo li no nrog pg_advisory_unlock.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab hauv kev xaus, kuv xav qhia koj ib qho ntxiv rau lub siab. Kuv mam li tsim lwm qhov kev pom. Tab sis kuv yuav koom nrog lub rooj pg_locks nrog lub rooj pg_stat_activity. Thiab vim li cas kuv thiaj xav ua qhov no? Vim qhov no yuav tso cai rau kuv saib thiab pom tag nrho cov kev sib tham tam sim no thiab pom raws nraim li cas cov xauv lawv tau tos. Thiab qhov no yog qhov nthuav heev thaum peb muab tso ua ke lub rooj xauv thiab cov lus nug.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab ntawm no peb tsim pg_stat_view.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab peb hloov kho kab los ntawm ib qho. Thiab ntawm no peb pom 724. Thiab tom qab ntawd peb hloov peb kab mus rau peb. Thiab tam sim no koj pom dab tsi ntawm no? Cov no yog kev thov, piv txwv li koj pom tag nrho cov npe thov uas tau teev nyob rau hauv kab laug sab. Thiab tom qab ntawd ntawm sab xis koj tuaj yeem pom cov blockages thiab lawv tsim dab tsi. Thiab nws tuaj yeem ua kom pom tseeb dua rau koj kom koj tsis tas yuav rov qab mus rau txhua qhov kev sib tham txhua zaus thiab saib seb koj puas xav koom nrog nws lossis tsis. Lawv ua rau peb.

Lwm feature uas yog heev pab tau pg_blocking_pids. Tej zaum koj twb tsis tau hnov ​​txog nws. Nws ua dab tsi? Nws tso cai rau peb qhia tias rau qhov kev sib tham no 11740 dab tsi tshwj xeeb txheej txheem IDs nws tseem tos. Thiab koj tuaj yeem pom tias 11740 tos 724. Thiab 724 yog nyob rau saum toj kawg nkaus. Thiab 11306 yog koj tus txheej txheem ID. Qhov tseem ceeb, qhov haujlwm no dhau los ntawm koj lub rooj xauv. Thiab kuv paub tias nws nyuaj me ntsis, tab sis koj tswj kom nkag siab nws. Qhov tseem ceeb no muaj nuj nqi dhau los ntawm lub rooj xauv no thiab sim nrhiav qhov twg tus txheej txheem ID no tau muab cov xauv nws tos. Thiab nws kuj sim xyuas seb tus txheej txheem twg ID txheej txheem uas tos rau lub xauv muaj. Yog li koj tuaj yeem khiav qhov haujlwm no pg_blocking_pids.

Thiab qhov no tuaj yeem muaj txiaj ntsig zoo. Peb tsuas yog ntxiv qhov no hauv version 9.6, yog li qhov no tsuas yog 5 xyoos xwb, tab sis nws yog qhov tseem ceeb heev. Thiab tib yam siv rau qhov kev thov thib ob. Nws qhia raws nraim qhov peb yuav tsum pom.

Xauv Postgres Lock Manager. Bruce Momjian

Nov yog qhov kuv xav nrog koj tham. Thiab raws li kuv xav, peb tau siv tag nrho peb lub sijhawm vim tias muaj ntau qhov swb. Thiab cov slides muaj nyob rau download. Kuv thov ua tsaug uas koj tau nyob ntawm no. Kuv paub tseeb tias koj yuav txaus siab rau qhov so ntawm lub rooj sib tham, ua tsaug ntau!

Cov nqe lus nug:

Piv txwv li, yog tias kuv tab tom sim hloov cov kab, thiab qhov kev sib kho thib ob tab tom sim tshem tag nrho cov lus. Raws li kuv nkag siab, yuav tsum muaj qee yam zoo li lub hom phiaj xauv. Puas muaj tej yam zoo li no hauv Postgres?

Xauv Postgres Lock Manager. Bruce Momjian

Cia peb rov qab mus rau qhov pib. Tej zaum koj yuav nco ntsoov tias thaum koj ua dab tsi, piv txwv li thaum koj ua SELECT, peb muab AccessShareLock. Thiab qhov no tiv thaiv lub rooj los ntawm kev poob. Yog li yog tias koj, piv txwv li, xav hloov kho kab hauv ib lub rooj lossis rho tawm ib kab, ces ib tus neeg tsis tuaj yeem rho tawm tag nrho cov lus tib lub sijhawm vim tias koj tuav qhov AccessShareLock no hla tag nrho cov lus thiab dhau kab. Thiab thaum koj ua tiav, lawv tuaj yeem rho tawm nws. Tab sis thaum koj ncaj qha hloov ib yam dab tsi nyob ntawd, lawv yuav ua tsis tau.

Wb rov ua dua. Cia peb txav mus rau qhov piv txwv rho tawm. Thiab koj pom yuav ua li cas muaj ib qho tshwj xeeb xauv ntawm kab saum toj no tag nrho cov lus.

Qhov no yuav zoo li xauv tshwj xeeb, txoj cai?

Yog, nws zoo li nws. Kuv nkag siab qhov koj hais txog. Koj tab tom hais tias yog kuv ua SELECT ces kuv muaj ShareExclusive thiab ces kuv ua Row Exclusive, puas yog qhov teeb meem? Tab sis kuj ceeb tias qhov no tsis tsim teeb meem. Qhov no zoo li nce qib ntsuas phoo, tab sis qhov tseem ceeb kuv muaj lub xauv uas tiv thaiv kev tshem tawm. Thiab tam sim no, thaum kuv ua kom lub xauv no muaj zog dua, nws tseem tiv thaiv kev tshem tawm. Yog li nws tsis zoo li kuv tabtom nce. Ntawd yog, nws tiv thaiv nws los ntawm qhov tshwm sim thaum nws nyob rau theem qis ib yam nkaus, yog li thaum kuv nce qib nws tseem tiv thaiv lub rooj los ntawm kev tshem tawm.

Kuv nkag siab qhov koj hais txog. Tsis muaj qhov ntsuas qhov ntsuas qhov ntsuas qhov ntsuas ntawm no, qhov twg koj tab tom sim tso ib lub xauv los qhia qhov muaj zog dua. Ntawm no nws tsuas yog nce qhov kev tiv thaiv thoob plaws hauv pawg thawj coj, yog li nws tsis ua rau muaj kev tsis sib haum xeeb. Tab sis nws yog ib lo lus nug zoo. Ua tsaug ntau uas koj tau nug qhov no!

Peb yuav tsum ua li cas thiaj li zam dhau qhov xwm txheej tsis sib haum xeeb thaum peb muaj ntau ntu, cov neeg siv ntau?

Postgres cia li ceeb toom cov xwm txheej tsis raug. Thiab nws yuav cia li rho tawm ib qho ntawm cov ntu. Tib txoj kev kom tsis txhob tuag thaiv yog thaiv tib neeg hauv tib txoj kev. Yog li thaum koj saib koj daim ntawv thov, feem ntau yog vim li cas rau deadlocks... Cia peb xav txog tias kuv xav thaiv ob yam sib txawv. Ib daim ntawv thov xauv lub rooj 1, thiab lwm daim ntawv thov xauv 2, thiab tom qab ntawd lub rooj 1. Thiab qhov yooj yim tshaj plaws kom tsis txhob muaj kev tuag yog saib koj daim ntawv thov thiab sim ua kom paub tseeb tias qhov ntsuas phoo tshwm sim hauv tib qho kev txiav txim hla txhua daim ntawv thov. Thiab qhov no feem ntau tshem tawm 80% ntawm cov teeb meem, vim tias txhua hom neeg sau cov ntawv thov no. Thiab yog tias koj thaiv lawv hauv tib qhov kev txiav txim, ces koj yuav tsis ntsib qhov teeb meem deadlock.

Ua tsaug ntau rau koj qhov kev ua tau zoo! Koj tau tham txog lub tshuab nqus tsev tag nrho thiab, yog tias kuv nkag siab raug, lub tshuab nqus tsev tag nrho distors qhov kev txiav txim ntawm cov ntaub ntawv cais, yog li lawv khaws cov ntaub ntawv tam sim no tsis hloov. Vim li cas lub tshuab nqus tsev tag nrho thiaj li siv lub xauv nkag tshwj xeeb thiab vim li cas nws thiaj li cuam tshuam nrog kev sau ntawv?

Qhov ntawd yog ib lo lus nug zoo. Yog vim li cas yog lub tshuab nqus tsev puv puv lub rooj. Thiab peb yeej tseem ceeb tsim ib tug tshiab version ntawm lub rooj. Thiab lub rooj yuav tshiab. Nws hloov tawm qhov no yuav yog ib tug kiag li tshiab version ntawm lub rooj. Thiab qhov teeb meem yog thaum peb ua li no, peb tsis xav kom neeg nyeem nws vim peb xav kom lawv pom lub rooj tshiab. Thiab yog li qhov no txuas mus rau lo lus nug dhau los. Yog tias peb nyeem tau tib lub sijhawm, peb yuav tsis tuaj yeem txav nws thiab coj tib neeg mus rau lub rooj tshiab. Peb yuav tsum tau tos kom txhua tus nyeem cov lus no kom tiav, thiab yog li nws yog qhov tseem ceeb ntawm qhov xwm txheej tshwj xeeb.
Peb tsuas yog hais tias peb kaw txij thaum pib vim peb paub tias thaum kawg peb yuav xav tau lub xauv tshwj xeeb txhawm rau txav txhua tus mus rau daim ntawv tshiab. Yog li peb tuaj yeem daws qhov teeb meem no. Thiab peb ua nws li no nrog ib txhij indexing. Tab sis qhov no yog qhov nyuaj dua ua. Thiab qhov no muaj feem cuam tshuam rau koj cov lus nug dhau los txog kev xauv tshwj xeeb.

Puas muaj peev xwm ntxiv lub sijhawm kaw rau Postgres? Hauv Oracle, kuv tuaj yeem, piv txwv li, sau "xaiv hloov tshiab" thiab tos 50 vib nas this ua ntej hloov kho. Nws yog qhov zoo rau daim ntawv thov. Tab sis hauv Postgres, kuv yuav tsum ua tam sim ntawd thiab tsis txhob tos tag nrho, lossis tos kom txog thaum qee lub sijhawm.

Yog, koj tuaj yeem xaiv lub sijhawm ntawm koj lub xauv, ntawm koj lub xauv. Koj tseem tuaj yeem muab qhov tsis muaj kev hais kom ua, uas yuav ... yog tias koj tsis tuaj yeem tau txais lub xauv tam sim ntawd. Yog li ntawd, txawm tias lub sijhawm kaw lossis lwm yam uas yuav tso cai rau koj ua qhov no. Qhov no tsis ua tiav ntawm qib syntactic. Qhov no yog ua raws li qhov sib txawv ntawm lub server. Qee zaum qhov no siv tsis tau.

Koj puas tuaj yeem qhib swb 75?

Muaj.

Xauv Postgres Lock Manager. Bruce Momjian

Thiab kuv cov lus nug yog cov hauv qab no. Vim li cas ob qho kev hloov kho tshiab xav tau 703?

Thiab qhov no yog ib lo lus nug zoo. Kuv tsis nkag siab, los ntawm txoj kev, vim li cas Postgres ua qhov no. Tab sis thaum 703 tau tsim, nws tau xav txog 702. Thiab thaum 704 thiab 705 tshwm sim, zoo li lawv tsis paub qhov lawv xav tau vim tsis muaj dab tsi nyob ntawd. Thiab Postgres ua li no: thaum koj tsis tuaj yeem tau txais lub xauv, nws sau "Dab tsi yog qhov tseem ceeb hauv kev ua koj?", vim tias koj twb tos ib tug neeg lawm. Yog li peb cia li cia nws dai saum huab cua, nws yuav tsis hloov nws txhua. Tab sis dab tsi tshwm sim ntawm no? Thaum 702 ua tiav cov txheej txheem thiab 703 tau txais nws lub xauv, lub kaw lus rov qab los. Thiab nws hais tias tam sim no peb muaj ob tug neeg uas tos. Thiab ces cia peb hloov kho lawv ua ke. Thiab cia peb qhia tias ob qho tib si xav tau.

Kuv tsis paub vim li cas Postgres ua qhov no. Tab sis muaj ib qho teeb meem hu ua f…. Nws zoo nkaus li kuv tias qhov no tsis yog ib lo lus hauv Lavxias. Qhov no yog thaum sawv daws tab tom tos ib lub tsev fuabtais, txawm tias muaj 20 tus tub ceev xwm tos lub tsev fuabtais. Thiab tam sim ntawd lawv sawv daws sawv tib lub sij hawm. Thiab txhua leej txhua tus pib sim teb. Tab sis qhov system ua kom txhua leej txhua tus tos rau 703. Vim lawv tos, thiab peb yuav tam sim kab lawv tag nrho. Thiab yog tias muaj lwm qhov kev thov tshiab tshwm sim uas tau tsim tom qab qhov no, piv txwv li, 707, tom qab ntawd yuav muaj qhov khoob dua.

Thiab nws zoo li kuv tias qhov no ua tiav kom peb tuaj yeem hais tias nyob rau theem no 702 tos 703, thiab txhua tus uas tuaj tom qab ntawd yuav tsis muaj kev nkag mus rau hauv daim teb no. Tab sis sai li sai tau thaum thawj tus neeg ua haujlwm tawm mus, txhua tus neeg uas tau tos lub sijhawm ntawd ua ntej qhov hloov tshiab tau txais tib lub token. Thiab yog li kuv xav tias qhov no ua tiav kom peb tuaj yeem ua raws li kev txiav txim kom lawv raug txiav txim kom raug.

Kuv ib txwm saib qhov no ua ib qho tshwm sim txawv txawv. Vim hais tias ntawm no, piv txwv li, peb tsis sau lawv txhua. Tab sis zoo li kuv hais tias txhua zaus peb muab lub xauv tshiab, peb saib tag nrho cov uas tab tom tos. Tom qab ntawd peb kab lawv tag nrho. Thiab tom qab ntawd ib qho tshiab uas tuaj rau hauv tsuas yog nkag mus rau hauv kab thaum tus neeg tom ntej tau ua tiav tiav. Lo lus nug zoo heev. Ua tsaug ntau rau koj cov lus nug!

Nws zoo nkaus li kuv tias nws muaj ntau qhov laj thawj thaum 705 cia siab tias 704.

Tab sis qhov teeb meem ntawm no yog cov hauv qab no. Technically, koj tuaj yeem sawv ib leeg lossis lwm tus. Thiab yog li ntawd peb yuav tsa ib tug los yog lwm yam. Tab sis dab tsi tshwm sim hauv qhov system? Koj tuaj yeem pom tias 703 nyob rau sab saum toj tau thaiv nws tus kheej li cas ID. Qhov no yog li cas Postgres ua haujlwm. Thiab 703 raug thaiv los ntawm nws tus kheej kev lag luam ID, yog li yog tias ib tus neeg xav tos, ces lawv yuav tos 703. Thiab, qhov tseeb, 703 ua tiav. Thiab tsuas yog tom qab nws ua tiav ua ib qho ntawm cov txheej txheem tsim. Thiab peb tsis paub tias qhov txheej txheem no yuav ua li cas. Tom qab ntawd peb ua txhua yam maj mam. Tab sis nws tsis paub meej tias cov txheej txheem twg yog tsim los ua ntej, vim tias nws tuaj yeem yog ib qho ntawm cov txheej txheem no. Qhov tseem ceeb, peb muaj lub sijhawm teem sijhawm uas tau hais tias tam sim no peb tuaj yeem tsa ib qho ntawm cov txheej txheem no. Peb tsuas xaiv ib qho ntawm random. Yog li ntawd, ob qho tib si yuav tsum tau sau tseg vim tias peb tuaj yeem tsim lawv ob leeg.

Thiab qhov teeb meem yog tias peb muaj CP-infinity. Thiab yog li ntawd, nws yog qhov zoo uas peb tuaj yeem sawv tom qab. Thiab yog tias, piv txwv li, peb tsa tus tom qab, peb yuav tos tus uas nyuam qhuav tau txais qhov thaiv, yog li peb tsis txiav txim siab leej twg yuav raug tsa ua ntej. Peb tsuas yog tsim cov xwm txheej zoo li no, thiab lub kaw lus yuav tsa lawv nyob rau hauv qhov kev txiav txim tsis sib xws.

muaj Cov lus hais txog kev xauv los ntawm Egor Rogov. Saib, lawv kuj nthuav thiab pab tau. Lub ntsiab lus, tau kawg, yog qhov nyuaj heev. Ua tsaug ntau, Bruce!

Tau qhov twg los: www.hab.com

Ntxiv ib saib