What is Concurrency control in dbms in Hind

Database Management System (DBMS) में concurrency control यह सुनिश्चित करता है कि कई transactions एक साथ बिना किसी रुकावट के चल सकें।

जब कई users, समान data को एक्सेस या बदलने का प्रयास करते हैं तब concurrency control, database को सुरक्षित और सही बनाए रखने में मदद करता है।

उदाहरण के लिए यदि users एक ही समय में flight का अंतिम seat, book करते हैं, तब concurrency control, सुनिश्चित करता है कि केवल एक व्यक्ति seats को प्राप्त करें। यह गलत या अधूरे डेटा को पढ़ने से रोकता है।

Concurrency control, transactions को सुरक्षित बनाए रखने के लिए ACID properties (Atomicity, Consistency, Isolation, Durability) का अनुसरण करता है।

यह समस्या रोकता है जब दो users एक ही समय में समान bank account से पैसा withdraw कर रहे हैं और गलत balance के साथ transaction समाप्त हो जाता है।

 यह प्रक्रिया डेटाबेस के प्रदर्शन को बेहतर बनाता है और सुनिश्चित करता है कि सभी transactions सही ढंग से पूरे हो भले ही कई users एक समय में transactions कर रहे हो।

Concurrency control technique in dbms in Hindi 

DBMS में निम्न Concurrecy control technique होते हैं।


Lock-Based Concurrency Control  

DBMS में Lock-Based Concurrency Control, एक समय में समान data को access करने वाले कई transactions को manage करने में मदद करता है।

यह टकराव को रोकने के लिए locks का उपयोग करता है और data को सुरक्षित बनाए रखता है। किसी data को access करने के पहले transaction को lock करने की आवश्यकता होती है।

locks दो प्रकार की होती है।  
1) Shared Lock (S-Lock): 
इसमें कई transactions, data को पढ़ सकते हैं परंतु उसे बदल नहीं सकते।

2) Exclusive Lock (X-Lock):
इसमें केवल एक transactions, एक समय में data को read और write कर सकता है। 

Locks, दो phases में कार्य करता है। 
a) Locking Phase: 
इसमें transaction, data को उपयोग करने के पहले उसे lock कर देता है।

b) Unlocking Phase: 
इसमें transaction अपने कार्य को समाप्त करने के बाद lock को release कर देता है।

यह system जैसे गलत data को पढ़ना या update को खो देना जैसे त्रुटियों को रोकता है। परंतु यदि इसे अच्छे से handle न किया जाए तो यह deadlocks को पैदा कर सकता है, जहां दो transactions एक दूसरे का हमेशा इंतज़ार करते हैं। 

इस समस्या के समाधान के लिए databases, timeout rules या deadlock detection का उपयोग करता है। Lock-based control, data को सुरक्षित और सही बनाए रखने के लिए महत्वपूर्ण है।

Timestamp-Based Concurrency Control  

DBMS में Timestamp-Based Concurrency एक ऐसी विधि है जिसमें timestamps का उपयोग करके कई transactions को manage किया जाता है।

प्रत्येक transaction, जब शुरू होता है तब वह एक unique timestamp का उपयोग करता है। यह system को किस transactions को पहले execute होना चाहिए उसके order का निर्णय लेने में मदद करता है। 

data को सही रखने के लिए पुराने transactions को नए transactions कि पहले पूरा किया जाता है।

यदि एक नया transaction, data को access करने की कोशिश करता है जिससे पुराना transaction उपयोग कर रहा है तब नया transaction को data को access करने के लिए इंतजार करना पड़ता है।

यह विधि updates के खोने, गलत data को पढ़ने और गलत data होने जैसे समस्याओं को रोकता है। यह deadlocks को कम करता है, जो तब होता है जब दो transactions एक-दूसरे को रोक देते हैं।

यह system सुनिश्चित करता है कि transactions, एक के बाद एक क्रम का अनुसरण करता है जो डेटाबेस को स्थिर और विश्वसनीय बनाए रखता है।

Timestamp-based concurrency control, उच्च ट्रैफिक वाले database के लिए उपयोगी है जहां पर कई users एक समय में data को access करते हैं।

यह बिना देरी या टकराव के data को सही और एक जैसे बनाए रखने में मदद करते है। यह विधि प्रभावशाली है जो उस समय भी डेटाबेस के कार्य को सुचारू बनाए रखता है जब कई transactions एक साथ हों।

Optimistic Concurrency Control  

Optimistic Concurrency Control (OCC), database मे उपयोग किया जाने वाला वह विधि है जिसमें कई transactions को एक समय में manage किया जाता है।

यह मानता है कि टकराव अक्सर नहीं होते हैं, इसलिए data को lock किए बिना transactions, सुचारू रूप से चलता है। यह तीन steps में कार्य करता है।

1) Read Phase:
इसमें transaction, data को स्थाई रूप से बदले बिना उसे पढ़ता है और कार्य करता है।

2) Validation Phase:
सुरक्षित करने के पहले system या जांच करता है कि क्या अन्य transactions के कारण data में कोई परिवर्तन हुआ है।
 
3) Write Phase:
अगर टकराव नहीं होता, तो बदलाव सुरक्षित किए जाते हैं। अगर टकराव होता है, तो transaction रद्द कर फिर से प्रयास किया जाता है।

OCC, उस समय उपयोगी है जब बहुत कम टकराव की संभावना है। यह तेजी से process होने में मदद करता है क्योंकि इसमें lock का उपयोग नहीं किया जाता। 

हालांकि यदि बहुत सारे transactions, समान data को बदलने का प्रयास करते हैं तो उसमें से कई transactions असफल हो जाते हैं और उन्हें फिर से शुरू होने की जरूरत पड़ती है।

यह उन systems में बेहतर कार्य करते हैं जहां पर टकराव अक्सर नहीं होते, जो transactions को सुचारू और प्रभावशाली बना देता है।

Multi-Version Concurrency Control (MVCC)

Multi-Version Concurrency Control (MVCC), database में उपयोग की जाने वाली ऐसी विधि है जिसमें कई users एक समय में बिना टकराव(conflict)के कार्य करते हैं।

data को lock करने की बजाय MVCC, एक record का कई संस्करण बनाता है। यह एक दूसरे का इंतजार किए बिना read और write operations को सुचारू रूप से होने में मदद करता है।

जब एक transaction, data को update करता है तब वास्तविक data को बदलने के बजाय system एक नए संस्करण का निर्माण करता है।

यह अन्य transactions को पुराने data को पढ़ने की अनुमति देता है जबकि updates, background में होता है। प्रत्येक transaction डेटाबेस को उसी रूप में देखता है जैसा वह प्रारंभ में था।

MVCC, इंतजार के समय को कम करके और गति को बढ़ाकर डेटाबेस के प्रदर्शन को बेहतर बनाता है। यह transactions के बीच टकराव को रोकता है जो operations को ज्यादा प्रभावशाली बनाता है। 

इस विधि का प्रयोग व्यापक रूप से databases जैसे PostgreSQL और MySQL (InnoDB) में किया जाता है। यह कई users को सुचारू रूप से काम करने की अनुमति देता है, data को सही रखता है, और गति में सुधार करता है। 

इसी कारण एक समय में कई transactions को संभालने के लिए MVCC एक पसंदीदा विधि है।