Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Салом ба ҳама. Владислав Родин дар тамос аст. Ҳоло ман роҳбари курси курси меъмории сарбории баланд дар OTUS ҳастам ва инчунин курсҳои меъмории нармафзорро таълим медиҳам.

Илова ба таълим, тавре ки шумо мушоҳида кардаед, ман барои блоги OTUS дар Ҳабре маводи аслӣ менависам ва ман мехоҳам бо мақолаи имрӯза мувофиқат кунам, то ба оғози курс мувофиқат кунад. "PostgreSQL", ки ҳоло барои бақайдгирӣ кушода аст.

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Муқаддима

В бори охир мо дар бораи он сӯҳбат кардем, ки транзаксияҳо дар пойгоҳи додаҳо барои ҳалли ду мушкилот хидмат мекунанд: таъмини таҳаммулпазирии хатогиҳо ва дастрасӣ ба маълумот дар муҳити рақобат. Барои пурра иҷро кардани ин вазифаҳо, транзаксия бояд хосиятҳои ACID дошта бошад. Имруз мо дар бораи мактуб муфассал сухан меронем I (изолятсия) дар ин ихтисорот.

Ихтилофот

Изолятсия мушкилоти дастрасии маълумотро дар муҳити рақобат ҳал мекунад, ки аслан муҳофизат аз шароити нажодро таъмин мекунад. Идеалӣ, ҷудокунӣ маънои сериализатсияро дорад, ки амволест, ки натиҷаи иҷрои мувозинатро кафолат медиҳад, ки гӯё онҳо пайдарпай иҷро шуда бошанд. Мушкилоти асосии ин моликият дар он аст, ки он аз ҷиҳати техникӣ хеле душвор аст ва дар натиҷа ба кори система таъсири назаррас мерасонад. Ин аст, ки чаро изолятсия аксар вақт заиф карда мешавад, ки хатари баъзе аномалияҳоро қабул мекунад, ки дар поён муҳокима хоҳанд шуд. Имконияти ба амал омадани аномалияҳои муайян сатҳи ҷудошавии транзаксияро дақиқ тавсиф мекунад.

Аномалияҳои маъмултарин инҳоянд: хондани ифлос, хондани такрорнашаванда, хондани фантом, аммо дар асл боз 5 вуҷуд доранд: навиштани ифлос, навсозии курсор гумшуда, навсозии гумшуда, каҷ хондан, каҷ навиштан.

Навиштани ифлос

Моҳияти аномалия дар он аст, ки транзаксияҳо метавонанд маълумоти номатлубро баргардонанд.

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Ин аномалия на танҳо аз он сабаб хатарнок аст, ки маълумот пас аз анҷом додани ҳарду транзаксия метавонад ихтилоф кунад (чун дар расм), балки инчунин аз он сабаб аст, ки атомӣ вайрон карда мешавад: азбаски мо иҷозат медиҳем, ки маълумоти беэътибор навишта шаванд, маълум нест, ки чӣ гуна як транзаксияро бе таъсир ба дигараш баргардонидан мумкин аст. .

Аномалияро метавон ба таври оддӣ ҳал кард: мо пеш аз оғози сабт ба сабт қулф мегузорем ва ба дигар транзаксияҳо тағир додани сабтро то кушода шудани қулф манъ мекунем.

Хониши ифлос

Хониши ифлос маънои хондани маълумоти номатлубро дорад.

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Вақте ки амалҳо ё қарорҳо бояд дар асоси намуна қабул карда шаванд, мушкилот ба миён меоянд.

Барои ислоҳ кардани аномалия, шумо метавонед қулфи хонишро замима кунед, аммо ин ба иҷроиш таъсири калон мерасонад. Гуфтан хеле осонтар аст, ки барои амалиёти бозгашт, ҳолати ибтидоии маълумот (пеш аз оғози сабт) бояд дар система захира карда шавад. Чаро аз он ҷо намехонед? Ин ба қадри кофӣ арзон аст, ки аксари пойгоҳи додаҳо хондани ифлосро бо нобаёнӣ тоза мекунанд.

Навсозии гумшуда

Навсозии гумшуда маънои навсозиҳои гумшударо дорад ва тарҷума моҳияти мушкилотро комилан дақиқ инъикос мекунад:

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Дар асл, натиҷаи муомилоти T2 баръакс шуд. Ин вазъиятро метавон тавассути қуфлҳои навиштани ошкор ё пинҳон ислоҳ кард. Яъне, мо ё танҳо сабтро навсозӣ мекунем ва он гоҳ қуфл ба амал меояд, ё мо иҷро мекунем барои навсозӣ интихоб кунед, боиси бастани хондан ва навиштан мегардад. Лутфан таваҷҷӯҳ намоед, ки чунин амалиёт хеле хатарнок аст: бо хондани "бегуноҳ" мо хондани дигарро манъ мекунем. Баъзе пойгоҳи додаҳо бехатартарро пешниҳод мекунанд барои мубодила интихоб кунед, имкон медиҳад, ки маълумот хонда шавад, аммо тағир дода нашавад.

Курсор навсозӣ гум шуд

Барои назорати дақиқтар, пойгоҳҳо метавонанд асбобҳои дигар, ба монанди курсорро пешниҳод кунанд. Курсор сохторест, ки маҷмӯи сатрҳоро дар бар мегирад ва ба шумо имкон медиҳад, ки дар болои онҳо такрор кунед. курсор_номро барои изҳороти интихоб эълон кунед. Мундариҷаи курсор тавассути интихоб тасвир карда мешавад.

Чаро ба шумо курсор лозим аст? Гап дар он аст, ки баъзе пойгоҳи додаҳо қулфро барои ҳамаи сабтҳои интихобшуда (суботи хониш) пешниҳод мекунанд ё танҳо дар сабте, ки курсор дар айни замон ҷойгир аст (суботи курсор). Бо устувории курсор, қулфи кӯтоҳ амалӣ карда мешавад, ки ба мо имкон медиҳад, ки шумораи қулфҳоро дар сурати такрор кардани намунаи зиёди маълумот кам кунем. Аз ин рӯ, аномалияи навсозии гумшуда барои курсор алоҳида ҷудо карда мешавад.

Хониши такрорнашаванда

Хониши такрорнашаванда ин аст, ки ҳангоми иҷрои амалиёти мо, 2 хондани пайдарпайи як сабт ба натиҷаҳои гуногун оварда мерасонад, зеро амалиёти дигар байни ин ду хондан дахолат кард, маълумоти моро тағир дод ва содир карда шуд.

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Чаро ин ҳатто мушкилот аст? Тасаввур кунед, ки ҳадафи муомилоти T2 дар расм интихоби ҳама молҳое мебошад, ки нархи онҳо аз 150 доллари ИМА камтар аст. Каси дигар нархро то 200 доллар нав кард. Ҳамин тариқ, филтри насбшуда кор накард.

Ин аномалияҳо ҳангоми илова кардани блокҳои дуфазавӣ ё ҳангоми истифодаи механизми MVCC, ки ман мехоҳам дар алоҳидагӣ муҳокима кунам, рух намедиҳад.

Фантом хонд

Phantom хондани маълумотест, ки тавассути транзаксияи дигар илова карда шудааст.

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Ба сифати мисол, мо метавонем интихоби нодурусти маҳсулоти арзонро ҳангоми рух додани ин аномалия мушоҳида кунем.

Аз хондани фантом халос шудан аллакай хеле мушкил аст. Бастани мунтазам кофӣ нест, зеро мо наметавонем чизеро, ки ҳанӯз вуҷуд надорад, манъ кунем. Системаҳои 2PL қулфи пешгӯиро истифода мебаранд, дар ҳоле ки системаҳои MVCC дорои нақшаи транзаксия мебошанд, ки транзаксияҳоро, ки метавонанд тавассути воридшавӣ халалдор шаванд, бозмегардонад. Ҳам механизмҳои якум ва ҳам дуюм хеле вазнинанд.

Хонда шуд

Каҷравии хондан ҳангоми кор кардан бо якчанд ҷадвалҳо ба амал меояд, ки мундариҷаи онҳо бояд пайваста тағйир ёбад.

Фарз мекунем, ки мо ҷадвалҳое дорем, ки паёмҳо ва маълумоти метаи онҳоро нишон медиҳанд:

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Як транзаксия аз ҷадвалҳо хонда мешавад, дигаре онҳоро тағир медиҳад:

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Дар натиҷаи транзаксияи T1, паём дорои унвони = Хуб ва updated_by = T2 мебошад, ки як навъ номувофиқӣ аст.

Дар асл, ин хониши такрорнашаванда аст, аммо ҳамчун як қисми якчанд ҷадвал.

Барои ислоҳ кардани ин, T1 метавонад дар ҳама сатрҳое, ки хонда мешавад қуфлҳо гузорад, ки транзаксияи T2 аз тағир додани маълумот пешгирӣ мекунад. Дар сурати MVCC, муомилоти T2 бекор карда мешавад. Муҳофизат аз ин аномалия метавонад муҳим бошад, агар мо курсорҳоро истифода барем.

Каҷро нависед

Ин аномалияро бо мисол шарҳ додан осонтар аст: фарз кунем, ки дар системаи мо ҳадди аққал як духтур бояд навбатдор бошад, аммо ҳарду табиб тасмим гирифтанд, ки вазифаи худро бекор кунанд:

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Аномалия маънои онро дошт, ки ҳеҷ яке аз табибон дар навбат намебошанд. Чаро ин тавр шуд? Зеро муомила шартеро месанҷад, ки метавонист бо муомилоти дигар вайрон шавад ва аз сабаби ҷудошавӣ мо ин тағиротро надидем.

Ин ҳамон хониши такрорнашаванда аст. Интихобан, интихобҳо метавонанд дар ин сабтҳо қулф гузоранд.

Навиштани каҷ ва хондани каҷ комбинатсияи аномалияҳои қаблӣ мебошанд. Шумо метавонед каҷравии навиштанро баррасӣ кунед, ки аслан хондани фантом аст. Ҷадвалеро дида бароед, ки дар он номи кормандон, маоши онҳо ва лоиҳае, ки онҳо дар он кор мекунанд, иборат аст:

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Паст кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо чӣ натиҷа дода метавонад?

Дар натиҷа мо чунин манзараро ба даст меорем: ҳар як менеҷер фикр мекард, ки тағйироти онҳо боиси боло рафтани буҷет нахоҳад шуд, бинобар ин онҳо тағйироти кадриро анҷом доданд, ки якҷоя боиси зиёд шудани хароҷот гардид.

Сабаби мушкилот маҳз ҳамон тавре ки дар хондани фантом аст.

натиҷаҳои

Ором кардани сатҳи ҷудокунии транзаксия дар пойгоҳи додаҳо як муомилоти байни амният ва иҷроиш аст; интихоби ин сатҳ бояд дар асоси хатарҳои эҳтимолӣ ба тиҷорат дар сурати рух додани аномалияҳои муайян баррасӣ карда шавад.

Дар бораи курс маълумоти бештар гиред.

Манбаъ: will.com

Илова Эзоҳ