लेन-देन लॉग अक्षम करें


79

ओरेकल में SQL कमांड हैं जो एक जारी कर सकता है ताकि एक लेनदेन लॉग न हो। क्या SQL Server 2008 के लिए कुछ समान है?

मेरा परिदृश्य: हमें सर्वर (देव, क्यूए, प्रोडक्ट) पर टीएक्स लॉग की आवश्यकता है, लेकिन शायद हम डेवलपर मशीनों पर उनके बिना कर सकते हैं।


1
क्या आपने अपने गणना किए गए डेटा के लिए विचारों का उपयोग करने की कोशिश की है?

अपने प्रश्न को हाईजैक करने के लिए क्षमा करें, लेकिन पार्टिकल प्रक्रिया / क्वेरी के लिए ओरेकल में लेनदेन लॉगिंग को कैसे अक्षम करें? धन्यवाद!
विक्टर

3
@ कौशिक आप इसे बेहतर पूछ रहे हैं क्योंकि यह अपना प्रश्न है।
राज मोर

" ताकि लेन-देन लॉग इन न हो " यदि आप NOLOGGEDविकल्प का जिक्र कर रहे हैं तो यह सच नहीं है ।
a_horse_with_no_name

@RajMore क्या आपने इस विषय पर कुछ और सीखा? हमारे मामले में हम बल्क लोडिंग कर रहे हैं और SIMPLE मोड द्वारा डिस्क में फावड़ा लिए जा रहे डेटा को देखकर बहुत आश्चर्य हुआ। अब मुझे समझ में क्यों लेकिन मुझे आश्चर्य है कि यदि लेनदेन लॉगिंग को समाप्त किया जा सकता है तो प्रदर्शन कितना बढ़ सकता है।
D-Klotz

जवाबों:


124

आप किसी भी परिस्थिति में SQL सर्वर में लेनदेन लॉग के बिना नहीं कर सकते। इंजन बस काम नहीं करेगा।

आप अपने पुनर्प्राप्ति मॉडल को अपने देव मशीनों पर SIMPLE के लिए सेट कर सकते हैं - जो ट्रांज़ लॉग बैकअप नहीं होने पर लेन-देन लॉग ब्लोटिंग को रोक देगा।

ALTER DATABASE MyDB SET RECOVERY SIMPLE;

18
बस एक बड़ा सिर: यह उत्तर तकनीकी रूप से 100% सही है। लेकिन यह पूरी तरह से कुछ है जिसे आप अपने DEVELOPER मशीनों पर उपयोग करना चाहते हैं या जब आप अपने डेटा का बैकअप लेने में सक्षम होने की परवाह नहीं करते हैं। अधिक जानकारी और पृष्ठभूमि के लिए sqlservervideos.com/video/log-essentials और sqlservervideos.com/video/shrinking-log-files देखें ।
माइकल के। कैंपबेल

या आरडीएस (या समकक्ष सेवाओं) पर डेटाबेस के लिए जहां बैकअप रणनीति लेनदेन लॉग के बजाय स्नैपशॉट का उपयोग करती है।
bsplosion

या डीबी दूसरे स्रोत से बनाया गया है जैसे कि ईवेंट सोर्सिंग ताकि कोई लेन-देन न हो और लॉगिंग की कोई आवश्यकता न हो
एंथनी जॉन्सटन

45

SQL सर्वर को कार्य करने के लिए लेनदेन लॉग की आवश्यकता होती है।

लेन-देन लॉग के लिए ऑपरेशन के दो तरीके हैं:

  • सरल
  • पूर्ण

में पूर्ण मोड लेनदेन लॉग आप डेटाबेस का बैकअप लेने तक बढ़ रही रखता है। में सरल मोड: लेन-देन लॉग में अंतरिक्ष हर 'पुनर्नवीनीकरण' है चेकप्वाइंट

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

लेन-देन लॉग पूरे दिन बढ़ता रहता है, और आप बस इसे जारी रखते हैं। उस रात आप अपने पूर्ण बैकअप करते हैं, और एसक्यूएल सर्वर तो ट्रंकेटस लेनदेन लॉग, अंतरिक्ष लेनदेन लॉग फ़ाइल में आवंटित पुन: उपयोग करने शुरू होता है।

यदि आप कभी भी पूर्ण डेटाबेस बैकअप करते हैं , तो आप पूर्ण पुनर्प्राप्ति मोड नहीं चाहते हैं।


यह थोड़ा गलत है: आपको लॉग इन (उम्मीद) को बैकअप करने की आवश्यकता है ताकि लेनदेन लॉग को बढ़ने से रोका जा सके। बेशक, यदि आपके पास एक खुला लेनदेन या एक बड़ा लेनदेन है, तो लॉग बढ़ेगा क्योंकि आंतरिक लॉग फ़ाइल आवंटन (वीएलएफ) का पुन: उपयोग नहीं किया जा सकता है या आपको अधिक की आवश्यकता है। यह एक क्विक ओवरव्यू है BTW, न कि चैप्टर और वर्स
gbn

1
@ आप लॉग को बढ़ने से रोकने के लिए लॉग का बैकअप नहीं लेते हैं। मेरा मतलब है कि आप करते हैं , लेकिन यह सुविधा की बात नहीं है । Microsoft ने गेम को चलाने के लिए "अपनी संपूर्ण हार्ड ड्राइव का उपभोग करने के लिए लेन-देन लॉग नहीं बनाया क्योंकि आप लॉग का बैकअप लेना भूल गए थे" । जिस कारण से लॉग बढ़ता रहता है (और फिर उसे बढ़ने से रोकने के लिए बैकअप की आवश्यकता होती है), ताकि आप बस लॉग का बैकअप ले सकें ।
इयान बोयड

44

ऊपर उल्लेख नहीं किया गया एक तीसरा पुनर्प्राप्ति मोड है। पुनर्प्राप्ति मोड अंततः निर्धारित करता है कि एलडीएफ फाइलें कितनी बड़ी हो जाती हैं और उन्हें किस प्रकार लिखा जाता है। उन मामलों में जहां आप किसी भी प्रकार के थोक आवेषण करने जा रहे हैं, आपको DB को "BULK / LOGGI" में सेट करना चाहिए। इससे थोक आवेषण तेजी के साथ आगे बढ़ता है और इसे मक्खी पर बदला जा सकता है।

ऐसा करने के लिए,

USE master ;
ALTER DATABASE model SET RECOVERY BULK_LOGGED ;

इसे वापस बदलने के लिए:

USE master ;
ALTER DATABASE model SET RECOVERY FULL ;

इस बारे में वार्तालाप को जोड़ने की भावना में कि कोई एलडीएफ क्यों नहीं चाहेगा, मैं इसे जोड़ता हूं: हम बहुआयामी मॉडलिंग करते हैं। अनिवार्य रूप से हम DB का उपयोग वैरिएबल के एक बड़े स्टोर के रूप में करते हैं जो बाहरी कार्यक्रमों का उपयोग करके थोक में संसाधित होते हैं। हमें कभी भी रोलबैक की आवश्यकता नहीं है। यदि हम सभी लॉगिंग को बदलकर प्रदर्शन को बढ़ावा दे सकते हैं, तो हम इसे दिल की धड़कन में ले जाएंगे।


1
इसके लिए धन्यवाद। हम ठीक उसी तरह से DB का उपयोग करते हैं। हम वापस रोल करने में सक्षम होने के बारे में कम परवाह नहीं कर सकते थे। शुद्ध प्रदर्शन हम सब के बाद
दान

इस परिदृश्य के लिए आप मानगो (लॉग को अक्षम करने की अनुमति देता है) या मेमोरी (रेडिस और अन्य)
टिम

2

Tx लॉग के साथ आपकी समस्या क्या है? वो बढ़ते हैं? फिर बस चेकपॉइंट विकल्प पर ट्रंकट सेट करें।

Microsoft प्रलेखन से:

SQL Server 2000 या SQL Server 2005 में, "सरल" पुनर्प्राप्ति मॉडल SQL सर्वर के पुराने संस्करणों में "चेकपॉइंट लॉग ऑन ट्रूप" के बराबर है। अगर हर बार चेकपॉइंट पर सर्वर से ट्रांजेक्शन लॉग को छोटा किया जाता है, तो यह आपको डेटाबेस रिकवरी के लिए लॉग का उपयोग करने से रोकता है। आप अपने डेटा को पुनर्स्थापित करने के लिए केवल पूर्ण डेटाबेस बैकअप का उपयोग कर सकते हैं। "सरल" पुनर्प्राप्ति मॉडल का उपयोग किए जाने पर लेन-देन लॉग के बैकअप अक्षम होते हैं।


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

1
@ तपोरी, वे एक ही बात कर रहे हैं। उन्होंने 2000 में इसका नाम बदल दिया।
zvolkov

0

यदि यह केवल अंतरिक्ष को बचाने के लिए देव मशीनों के लिए है तो बस सरल रिकवरी मोड के साथ जाएं और आप ठीक कर रहे हैं।

उत्पादन मशीनों पर हालांकि मैं दृढ़ता से अनुशंसा करता हूं कि आप डेटाबेस को पूर्ण पुनर्प्राप्ति मोड में रखें। यह सुनिश्चित करेगा कि आप जरूरत पड़ने पर समय पर वसूली कर सकते हैं।

इसके अलावा - पूर्ण पुनर्प्राप्ति मोड में डेटाबेस होने से आप लेन-देन लॉग पढ़कर आकस्मिक अपडेट को पूर्ववत कर सकते हैं और हटा सकते हैं। नीचे देखें या अधिक विवरण।

मैं SQL सर्वर 2005 में UPDATE क्वेरी कैसे रोलबैक कर सकता हूं?

Sql सर्वर 2008 में लॉग फ़ाइल (* .LDF) पढ़ें

यदि अंतरिक्ष उत्पादन मशीनों पर एक समस्या है तो बस लगातार लेन-देन लॉग बैकअप बनाएं।

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