यदि कोई लेन-देन "प्रतिबद्ध" है, तो क्या यह निश्चित रूप से सहेजा गया है?


12

किसी लेन-देन किया जाता है तो प्रतिबद्ध सफलतापूर्वक, मैं तो हो सकता है 100% यकीन है कि यह डेटाबेस के लिए और लॉग फाइल करने के लिए लिखा गया है? क्या मुझे यकीन है कि डेटा SAVED है?

आज हमारी लॉग फाइलें ड्राइव की सीमा तक पहुंच गई थीं और हमें बहुत सारी त्रुटियां मिलीं। इसके अलावा, कुछ अन्य सेवाएं दुर्घटनाग्रस्त हो गईं। हमने डिस्क बढ़ाई और सर्वर को पुनरारंभ किया।

स्टार्टअप के दौरान, सर्वर ने "डेटाबेस रिकवरी" किया - क्या मुझे यकीन है कि सब कुछ फिर से ठीक हो सकता है?


2
आप पुनर्प्राप्ति के पूरा होने के बाद त्रुटि लॉग की जांच कर सकते हैं कि कितने लेनदेन किए गए थे और कितने वापस रोल किए गए थे। इसका कोई जादूई जवाब नहीं है - अगर कोई डिस्क दुर्घटनाग्रस्त हो जाती है तो यह सब उस समय के लेनदेन की स्थिति पर निर्भर करता है।
हारून बर्ट्रेंड

1
@AaronBertrand लेकिन अगर कोई लेन-देन राज्य में "प्रतिबद्ध" है (यानी प्रतिबद्ध सफल था), तो फिर यह कैसे संभव हो सकता है कि यह वसूली के दौरान अभी भी खो जाए?
SQL पुलिस

3
@ जिओस्को: यह नहीं हो सकता। "प्रतिबद्ध" का अर्थ है कि यह डेटाबेस की लॉग फ़ाइल में है। इसके बाद इसे खोने का एकमात्र तरीका 1 या तो है) लॉग फ़ाइल को खोना इससे पहले कि डेटा फ़ाइल में भी सहेजा जाए, या 2) लॉग फ़ाइल और डेटा फ़ाइल, या 3) मानवीय त्रुटि दोनों को खो दें। ध्यान दें कि (3) आमतौर पर संभावना है।
RBarryYoung

2
@Giosco आप कैसे जानते हैं कि पूर्ण ड्राइव के समय आपके सभी लेनदेन सफलतापूर्वक किए गए थे?
हारून बर्ट्रेंड

2
संग्रहित प्रक्रिया <> लेनदेन - आपकी संग्रहीत प्रक्रिया में कई स्पष्ट लेनदेन हो सकते हैं, या केवल निहित हो सकते हैं, तर्क को पकड़ने / पकड़ने की कोशिश हो सकती है, सी # परत आदि पर लेनदेन से निपटने हो सकता है, आदि। फिर, यह मानते हुए कि कोई अपवाद नहीं = सफल प्रतिबद्ध। कंबल बयान के रूप में थोड़ा बहुत खतरनाक हो सकता है।
हारून बर्ट्रेंड

जवाबों:


16

यदि एक क्लाइंट एप्लिकेशन ने एक COMMIT जारी किया है और एक सफलता कोड वापस मिल गया है, तो लेनदेन को इंजन द्वारा टिकाऊ होने की गारंटी है। यह गारंटी है कि लेनदेन में किए गए सभी परिवर्तन क्रैश के बाद भी दिखाई देने वाले हैं। इसके अलावा वसूली यह भी गारंटी देती है कि कोई भी लेन-देन नहीं किया गया दुर्घटना के मामले में वापस रोल किया जाएगा।

अधिक जानकारी के लिए मैं ARIES पेपर पढ़ने की सलाह देता हूं ।

यदि लॉग इन स्टोरेज हार्डवेयर में दोष (भ्रष्टाचार) है तो राइट-फॉरवर्ड लॉगिंग और रिकवरी गारंटी नहीं दे सकता है। और किसी भी इंजीनियरिंग उत्पाद में दोष हो सकते हैं।

आपके आवेदन, अन्य सभी अनुप्रयोगों की तरह, दुर्घटनाओं (त्रुटियों) की उपस्थिति में सही ढंग से व्यवहार करने के लिए सावधानीपूर्वक लिखे जाने की आवश्यकता है। कोई जादू नहीं है।


यदि किसी क्लाइंट एप्लिकेशन ने एक COMMIT जारी किया है, लेकिन DB की तरफ से कोई प्रतिक्रिया प्राप्त नहीं होती है, तो क्लाइंट की ओर से समय समाप्त हो जाता है। इस बारे में क्या कहेंगे? सफलता या असफलता? किस प्रकार जांच करें?
गब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.