नहीं। FOR UPDATE
केवल उन पंक्तियों को लॉक करता है , ताकि एक और लेन-देन जो उन्हें लॉक करने का प्रयास करता है (FOR SHARE
. के साथ) , FOR UPDATE
, UPDATE
या DELETE
) तब तक ब्लॉक करता है जब तक आपका लेन-देन नहीं हो जाता या वापस नहीं आ जाता।
यदि आप एक संपूर्ण टेबल लॉक चाहते हैं जो आपको सम्मिलित/अपडेट/डिलीट को ब्लॉक करता है जो शायद आप चाहते हैं LOCK TABLE ... IN EXCLUSIVE MODE
।
-
देखें
lock_timeout
सेटिंग . यह 9.3 में जोड़ा गया था और पुराने संस्करणों में उपलब्ध नहीं है।पुराने संस्करणों के लिए कच्चे अनुमान
statement_timeout
. के साथ प्राप्त किए जा सकते हैं , लेकिन इससे बयानों को अनावश्यक रूप से रद्द किया जा सकता है। अगरstatement_timeout
1s है और एक स्टेटमेंट लॉक पर 950ms की प्रतीक्षा करता है, तो यह लॉक प्राप्त कर सकता है और आगे बढ़ सकता है, केवल एक टाइमआउट द्वारा तुरंत रद्द किया जा सकता है। वह नहीं जो आप चाहते हैं।lock_timeout
सेट करने का कोई क्वेरी-स्तरीय तरीका नहीं है , लेकिन आप कर सकते हैं और बस चाहिए:SET LOCAL lock_timeout = '1s';
आपके बाद
BEGIN
एक लेन-देन। -
एक बयान है समय समाप्त हो गया है, लेकिन लॉक लेनदेन पर आयोजित किए जाते हैं स्तर। कोई लेन-देन समयबाह्य सुविधा नहीं है।
यदि आप सिंगल-स्टेटमेंट लेनदेन चला रहे हैं तो आप बस एक
statement_timeout
. सेट कर सकते हैं यह कितनी देर तक चल सकता है इसे सीमित करने के लिए कथन चलाने से पहले। यह लॉक को कितनी देर तक रोक सकता है, इसे सीमित करने जैसी बात नहीं है, हालांकि, यह लॉक के लिए अनुमत 1s के 900ms तक प्रतीक्षा कर सकता है, केवल वास्तव में 100ms के लिए लॉक को पकड़ सकता है, फिर टाइमआउट तक रद्द हो जाता है।पी> -
नहीं। आपको यह अवश्य करना चाहिए:
BEGIN; SET LOCAL lock_timeout = '4s'; SELECT ....; COMMIT;
-
SET LOCAL
इसके लिए उपयुक्त और पसंदीदा है।क्वेरी के टेक्स्ट में इसे करने का कोई तरीका नहीं है, यह एक अलग स्टेटमेंट होना चाहिए।
आपके द्वारा लिंक की गई मेलिंग सूची पोस्ट एक काल्पनिक सिंटैक्स के लिए एक प्रस्ताव है जिसे कभी लागू नहीं किया गया था (कम से कम एक सार्वजनिक पोस्टग्रेएसक्यूएल रिलीज में) और मौजूद नहीं है।
इस तरह की स्थिति में आप "आशावादी समवर्ती नियंत्रण" पर विचार करना चाहेंगे, जिसे अक्सर "आशावादी लॉकिंग" कहा जाता है। यह आपको क्वेरी दोहराव की बढ़ी हुई दरों और अधिक एप्लिकेशन लॉजिक की आवश्यकता की कीमत पर लॉकिंग व्यवहार पर अधिक नियंत्रण प्रदान करता है।