Бүтүмдөр жана аларды башкаруу механизмдери

бүтүмдөр

Транзакция – бул башталышы жана аягы бар маалыматтар боюнча операциялардын ырааттуулугу.

Транзакция – бул окуу жана жазуу операцияларынын ырааттуу аткарылышы. Транзакциянын аягы өзгөрүүлөрдү сактоо (милдеттүү) же өзгөртүүлөрдү жокко чыгаруу (кайра кайтаруу) болушу мүмкүн. Маалыматтар базасына карата транзакция бир суроо катары каралуучу бир нече суроо-талаптардан турат.

Транзакциялар ACID касиеттерин канааттандырышы керек

Атомдук. Транзакция же толугу менен аяктады же такыр жок.

ырааттуулук. Транзакцияны аяктоодо маалыматтарга коюлган чектөөлөр (мисалы, маалымат базасындагы чектөөлөр) бузулбашы керек. Ырааттуулук системанын бир туура абалдан экинчи туура абалга өтүшүн билдирет.

Изоляция. Параллелдүү болгон транзакциялар бири-бирине таасир этпеши керек, мисалы, башка транзакция тарабынан колдонулган маалыматтарды өзгөртүү. Параллелдүү операцияларды жүргүзүүнүн натыйжасы операциялар ырааттуу түрдө аткарылгандай болушу керек.

Туруктуулук. Бир жолу жасалган өзгөртүүлөр жоголбошу керек.

Транзакция журналы

Журнал транзакциялар аркылуу жасалган өзгөртүүлөрдү сактайт, система бузулган учурда маалыматтардын атомдуулугун жана туруктуулугун камсыздайт

Журналда транзакция менен өзгөртүлгөнгө чейин жана андан кийинки маалыматтар болгон баалуулуктар камтылган. Алдын ала жазуу журналынын стратегиясы башталганга чейин мурунку баалуулуктар жана транзакция аяктагандан кийин акыркы баалуулуктар жөнүндө журнал жазуусун кошууну талап кылат. Система капыстан токтоп калган учурда, маалымат базасы журналды тескери тартипте окуйт жана транзакциялар менен киргизилген өзгөртүүлөрдү жокко чыгарат. Үзгүлтүккө учураган транзакцияга туш болгондон кийин, маалымат базасы аны ишке ашырат жана ал жөнүндө журналга өзгөртүүлөрдү киргизет. Ката болгон учурда абалда болгондуктан, маалымат базасы журналды алдыга карай окуйт жана транзакциялар менен киргизилген өзгөртүүлөрдү кайтарып берет. Ошентип, буга чейин жасалган бүтүмдөрдүн туруктуулугу жана үзгүлтүккө учураган транзакциянын атомдуулугу сакталат.

Жөн гана ишке ашпай калган транзакцияларды калыбына келтирүү үчүн жетиштүү эмес.

Мисал. Колдонуучунун эсебинде $500 бар жана колдонуучу аны банкоматтан алууну чечет. Эки транзакция жүрүп жатат. Биринчиси баланстын маанисин окуйт жана баланста жетиштүү каражат болсо, колдонуучуга акча берет. Экинчиси баланстан керектүү сумманы алып салат. Система бузулуп, биринчи операция ишке ашпай калды дейли, бирок экинчиси иштебей калды. Бул учурда системаны оң баланс менен баштапкы абалына кайтарбай туруп, колдонуучуга акчаны кайра бере албайбыз.

Изоляция деңгээли

Окуу Милдеттенди

Dirty Read көйгөйү транзакция башка транзакциянын аралык натыйжасын окуй алат.

Мисал. Баштапкы баланстын мааниси $0. T1 балансыңызга $50 кошот. T2 баланстын маанисин окуйт ($50). T1 өзгөртүүлөрдү жокко чыгарат жана чыгат. T2 туура эмес баланс маалыматтары менен аткарууну улантууда.

Чечим транзакция менен өзгөртүлгөн маалыматтарды окууга тыюу салган белгиленген маалыматтарды окуу (Окуу Committed). Эгерде А транзакциясы маалыматтардын белгилүү бир топтомун өзгөртсө, анда Б транзакциясы бул маалыматтарга жетүү учурунда А транзакциясынын аягына чыгышын күтүүгө аргасыз болот.

Кайталануучу окуу

Жоголгон Жаңыртуулар көйгөйү. T1 T2 өзгөртүүлөрүнүн үстүнө өзгөртүүлөрдү сактайт.

Мисал. Баштапкы баланстын мааниси $0 жана бир эле учурда эки транзакция балансты толуктайт. T1 жана T2 $ 0 балансын окушат. T2 андан кийин $200 үчүн $0 кошуп, натыйжаны сактап калат. T1 $100 үчүн $0 кошот жана натыйжаны сактайт. Акыркы жыйынтык 100 доллардын ордуна 300 долларды түзөт.

Кайталангыс окуу көйгөйү. Бир эле маалыматтарды кайра-кайра окуу ар кандай маанилерди берет.

Мисал. T1 $0 балансынын маанисин окуйт. T2 андан кийин баланска 50 $ кошот жана бүтөт. T1 маалыматтарды кайрадан окуйт жана мурунку жыйынтык менен дал келбестигин табат.

Кайталануучу окуу экинчи окуу ошол эле натыйжаны кайтарарын камсыздайт. Бир транзакция тарабынан окулган маалыматтарды транзакция аяктаганга чейин башкаларында өзгөртүү мүмкүн эмес. Эгерде А транзакциясы маалыматтардын белгилүү бир топтомун окуган болсо, анда Б транзакциясы бул маалыматтарга жетүү учурунда А транзакциясынын аягына чыгышын күтүүгө аргасыз болот.

Тартиптүү окуу (сериялаштырылуучу)

Phantom Reads көйгөйү. Белгилүү бир шарттын негизинде маалыматтарды тандаган эки суроо ар кандай маанилерди кайтарат.

Мисал. T1 балансы 0 доллардан жогору, бирок 100 доллардан аз бардык колдонуучулардын санын сурайт. T2 $1 балансы бар колдонуучудан $101 чыгарып салат. T1 өтүнүчтү кайра чыгарат.

Тартиптүү окуу (сериялаштырылуучу). Бүтүмдөр толугу менен ырааттуу түрдө аткарылат. Сурамдын шарттарына туура келген жазууларды жаңыртууга же кошууга тыюу салынат. Эгерде А транзакциясы бүт таблицадан маалыматтарды сураган болсо, анда А транзакциясы аяктаганга чейин бүт таблица башка транзакциялар үчүн тоңдурулат.

Пландаштыруучу

Параллель транзакциялар учурунда кандай операциялар аткарылышы керек экенин белгилейт.

Белгиленген деңгээлдеги изоляцияны камсыз кылат. Эгерде операциялардын натыйжасы алардын тартибине көз каранды болбосо, анда мындай операциялар коммутативдик (пермутациялык) болуп саналат. Окуу операциялары жана ар кандай маалыматтар боюнча операциялар коммутативдик. Окуу-жазуу жана жазуу-жазуу операциялары коммутативдик эмес. Пландаштыруучунун милдети - параллелдүү транзакциялар менен аткарылган операцияларды аткаруунун натыйжасы транзакциялардын ырааттуу аткарылышына барабар болушу үчүн.

Параллелдүү жумуштарды көзөмөлдөө механизмдери (Concurrency Control)

Оптимисттик конфликттерди табууга жана чечүүгө негизделген, пессимисттик конфликттердин келип чыгышын алдын алууга негизделген.

Оптимисттик ыкмада бир нече колдонуучулардын колунда маалыматтардын көчүрмөлөрү бар. Түзөтүүнү аяктаган биринчи адам өзгөртүүлөрдү сактайт, ал эми башкалар өзгөртүүлөрдү бириктириши керек. Оптимисттик алгоритм чыр-чатактын пайда болушуна жол берет, бирок система чыр-чатакты калыбына келтириши керек.

Пессимисттик мамиле менен, маалыматты биринчи алган колдонуучу башкалардын маалыматтарды алуусуна жол бербейт. Эгерде чыр-чатактар ​​сейрек болсо, оптимисттик стратегияны тандоо акылдуулукка жатат, анткени ал параллелдүүлүктүн жогорку деңгээлин камсыз кылат.

Кулпулоо

Эгерде бир транзакцияда кулпуланган маалыматтар болсо, анда башка транзакциялар маалыматтарга жетүү учурунда кулпусу ачылганга чейин күтүшү керек.

Блок маалымат базасына, таблицага, сапка же атрибутка капталышы мүмкүн. Shared Lock бир эле маалыматтарга бир нече транзакциялар аркылуу жүктөлүшү мүмкүн, бардык транзакцияларды (анын ичинде аны киргизгенди) окууга мүмкүндүк берет, өзгөртүүгө жана эксклюзивдүү басып алууга тыюу салат. Exclusive Lock бир гана транзакция менен коюлушу мүмкүн, таңуулоочу транзакциянын бардык аракеттерине уруксат берет, башкалардын кандайдыр бир аракеттерине тыюу салат.

Туюктук – транзакциялар күтүлбөгөн абалга келип, чексиз убакытка созулган кырдаал.

Мисал. Биринчи транзакция экинчиси басып алган маалыматтардын чыгышын күтсө, экинчиси биринчиси басып алган маалыматтардын чыгышын күтөт.

Туюк көйгөйдүн оптимисттик чечими туюктун пайда болушуна мүмкүндүк берет, бирок андан кийин туюкта тартылган транзакциялардын бирин артка жылдырып, системаны калыбына келтирет.

Туюктар белгилүү бир аралыкта изделет. Аныктоо ыкмаларынын бири - убакыт боюнча, башкача айтканда, транзакция өтө көп убакытты талап кылса, туюк пайда болду деп эсептеңиз. Туюк табылганда, транзакциялардын бири артка жылдырылып, туюкка катышкан башка транзакциялардын аягына чыгышына мүмкүндүк берет. Жабырлануучуну тандоо транзакциялардын наркына же алардын стажына негизделиши мүмкүн (Wait-Die жана Wound-Wit схемасы).

Ар бир транзакция T убакыт белгиси дайындалган TS транзакциянын башталышын камтыган.

Күтө тур.

эгер TS(Ti) < TS(Tj)ошондо Ti күтөт, болбосо Ti артка жылдырып, ошол эле убакыт белгиси менен кайра башталат.

Эгерде жаш транзакция ресурска ээ болсо жана эски транзакция ошол эле ресурсту сураса, анда эски транзакцияга күтүүгө уруксат берилет. Эгер эски транзакция ресурска ээ болсо, анда ал ресурсту талап кылган жаш транзакция артка кайтарылат.

Жараат күт.

эгер TS(Ti) < TS(Tj)ошондо Tj артка жылдырып, ошол эле убакыт белгиси менен кайра башталат, антпесе Ti күтүүдө.

Эгер жашыраак транзакция ресурска ээ болсо жана эски транзакция ошол эле ресурсту сураса, анда жаш транзакция артка кайтарылат. Эгер эски транзакция ресурсту алган болсо, анда ал ресурсту талап кылган жаш транзакцияга күтүүгө уруксат берилет. Артыкчылыкка негизделген жабырлануучуну тандоо туюктардын алдын алат, бирок туюк эмес транзакцияларды артка кайтарат. Көйгөй, транзакциялар көп жолу артка кайтарылышы мүмкүн, анткени... эски транзакция бул ресурсту узак убакытка кармап турушу мүмкүн.

Туюк проблеманын пессимисттик чечими туюк калуу коркунучу бар болсо, транзакцияны ишке ашырууга жол бербейт.

Туюкту аныктоо үчүн график түзүлөт (күтүү графиги, күтүү графиги), анын чокулары транзакциялар, ал эми четтери бул маалыматтарды басып алган транзакцияга маалыматтардын чыгышын күткөн транзакциялардан багытталган. Эгерде графикте цикл бар болсо, туюктук пайда болду деп эсептелет. Күтүү графигин түзүү, өзгөчө бөлүштүрүлгөн маалымат базаларында, кымбат процедура.

Эки фазалуу кулпулоо - транзакциянын башында транзакция тарабынан колдонулган бардык ресурстарды тартып алуу жана аягында аларды бошотуу аркылуу туюктардын алдын алат

Бардык бөгөттөө операциялары биринчи кулпуну ачуудан мурун болушу керек. Анын эки фазасы бар - Өсүү фазасы, анын жүрүшүндө кармагычтар чогулат жана кармагычтар бошотулат. Эгер ресурстардын бирин басып алуу мүмкүн болбосо, транзакция кайра башталат. Транзакция талап кылынган ресурстарды ала албай калышы мүмкүн, мисалы, бир эле ресурстар үчүн бир нече транзакциялар атаандашса.

Эки фазалуу милдеттенме бардык маалыматтар базасынын репликаларында аткарылышын камсыздайт

Ар бир маалымат базасы журналга өзгөртүлө турган маалыматтар жөнүндө маалыматты киргизет жана координаторго OK (добуш берүү фазасы) жооп берет. Баары "ОК" деп жооп бергенден кийин, координатор бардыгын аткарууга милдеттендирген сигнал жөнөтөт. Жасалгандан кийин серверлер OK деп жооп беришет, эгерде жок дегенде бирөө ОК деп жооп бербесе, анда координатор бардык серверлерге өзгөртүүлөрдү жокко чыгаруу үчүн сигнал жөнөтөт (Аяктуу фаза).

Убакыт белгиси ыкмасы

Жаш транзакциянын маалыматтарына кирүү аракети болгондо, эски транзакция артка кайтарылат

Ар бир транзакцияга убакыт белгиси ыйгарылган TS аткаруунун башталыш убактысына туура келет. Эгерде Ti улуу Tjошондо TS(Ti) < TS(Tj).

Транзакция артка кайтарылганда, ага жаңы убакыт белгиси ыйгарылат. Ар бир маалымат объекти Q бүтүмгө катышкан эки энбелгиси менен белгиленген. W-TS(Q) — рекордду ийгиликтүү аяктаган эң жаш транзакциянын убакыт белгиси Q. R-TS(Q) — окуу жазуусун аткарган эң жаш транзакциянын убакыт белгиси Q.

транзакция болгондо T маалыматтарды окуу өтүнүчү Q Эки вариант бар.

эгер TS(T) < W-TS(Q), башкача айтканда, маалыматтар жаш транзакция, андан кийин бүтүм менен жаңыртылган T артка жылат.

эгер TS(T) >= W-TS(Q), анда окуу аткарылат жана R-TS(Q) Ал баратат МАКС(R-TS(Q), TS(T)).

транзакция болгондо T маалыматтарды өзгөртүүнү талап кылат Q Эки вариант бар.

эгер TS(T) < R-TS(Q), башкача айтканда, маалыматтар кичирээк бүтүм тарабынан мурдатан окулган жана өзгөртүү киргизилсе, конфликт пайда болот. Транзакция T артка жылат.

эгер TS(T) < W-TS(Q), башкача айтканда, транзакция жаңыраак маанини кайра жазууга аракет кылат, транзакция T артка жылдырылат. Башка учурларда, өзгөртүү жүзөгө ашырылат жана W-TS(Q) барабар болуп калат TS(T).

Эч кандай кымбат күтүү график куруу талап кылынбайт. Эски транзакциялар жаңыларына жараша болот, ошондуктан күтүү графигинде циклдер жок. Эч кандай туюктар жок, анткени транзакциялар күтүлбөйт, бирок дароо артка кайтарылат. Каскаддуу артка кайтаруу мүмкүн. Эгерде Ti тоголонуп кетти жана Tj Мен өзгөрткөн маалыматтарды окудум Tiошондо Tj да артка кайтуу керек. Эгерде ошол эле учурда Tj жасалган болсо, анда туруктуулук принцибинин бузулушу болот.

Каскаддуу артка кайтаруу үчүн чечимдердин бири. Транзакция аягында бардык жазуу операцияларын бүтүрөт жана башка транзакциялар ошол операциянын аягына чыгышын күтүшү керек. Окуганга чейин транзакциялар аткарылышын күтүшөт.

Томас жазуу эрежеси - убакыт белгисинин ыкмасынын вариациясы, мында жаш транзакция менен жаңыртылган маалыматтардын эскиси тарабынан кайра жазылышына тыюу салынат.

транзакция T маалыматтарды өзгөртүүнү талап кылат Q. эгер TS(T) < W-TS(Q), башкача айтканда, транзакция жаңыраак маанинин үстүнөн жазууга аракет кылат, транзакция T убакыт белгиси ыкмасындагыдай артка жылдырылбайт.

Source: www.habr.com

Комментарий кошуу