SQL सर्वर: कथन बनाम बैच बनाम लेन-देन बनाम कनेक्शन


10

मेरा प्रश्न सरल है: आपस में क्या अंतर / समानताएँ / कार्डिनैलिटी हैं

  • लेन-देन
  • बैचों
  • कनेक्शन और
  • बयान

SQL सर्वर में?

जहां तक ​​मैं समझता हूं कि एक कनेक्शन एक SQL सर्वर इंस्टेंस और एक क्लाइंट के बीच एक एकल संचार चैनल है जिसके भीतर बैचों के रूप में वर्गीकृत किए गए कथनों के संग्रह को निष्पादित किया जाता है। एक बैच या तो स्पष्ट रूप से या स्पष्ट रूप से एक या कई लेनदेन के लिए मैप किया जाता है। क्या ये सही है?


जवाबों:


4

बहुत ज्यादा।

एक बैच सिर्फ इतना है, आदेशों का एक बैच जिसे निष्पादित करने की आवश्यकता है। लेन-देन आदेशों का एक सेट है जो सफल होने या पूरी तरह से विफल होने की गारंटी है (यानी यह आधे आदेशों को पूरा नहीं करेगा और फिर बाकी पर विफल हो जाएगा, यदि कोई विफल होता है तो वे सभी विफल हो जाते हैं)।

जहाँ तक मैं जानता हूँ कि SQL सर्वर कनेक्शन पूलिंग का उपयोग करता है तो मैं प्रति ग्राहक विचार एक कनेक्शन पर निर्भर नहीं होता।


1
तो बैच और लेन-देन के बीच की कार्डिनैलिटी क्या है? क्या प्रति लेनदेन कई बैच होना संभव है? कैसे इसके विपरीत?

1
जहां तक ​​मैं जानता हूं कि प्रति बैच में कई लेन-देन संभव है, लेकिन प्रति लेनदेन कई बैच होना संभव नहीं है।
क्रॉमुलेंट

6

लेन-देन और बैच दो स्वतंत्र अवधारणाएं हैं। दोनों को एक से कई कॉन्फ़िगरेशन में उपयोग किया जा सकता है।

लेन-देन ब्लॉक एक "काम की इकाई" है, एक अवधारणा जो प्रतिबद्ध है कि या तो पूरी तरह से काम करना चाहिए या बिल्कुल भी काम नहीं करना चाहिए। उदाहरण के लिए, यदि आप एक दूसरे से जुड़ी दो तालिकाओं को अद्यतन करते हैं; डेटा परिवर्तन के लिए प्रतिबद्ध होने के लिए दोनों को सफल होना चाहिए। [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

बैच एक Microsoft अवधारणा है। Microsoft द्वारा बनाए गए टूल जैसे कि sqlcmd और osql के साथ, बैच केवल एक निष्पादन योजना सुनिश्चित करता है। उदाहरण के लिए, यदि आप एक चर बनाते हैं और बैच के बाहर इसका उपयोग करते हैं, तो उपकरण एक त्रुटि फेंक देगा। [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

तो, आपके पास कई बैच हो सकते हैं जो एक लेनदेन ब्लॉक के अंदर कई टेबल अपडेट करते हैं। जहाँ तक वे व्यक्तिगत बैच निष्पादन योजनाओं का उल्लंघन नहीं करते हैं।

इसके अलावा, एक बैच के भीतर, आपके पास कई लेनदेन ब्लॉक हो सकते हैं, जो टेबल जैसी डेटाबेस संस्थाओं के बीच डेटा अखंडता सुनिश्चित करते हैं।

कनेक्शन बस संचार हैंडशेक है जो सर्वर पर प्रश्नों को चलाने के लिए स्वीकृत करता है।

कथन एक क्वेरी बनाने वाली व्यक्तिगत लाइनें हैं। GO (T-Sql बैच विभाजक) और BEGIN TRANSACTION (नए लेनदेन ब्लॉक शुरू करने के लिए ANSI SQL) दोनों कथन हैं।


1

बैच और लेनदेन समान स्तर पर मौजूद हैं। एक बैच अन्यथा असंबद्ध SQL कमांड का एक संग्रह है। एक लेन-देन SQL कमांड का एक संग्रह है जो एक बयान के रूप में (उस डेटाबेस के अन्य सभी उपयोगकर्ताओं से संबंधित) संचालित करते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.