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

यह सरल कोड गतिरोध उत्पन्न करता है। सरल उदाहरण कार्यक्रम में शामिल हैं

आपके दो कथन अलग-अलग क्रम में पंक्ति ताले प्राप्त करते हैं। गतिरोध के लिए यह एक क्लासिक मामला है। आप यह सुनिश्चित करके इसे ठीक कर सकते हैं कि लिए गए तालों का क्रम हमेशा कुछ वैश्विक क्रम में होता है (उदाहरण के लिए, आईडी द्वारा आदेशित)। आपको शायद दो UPDATE को एक साथ रखना चाहिए एक में बयान और एसक्यूएल सर्वर पर भेजने से पहले क्लाइंट पर आईडी की सूची को सॉर्ट करें। कई विशिष्ट UPDATE के लिए योजना यह वास्तव में ठीक काम करती है (हालांकि गारंटी नहीं है)।

या, यदि आप एक गतिरोध का पता लगाते हैं तो आप पुनः प्रयास तर्क जोड़ते हैं (SqlException.Number == 1205 ) यह अधिक सुरुचिपूर्ण है क्योंकि इसके लिए किसी गहरे कोड परिवर्तन की आवश्यकता नहीं है। लेकिन गतिरोध का प्रदर्शन प्रभाव पड़ता है इसलिए ऐसा केवल कम गतिरोध दरों के लिए करें।

यदि आपकी समानांतर प्रक्रिया बहुत सारे अपडेट उत्पन्न करती है, तो आप INSERT . कर सकते हैं उन सभी अद्यतनों को एक अस्थायी तालिका में (जो समवर्ती रूप से किया जा सकता है) और जब आप कर लेते हैं तो आप एक बड़ा UPDATE निष्पादित करते हैं जो सभी व्यक्तिगत अपडेट रिकॉर्ड को मुख्य तालिका में कॉपी करता है। आप बस अपने नमूना प्रश्नों में शामिल होने के स्रोत को बदल दें।



  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 अपडेट करें

  2. फ़ंक्शन का उपयोग करके SQL सर्वर में टेक्स्ट लपेटें

  3. एसक्यूएल चार और सी # के बीच कनवर्ट करना

  4. क्या डेटाटाइम 2 के लिए isdate () जैसा कोई फ़ंक्शन है?

  5. रिफैक्टरिंग ADO.NET - SqlTransaction बनाम TransactionScope