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

SQL सर्वर प्रक्रिया कतार दौड़ की स्थिति

संपादित करें:

मैंने अपना उत्तर जांचने के लिए गुगली की:"SQL सर्वर में डेटा कतारों को रीडपास्ट और UPDLOCK के साथ संसाधित करना"। मुझे इस समाधान के बारे में पढ़े और इसके साथ खेले हुए कई साल हो गए हैं।

मूल:

यदि आप READPAST संकेत का उपयोग करते हैं, तो बंद पंक्तियों को छोड़ दिया जाता है। आपने ROWLOCK का उपयोग किया है इसलिए आपको लॉक एस्केलेशन से बचना चाहिए। जैसा कि मुझे पता चला, आपको UPDLOCK की भी आवश्यकता है।

तो प्रक्रिया 1 20 पंक्तियों को लॉक करती है, प्रक्रिया 2 में अगले 20 में, प्रक्रिया 3 में 41 से 60 तक की पंक्तियाँ लगती हैं, आदि

अपडेट को इस तरह भी लिखा जा सकता है:

UPDATE TOP (20)
    foo
SET
    ProcessorID = @PROCID
FROM
    OrderTable foo WITH (ROWLOCK, READPAST, UPDLOCK)
WHERE
    ProcessorID = 0

ताज़ा करें, अक्टूबर 2011

यदि आपको एक बार में SELECT और UPDATE की आवश्यकता है, तो इसे OUTPUT क्लॉज के साथ और अधिक सुरुचिपूर्ण ढंग से किया जा सकता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL ऑपरेशंस स्टूडियो का उपयोग करके मैक पर SQL सर्वर डेटाबेस को कैसे पुनर्स्थापित करें

  2. SQL सर्वर GUID सॉर्ट एल्गोरिथम। क्यों?

  3. Oracle और SQL सर्वर के बीच रिक्त स्थान को संभालने का अंतर

  4. SQL सर्वर डेटाबेस को Azure SQL डेटाबेस में माइग्रेट करने के तरीके

  5. EF अनावश्यक नल-चेक के साथ SQL क्वेरी क्यों उत्पन्न कर रहा है?