Кіріспе

Ресурстарға қол жеткізу шектеулерін сақтау үшін синхрондау механизмі. Компьютер ғылымында құлып немесе мьютекс (өзара өшірілімнен) – бірнеше орындалу тізбегінің бір уақытта күйді өзгертуіне немесе оған қол жеткізуіне жол бермейтін синхрондау примитиві. Құлыптар өзара өшірілімді қоса басқару саясатын қамтамасыз етеді, және әртүрлі әдістермен әртүрлі қолданбалар үшін көптеген бірегей іске асырулар бар.

Деректер қорының бұғаттауы

Деректер қорының құлыптауы транзакциялардың синхрондылығын қамтамасыз ету құралы ретінде қолданылуы мүмкін. Яғни, транзакцияларды бір мезгілде (бір-бірімен араластырып) өңдеген кезде, екі кезеңді құлыптауды пайдалану транзакцияның бір мезгілде орындалуын транзакциялардың тізбектелген ретіне тең қылуға кепілдік береді. Алайда, деректер қорында құлыптаудың қолайсыз салдары – тұйықталулар пайда болуы мүмкін. Тұйықталулардың алдын алу үшін транзакциялар арасындағы құлыптау реті алдын ала анықталады немесе күту графиктері арқылы анықталады. Деректер қорының синхрондылығы үшін құлыптаудың баламасы – тұйықталудан аулақ бола отырып, толығымен реттелген жаһандық уақыт белгілерін пайдалану. Бірнеше пайдаланушының деректер қорындағы әрекеттерін басқару үшін механизмдер қолданылады – мақсаты жоғалған жаңартулар мен «кір» оқуларды болдырмау. Құлыптаудың екі түрі бар: пессимистік және оптимистік құлыптау: Пессимистік құлыптау: жазбаны жаңарту ниетімен оқитын пайдаланушы, басқа пайдаланушылардың оны өңдеуіне жол бермеу үшін жазбаға эксклюзивті құлып қояды. Бұл дегеніміз, пайдаланушы құлыпты босатқанша, басқа ешкім бұл жазбамен жұмыс істей алмайды. Кері жағы – пайдаланушылар ұзақ уақытқа құлыпталып қалуы мүмкін, бұл жүйенің жалпы жауап беру жылдамдығын баяулатып, наразылыққа әкелуі мүмкін. Пессимистік құлыптауды қайда қолдану керек: бұл негізінен деректерге қатысты талас (бір уақытта деректер қоры жүйесіне түсетін сұраныстардың саны) жоғары ортада қолданылады; сондай-ақ, бір мезгілделік қақтығыстар туған жағдайда транзакцияларды кері қайтару құны, деректерді құлыптау арқылы қорғау құнынан кем болғанда. Пессимистік қатарласуды енгізу уақыты қысқа болғанда, мысалы, жазбаларды бағдарламалық түрде өңдегенде, тиімдірек болады. Пессимистік қатарласу деректер қорына тұрақты қосылымды қажет етеді және пайдаланушылар деректермен өзара әрекеттескен кезде кеңейтімді шешім емес, себебі жазбалар салыстырмалы түрде ұзақ уақытқа құлыпталып қалуы мүмкін. Бұл веб-қосымшаларды әзірлеуде қолдануға қолайлы емес. Оптимистік құлыптау: бұл бірнеше пайдаланушыға деректер қорына бір мезгілде кіруге мүмкіндік береді, ал жүйе әрбір пайдаланушының бастапқы оқыған көшірмесін сақтайды. Пайдаланушы жазбаны жаңартуды қалағанда, қосымша басқа пайдаланушының жазбаны соңғы рет оқығаннан бері өзгертіп-өзгерте қоймағанын анықтайды. Бұл үшін қосымша жадыда сақталған бастапқы оқылған деректі деректер қорының жазбасымен салыстырады, жазбаға енгізілген өзгерістерді тексеріп көреді. Бастапқы оқылған дерек пен деректер қорының жазбасы арасындағы кез келген айырмашылық қатарласу ережелерін бұзады және жүйе жаңарту сұранысын қабылдамайды. Қате туралы хабарлама шығарылады және пайдаланушыдан жаңарту процесін қайтадан бастау сұралады. Бұл қажетті құлыптау мөлшерін азайту арқылы деректер қорының өнімділігін жақсартады, соның салдарынан деректер қоры серверіндегі жүктемені азайтады. Бұл жазбалар құлыпталмайтындықтан, жаңартулар шектеулі кестелермен тиімді жұмыс істейді. Алайда, кейбір жаңартулар сәтсіз аяқталуы мүмкін. Кері жағы – көптеген пайдаланушылардан келіп түсетін жаңарту сұраныстарының көп болуына байланысты жаңартудың үнемі сәтсіз аяқталуы, бұл пайдаланушылар үшін көңіл көншітпейді. Оптимистік құлыптауды қайда қолдану керек: бұл деректерге талас аз немесе деректерге тек оқу үшін қол жеткізілетін орталарда қолайлы. Оптимистік қатарласу NET-те ұялы және ажыратылған қосымшалардың қажеттіліктерін қанағаттандыру үшін кеңінен қолданылады, онда деректер қатарын ұзақ уақытқа құлыптау мүмкін емес. Сонымен қатар, жазбаларды құлыптау үшін деректер қоры серверіне тұрақты қосылымды қажет етеді, бұл ажыратылған қосымшаларда мүмкін емес.

Мутекстер мен семафорлар

Семафор (бағдарламалау) # Семафорлар мен өзара құлыптасулар (мутекстер)