PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

चयन के लिए लॉक करें ताकि दूसरी प्रक्रिया को पुराना डेटा न मिले

आपका प्रश्न, किसी अज्ञात स्रोत का संदर्भ देते हुए:

<ब्लॉककोट>

मैंने पंक्ति लॉकिंग में देखा, लेकिन यह कहता है कि आप उन चयनों को रोक नहीं सकते हैं जो ऐसा लगता है कि यह मेरी स्थिति के लिए काम नहीं करेगा। सलाहकार ताले का उपयोग करने के लिए Ismy एकमात्र विकल्प है?

इस मामले पर आधिकारिक दस्तावेज:

<ब्लॉककोट>

पंक्ति-स्तरीय लॉक डेटा क्वेरीिंग को प्रभावित नहीं करते हैं; वे केवल राइटर और लॉकर . को ब्लॉक करते हैं एक ही पंक्ति में।

समवर्ती प्रयास न केवल चयन करेंगे बल्कि SELECT ... FOR UPDATE के साथ समान पंक्ति-स्तरीय लॉक को निकालने का प्रयास करेंगे। - जिसके कारण उन्हें किसी भी पिछले लेन-देन की प्रतीक्षा करने के लिए एक ही पंक्ति पर लॉक रखने या वापस रोल करने के लिए प्रतीक्षा करनी पड़ती है। बस वही जो आप चाहते थे।

हालांकि , कई उपयोग के मामलों को सलाहकार लॉक . के साथ बेहतर ढंग से हल किया जाता है - 9.5 से पहले के संस्करणों में। आप अभी भी FOR UPDATE के साथ संसाधित की जा रही पंक्तियों को लॉक कर सकते हैं साथ ही सुरक्षित रहने के लिए। लेकिन अगर अगला लेन-देन केवल "अगली मुफ़्त पंक्ति" को संसाधित करना चाहता है, तो यह अक्सर बहुत होता है उसी पंक्ति की प्रतीक्षा न करने के लिए अधिक कुशल, जो लॉक जारी होने के बाद लगभग निश्चित रूप से अनुपलब्ध है, लेकिन तुरंत "अगला मुफ़्त" पर जाएं।

Postgres 9.5+ में FOR UPDATE SKIP LOCKED इसके लिए। जैसे @Craig ने टिप्पणी की, यह काफी हद तक सलाहकार तालों की जगह ले सकता है।

संबंधित प्रश्न एक ही प्रदर्शन हॉग पर ठोकर खा रहा है:

  • फ़ंक्शन हमेशा के लिए बड़ी संख्या में रिकॉर्ड के लिए चल रहा है

एडवाइजरी लॉक के लिए स्पष्टीकरण और कोड उदाहरण या FOR UPDATE SKIP LOCKED पोस्टग्रेज 9.5+ में:

  • अद्यतन पोस्ट करता है ... सीमा 1

एक साथ कई पंक्तियों को लॉक करने के लिए :

  • समवर्ती पहुंच पर तालिका में कुछ निश्चित पंक्तियों को कैसे चिह्नित करें


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल और पोस्टग्रेएसक्यूएल:भूमिका पोस्टग्रेज मौजूद नहीं है

  2. किसी क्वेरी को चलाने के लिए किसी .sql फ़ाइल की सामग्री को R स्क्रिप्ट में कैसे पढ़ा जाए?

  3. pg_restore चलाते समय फ़ाइल हेडर में [संग्रहकर्ता] असमर्थित संस्करण (1.13) प्राप्त करना

  4. PostgreSQL 9.1 . में स्वायत्त लेनदेन

  5. अभिव्यक्ति अनुक्रमणिका पर खोज रहे हैं