PostgreSQL प्रदर्शन और क्वेरी अनुकूलन · पाठ

Application coordination के लिए advisory lock

जानें कि PostgreSQL advisory lock आपके application को jobs के समन्वय और critical section की सुरक्षा के लिए table row lock किए बिना हल्का, programmer-controlled mutex कैसे देते हैं।

पाठ 4, कुल 4 में से13 चरण

Application coordination के लिए advisory lock, CoddyKit पर PostgreSQL प्रदर्शन और क्वेरी अनुकूलन का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह PostgreSQL प्रदर्शन और क्वेरी अनुकूलन सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

सलाहकारी लॉक क्या होते हैं

सलाहकारी लॉक ऐसे लॉक होते हैं जिनका अर्थ पूरी तरह आपके अनुप्रयोग द्वारा निर्धारित किया जाता है। PostgreSQL उन्हें किसी पंक्ति या तालिका से संबद्ध नहीं करता—आपका कोड तय करता है कि कोई दिया गया लॉक कुंजी किसका प्रतिनिधित्व करती है।

इनका उपयोग क्यों करें

ऐसे समन्वय के लिए ये बिल्कुल उपयुक्त हैं जो किसी एक पंक्ति से संबद्ध नहीं होता:

  • यह सुनिश्चित करना कि रात का कार्य केवल एक वर्कर चलाए
  • किसी बाहरी API तक पहुँच को क्रमबद्ध करना
  • दो प्रक्रियाओं को एक ही फाइल आयात करने से रोकना

लॉक कुंजियाँ

सलाहकारी लॉक की पहचान 64-बिट पूर्णांक या दो 32-बिट पूर्णांकों से होती है। संख्याएँ आप चुनते हैं; एक सामान्य तरीका किसी स्ट्रिंग का हैश बनाकर उसे पूर्णांक कुंजी में बदलना है।

SELECT hashtext('nightly-report');

सत्र-स्तरीय लॉक

pg_advisory_lock लॉक को तब तक बनाए रखता है, जब तक आप उसे छोड़ नहीं देते या सत्र समाप्त नहीं हो जाता। यदि कोई अन्य सत्र उसी कुंजी को पहले से रखता है, तो यह प्रतीक्षा करता है।

SELECT pg_advisory_lock(42);
-- do exclusive work
SELECT pg_advisory_unlock(42);

बिना प्रतीक्षा किए लॉक आज़माना

अक्सर आप प्रतीक्षा नहीं करना चाहते। pg_try_advisory_lock लॉक मिलने पर true लौटाता है और किसी अन्य के पास लॉक होने पर तुरंत false लौटाता है।

SELECT pg_try_advisory_lock(42);

एकल-वर्डर प्रतिरूप

क्रॉन से शुरू होने वाला कार्य यह सुनिश्चित करने के लिए try-lock का उपयोग करता है कि केवल एक इंस्टेंस चले। यदि यह false लौटाता है, तो वह इंस्टेंस बस समाप्त हो जाता है।

-- if this returns false, another worker is running
SELECT pg_try_advisory_lock(hashtext('nightly-report'));

लेन-देन-स्तरीय लॉक

_xact_ वाले रूप COMMIT या ROLLBACK पर अपने-आप लॉक छोड़ देते हैं, इसलिए आप लॉक खोलना भूल नहीं सकते। छोटे महत्वपूर्ण खंडों के लिए ये बहुत उपयोगी हैं।

BEGIN;
SELECT pg_advisory_xact_lock(42);
-- protected work here
COMMIT; -- lock auto-released

धारित लॉक देखना

सलाहकारी लॉक pg_locks में locktype 'advisory' के साथ दिखाई देते हैं। इसका उपयोग यह पता लगाने के लिए करें कि कौन-सा लॉक किसके पास है।

SELECT pid, classid, objid, granted
FROM pg_locks
WHERE locktype = 'advisory';

सलाहकारी लॉक बनाम पंक्ति लॉक

SELECT ... FOR UPDATE से मुख्य अंतर:

  • सलाहकारी लॉक किसी पंक्ति से संबद्ध नहीं होते
  • पंक्ति संस्करणों को पकड़े बिना ये कई कथनों के बीच बने रहते हैं
  • इनका अर्थ पूरी तरह उस परंपरा पर निर्भर करता है जिस पर आपका ऐप सहमत है

बचने योग्य समस्याएँ

इन बातों का ध्यान रखें:

  • सत्र-स्तरीय लॉक खोलना भूल जाना (xact वाले रूपों को प्राथमिकता दें)
  • असंबंधित सुविधाओं के बीच कुंजी टकराव—अपनी कुंजियों के लिए अलग नाम-क्षेत्र रखें
  • कनेक्शन पूलर द्वारा सत्रों का पुनः उपयोग किए जाने से लॉक का छूट जाना

सत्र लॉक को सही ढंग से खोलना

सत्र-स्तरीय लॉक कई बार प्राप्त किए जा सकते हैं और उन्हें उतनी ही बार खोलना आवश्यक है। वर्तमान सत्र द्वारा धारण किए गए सभी लॉक एक साथ हटाने के लिए unlock-all सहायक का उपयोग करें।

SELECT pg_advisory_unlock_all();

त्वरित जाँच

सलाहकारी लॉक के अपने ज्ञान की जाँच करें।

पुनरावलोकन

आपने सलाहकारी लॉक सीखे:

  • अनुप्रयोग द्वारा परिभाषित लॉक, जो पंक्तियों या तालिकाओं से संबद्ध नहीं होते
  • 64-बिट या दो 32-बिट कुंजियों से पहचाने जाते हैं
  • सत्र-स्तरीय और अपने-आप खुलने वाले लेन-देन-स्तरीय रूप
  • pg_try_advisory_lock एकल-वर्डर प्रतिरूपों को सक्षम करता है
  • कुंजियों के लिए नाम-क्षेत्र रखें और लॉक छूटने से बचने के लिए xact लॉक को प्राथमिकता दें
शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
22
पाठ
88

अक्सर पूछे जाने वाले प्रश्न

क्या “Application coordination के लिए advisory lock” पाठ निःशुल्क है?

हाँ — PostgreSQL प्रदर्शन और क्वेरी अनुकूलन अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Application coordination के लिए advisory lock” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Application coordination के लिए advisory lock” में मैं क्या सीखूँगा?

जानें कि PostgreSQL advisory lock आपके application को jobs के समन्वय और critical section की सुरक्षा के लिए table row lock किए बिना हल्का, programmer-controlled mutex कैसे देते हैं। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ PostgreSQL प्रदर्शन और क्वेरी अनुकूलन का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या PostgreSQL प्रदर्शन और क्वेरी अनुकूलन शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर PostgreSQL प्रदर्शन और क्वेरी अनुकूलन शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“Application coordination के लिए advisory lock” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. लॉक और डेडलॉक समझना
  2. लॉक के लिए प्रतिस्पर्धा की पहचान और समाधान
  3. पंक्ति-स्तरीय लॉकिंग रणनीतियाँ
  4. Application coordination के लिए advisory lock
← PostgreSQL प्रदर्शन और क्वेरी अनुकूलन पर वापस जाएँ