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

SQL सर्वर ब्लॉकिंग के साथ DBA डोर पर ब्लॉक, ब्लॉक, ब्लॉकिंग

जबकि हम सभी जानते हैं कि डेटा अखंडता के लिए लॉक करना आवश्यक है, यह इस तथ्य को नहीं बदलता है कि यह आपके पक्ष में एक गंभीर कांटा हो सकता है!

जब हम अपने डेटाबेस में ब्लॉकिंग देखते हैं, तो हम अक्सर मान लेते हैं कि कुछ गलत है - हमेशा ऐसा नहीं होता है। मेरे अनुभव में, अधिकांश SQL सर्वर अवरोधन वैध है, लेकिन इसकी जांच और समझने की आवश्यकता है। दूसरी ओर, गतिरोध शायद ही कभी वैध होते हैं! SQL सर्वर की दुनिया में डेडलॉक को महत्वपूर्ण माना जाता है क्योंकि प्रक्रियाएं स्वचालित रूप से समाप्त हो जाती हैं, क्योंकि SQL सर्वर मैन्युअल हस्तक्षेप की आवश्यकता के बिना गतिरोध को हल करता है। फिर से, भले ही वे "समाधान" हो गए हों, उन्हें निश्चित रूप से जांच और समझने की आवश्यकता है।

कुछ डिज़ाइन रणनीतियाँ हैं जो आपके डेटाबेस में SQL सर्वर ब्लॉकिंग और गतिरोध की घटनाओं को कम करने में मदद कर सकती हैं:

  • उच्च उपयोग वाली तालिकाओं पर संकुल अनुक्रमणिका का उपयोग करें
  • उच्च पंक्ति गणना SQL कथनों से बचें
  • लंबे लेन-देन को कई छोटे लेन-देन में विभाजित करें
  • सुनिश्चित करें कि UPDATE और DELETE स्टेटमेंट इंडेक्स का उपयोग करते हैं
  • बैच अपडेट जॉब को ओवरलैप करने के लिए शेड्यूल न करें
  • अपने आंकड़े अप-टू-डेट रखें

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

SQL सर्वर ब्लॉकिंग और डेडलॉक

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

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

तो अब मैं मूल कारण तक पहुंचना चाहता हूं - यही वह जगह है जहां आयाम वृक्ष अंदर आता है। मैं एक विशिष्ट समय सीमा के लिए जानकारी को ड्रिल-डाउन और फ़िल्टर कर सकता हूं, जिससे मुझे उसी जानकारी को डेटाबेस जैसे गहरे आयामों में देखने की अनुमति मिलती है। , उपयोगकर्ता , कार्यक्रम , और एसक्यूएल स्टेटमेंट , मेरे जाते ही "श्वेत शोर" को फ़िल्टर करते हुए - मेरी समस्या के स्रोत (स्रोतों) की स्पष्ट रूप से पहचान करना।

यहां मैं देख रहा हूं कि कौन से डेटाबेस समय सीमा के दौरान सबसे अधिक लॉकिंग का अनुभव कर रहे हैं:

अब, मैं उपयोगकर्ताओं . के बारे में जानकारी दूंगा चयनित डेटाबेस में:

फिर, मैं एसक्यूएल स्टेटमेंट्स की सूची देखना चुनूंगा लॉकिंग का कारण जो चयनित उपयोगकर्ता . द्वारा निष्पादित किया गया था चयनित डेटाबेस . में निर्दिष्ट समय सीमा . के लिए ।

अब, मैं सभी लॉकिंग देख सकता हूं चयनित SQL कथन के लिए संबंधित जानकारी ।

इसलिए यदि आप अपने लॉकिंग, ब्लॉकिंग और गतिरोध के मुद्दों की तह तक जाना चाहते हैं, तो मेरा सुझाव है कि आप स्पॉटलाइट क्लाउड की जांच करें। स्पॉटलाइट क्लाउड डेटाबेस के भीतर लॉकिंग मुद्दों की जांच करना और समझना पहले से कहीं अधिक आसान बनाता है और अंततः यह सुनिश्चित करता है कि आपका एप्लिकेशन कोड गतिरोध-मुक्त है।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ALTER TABLE कथन SQL सर्वर में CHECK बाधा के साथ विरोध करता है - SQL सर्वर / TSQL ट्यूटोरियल भाग 89

  2. SQL सर्वर (T-SQL) में डेटाबेस मेल खाता हटाएं

  3. दो स्तंभों के संयोजन के लिए अद्वितीय बाधा जोड़ें

  4. एक फ़ोल्डर से SQL सर्वर में एकाधिक CSV फ़ाइलें आयात करें

  5. डेटाबेस में आईडी फ़ील्ड के लिए INT बनाम विशिष्ट-पहचानकर्ता