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

गतिरोध पहेली:पीड़ित के पास कोई संसाधन नहीं है, जिसका उपयोग गतिरोध को हल करने के लिए किया जाता है

लॉकिंग के संदर्भ में, टेबल और उनके संबंधित इंडेक्स अलग-अलग इकाइयाँ हैं। कभी-कभी, दो अलग-अलग तालिकाओं के बजाय एक टेबल और उसके इंडेक्स के बीच डेड लॉकिंग होती है।

समस्या सबसे अधिक तब होती है जब किसी इंडेक्स पर एक लॉक लगाया जाता है और फिर डेटा लुकअप करने के लिए संबंधित टेबल (यानी बार) पर एक और लॉक लगाया जाता है। डालने के दौरान, यह विपरीत क्रम में होगा। सबसे पहले, टेबल (यानी बार) को लॉक और अपडेट किया जाता है, फिर इंडेक्स को लॉक किया जाता है।

select foo 
from bar 
where @someId = 0 OR SomeId = @someId

क्या आपके पास एक कवरिंग इंडेक्स (चयन में सहायता के लिए) जोड़ सकता है जिसमें SomeId और foo दोनों शामिल हैं? इस तरह आप लुकअप से पूरी तरह बचेंगे और समस्या को होने से रोकेंगे।

क्या आप डेडलॉक फ़्रेम के बजाय क्वेरी प्लान पोस्ट कर सकते हैं?



  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 सर्वर में एक स्ट्रिंग को कैसे विभाजित करें

  3. एसक्यूएल:डुप्लिकेट निकालें

  4. Salesforce SOQL के साथ SQL सर्वर का उपयोग करने के लिए युक्तियाँ

  5. SQL क्वेरी से गिनती कैप्चर करना