Кіріспе
Ресурстарға қол жеткізу шектеулерін сақтау үшін синхрондау механизмі. Компьютер ғылымында құлып немесе мьютекс (өзара өшірілімнен) – бірнеше орындалу тізбегінің бір уақытта күйді өзгертуіне немесе оған қол жеткізуіне жол бермейтін синхрондау примитиві. Құлыптар өзара өшірілімді қоса басқару саясатын қамтамасыз етеді, және әртүрлі әдістермен әртүрлі қолданбалар үшін көптеген бірегей іске асырулар бар.
In computer science, a lock or mutex (from mutual exclusion) is a synchronization primitive that prevents state from being modified or accessed by multiple threads of execution at once. Locks enforce mutual exclusion concurrency control policies, and with a variety of possible methods there exist multiple unique implementations for different applications.
Деректер қорының бұғаттауы
Деректер қорының құлыптауы транзакциялардың синхрондылығын қамтамасыз ету құралы ретінде қолданылуы мүмкін. Яғни, транзакцияларды бір мезгілде (бір-бірімен араластырып) өңдеген кезде, екі кезеңді құлыптауды пайдалану транзакцияның бір мезгілде орындалуын транзакциялардың тізбектелген ретіне тең қылуға кепілдік береді. Алайда, деректер қорында құлыптаудың қолайсыз салдары – тұйықталулар пайда болуы мүмкін. Тұйықталулардың алдын алу үшін транзакциялар арасындағы құлыптау реті алдын ала анықталады немесе күту графиктері арқылы анықталады. Деректер қорының синхрондылығы үшін құлыптаудың баламасы – тұйықталудан аулақ бола отырып, толығымен реттелген жаһандық уақыт белгілерін пайдалану. Бірнеше пайдаланушының деректер қорындағы әрекеттерін басқару үшін механизмдер қолданылады – мақсаты жоғалған жаңартулар мен «кір» оқуларды болдырмау. Құлыптаудың екі түрі бар: пессимистік және оптимистік құлыптау: Пессимистік құлыптау: жазбаны жаңарту ниетімен оқитын пайдаланушы, басқа пайдаланушылардың оны өңдеуіне жол бермеу үшін жазбаға эксклюзивті құлып қояды. Бұл дегеніміз, пайдаланушы құлыпты босатқанша, басқа ешкім бұл жазбамен жұмыс істей алмайды. Кері жағы – пайдаланушылар ұзақ уақытқа құлыпталып қалуы мүмкін, бұл жүйенің жалпы жауап беру жылдамдығын баяулатып, наразылыққа әкелуі мүмкін. Пессимистік құлыптауды қайда қолдану керек: бұл негізінен деректерге қатысты талас (бір уақытта деректер қоры жүйесіне түсетін сұраныстардың саны) жоғары ортада қолданылады; сондай-ақ, бір мезгілделік қақтығыстар туған жағдайда транзакцияларды кері қайтару құны, деректерді құлыптау арқылы қорғау құнынан кем болғанда. Пессимистік қатарласуды енгізу уақыты қысқа болғанда, мысалы, жазбаларды бағдарламалық түрде өңдегенде, тиімдірек болады. Пессимистік қатарласу деректер қорына тұрақты қосылымды қажет етеді және пайдаланушылар деректермен өзара әрекеттескен кезде кеңейтімді шешім емес, себебі жазбалар салыстырмалы түрде ұзақ уақытқа құлыпталып қалуы мүмкін. Бұл веб-қосымшаларды әзірлеуде қолдануға қолайлы емес. Оптимистік құлыптау: бұл бірнеше пайдаланушыға деректер қорына бір мезгілде кіруге мүмкіндік береді, ал жүйе әрбір пайдаланушының бастапқы оқыған көшірмесін сақтайды. Пайдаланушы жазбаны жаңартуды қалағанда, қосымша басқа пайдаланушының жазбаны соңғы рет оқығаннан бері өзгертіп-өзгерте қоймағанын анықтайды. Бұл үшін қосымша жадыда сақталған бастапқы оқылған деректі деректер қорының жазбасымен салыстырады, жазбаға енгізілген өзгерістерді тексеріп көреді. Бастапқы оқылған дерек пен деректер қорының жазбасы арасындағы кез келген айырмашылық қатарласу ережелерін бұзады және жүйе жаңарту сұранысын қабылдамайды. Қате туралы хабарлама шығарылады және пайдаланушыдан жаңарту процесін қайтадан бастау сұралады. Бұл қажетті құлыптау мөлшерін азайту арқылы деректер қорының өнімділігін жақсартады, соның салдарынан деректер қоры серверіндегі жүктемені азайтады. Бұл жазбалар құлыпталмайтындықтан, жаңартулар шектеулі кестелермен тиімді жұмыс істейді. Алайда, кейбір жаңартулар сәтсіз аяқталуы мүмкін. Кері жағы – көптеген пайдаланушылардан келіп түсетін жаңарту сұраныстарының көп болуына байланысты жаңартудың үнемі сәтсіз аяқталуы, бұл пайдаланушылар үшін көңіл көншітпейді. Оптимистік құлыптауды қайда қолдану керек: бұл деректерге талас аз немесе деректерге тек оқу үшін қол жеткізілетін орталарда қолайлы. Оптимистік қатарласу NET-те ұялы және ажыратылған қосымшалардың қажеттіліктерін қанағаттандыру үшін кеңінен қолданылады, онда деректер қатарын ұзақ уақытқа құлыптау мүмкін емес. Сонымен қатар, жазбаларды құлыптау үшін деректер қоры серверіне тұрақты қосылымды қажет етеді, бұл ажыратылған қосымшаларда мүмкін емес.
Pessimistic locking: a user who reads a record with the intention of updating it places an exclusive lock on the record to prevent other users from manipulating it. This means no one else can manipulate that record until the user releases the lock. The downside is that users can be locked out for a very long time, thereby slowing the overall system response and causing frustration. Where to use pessimistic locking: this is mainly used in environments where data contention (the degree of users request to the database system at any one time) is heavy; where the cost of protecting data through locks is less than the cost of rolling back transactions, if concurrency conflicts occur. Pessimistic concurrency is best implemented when lock times will be short, as in programmatic processing of records. Pessimistic concurrency requires a persistent connection to the database and is not a scalable option when users are interacting with data, because records might be locked for relatively large periods of time. It is not appropriate for use in Web application development. Optimistic locking: this allows multiple concurrent users access to the database whilst the system keeps a copy of the initial read made by each user. When a user wants to update a record, the application determines whether another user has changed the record since it was last read. The application does this by comparing the initial read held in memory to the database record to verify any changes made to the record. Any discrepancies between the initial read and the database record violates concurrency rules and hence causes the system to disregard any update request. An error message is generated and the user is asked to start the update process again. It improves database performance by reducing the amount of locking required, thereby reducing the load on the database server. It works efficiently with tables that require limited updates since no users are locked out. However, some updates may fail. The downside is constant update failures due to high volumes of update requests from multiple concurrent users it can be frustrating for users. Where to use optimistic locking: this is appropriate in environments where there is low contention for data, or where read only access to data is required. Optimistic concurrency is used extensively in NET to address the needs of mobile and disconnected applications, where locking data rows for prolonged periods of time would be infeasible. Also, maintaining record locks requires a persistent connection to the database server, which is not possible in disconnected applications.
Мутекстер мен семафорлар
Семафор (бағдарламалау) # Семафорлар мен өзара құлыптасулар (мутекстер)