SQL सर्वर लॉग फ़ाइल को सिकोड़ना प्रदर्शन को कैसे प्रभावित करता है?


19

मेरे पास SQL ​​Server 2008 डेटाबेस है जिसमें आकार में कुछ 2GB की डेटा फ़ाइल है, लेकिन लॉग फ़ाइल 8GB से अधिक है। 2008 से पहले के डेटाबेस के साथ मैं 'बैकअप लॉग' और TRUNCATE_ONLYविकल्प का उपयोग कर सकता था, लेकिन यह अब 2008 और बाद के डेटाबेस के साथ उपलब्ध नहीं है।

मेरे पास एक स्क्रिप्ट है जो लॉग फ़ाइल को काटती है:

USE [MyDatabase]
GO
ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
DBCC shrinkfile('MyDatabase_log', 1)
ALTER DATABASE [MyDatabase] SET RECOVERY FULL WITH NO_WAIT
GO

यह लॉग फ़ाइल को पूरी तरह से काट देता है, लेकिन मेरा सवाल यह है: क्या यह प्रदर्शन को प्रभावित करता है?

मैं दो पूर्ण बैकअप दैनिक रूप से करता हूं इसलिए लॉग को वास्तव में आवश्यक नहीं होना चाहिए जहां तक ​​डेटा रोल-फ़ॉरवर्ड का संबंध है।

जवाबों:


26

मैं वास्तव में पॉल एस। रैंडल द्वारा उचित लेनदेन लॉग आकार प्रबंधन के महत्व को पढ़ने की सलाह देता हूं ।

क्विंटेसन यह है कि लेन-देन लॉग हैंडलिंग के केवल दो ही अच्छे तरीके हैं :

  1. या तो नियमित रूप से लॉग फ़ाइल बैकअप के साथ जाएं और लॉग-फाइल प्रत्येक लॉग बैकअप के बाद उसका स्थान फिर से उपयोग करेगा और अनिश्चित काल तक नहीं बढ़ेगा, या

  2. SIMPLE रिकवरी मॉडल का उपयोग करें और आपको अपने लॉग-फाइल के आकार की परवाह नहीं है, जैसा कि आप नियमित रूप से पूर्ण बैकअप करते हैं।

लॉग-फ़ाइल ट्रंकेशन और प्रदर्शन के बारे में क्या चिंताएं हैं कि लॉग फ़ाइल को बढ़ाने के लिए आपको हमेशा एक प्रदर्शन हिट मिलेगा (ऊपर-लिंक ब्लॉग पोस्ट से एक उद्धरण):

यदि आप लॉग को सिकोड़ते हैं, तो यह फिर से बढ़ने जा रहा है - संभवतः वीएलएफ विखंडन का कारण बन सकता है, और निश्चित रूप से लॉग को बढ़ने के दौरान आपके कार्यभार को रोक सकता है, क्योंकि लॉग तत्काल आरंभीकरण का उपयोग नहीं कर सकता है [...]

अपडेट: DATA फ़ाइल सिकुड़ने के लिए लॉग फ़ाइल ट्रंकेशन में गलती न करें। डेटा फ़ाइल सिकुड़ना वास्तव में खराब है। देखें कि आपको विवरण के लिए अपनी डेटा फ़ाइलों को क्यों नहीं सिकोड़ना चाहिए


आपको अपनी डेटा फ़ाइलों को छोटा क्यों नहीं करना चाहिए इसका URL बदल गया है। sqlskills.com/blogs/paul/…
ripvlan

जैसा कि उचित लेन-देन लॉग आकार प्रबंधन के लिए URL है: sqlskills.com/blogs/paul/…
ripvlan

6

यदि आप किसी समस्या की स्थिति में पुनरावृत्ति करना चाहते हैं तो ठीक है, हाँ पहले दैनिक लॉग भी आवश्यक है। हम हर 15 मिनट में हमारे लेन-देन का बैकअप लेते हैं। समस्या यह है कि आप अपने लेन-देन लॉग का बैकअप नहीं ले रहे हैं और यही कारण है कि लॉग इतनी अपमानजनक रूप से बढ़ता है। यदि आप सही लेन-देन बैकअप कर रहे हैं, तो आपको लेन-देन लॉग को सिकोड़ने की आवश्यकता नहीं होनी चाहिए।

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

प्रदर्शन को प्रभावित करने के रूप में, आपके सिस्टम हार्डवेयर और उपयोग के विवरण को जाने बिना, यह कहना मुश्किल होगा।


4

लेन-देन लॉग कितनी जल्दी बढ़ता है? यदि यह तेजी से होता है, तो आप इसे कुछ भी नहीं होने के लिए इसे कम करके प्रदर्शन को प्रभावित करेंगे, क्योंकि इसे वापस बढ़ने में समय बिताना होगा। इसका मतलब यह नहीं है कि आपको इसे समय-समय पर सिकोड़ना नहीं चाहिए, लेकिन आपको आकार के मुद्दे के बारे में सोचना चाहिए, न कि केवल न्यूनतम करने के लिए। क्या विशाल हिट है? शायद नहीं, लेकिन यह सर्वर पर लोड (लेनदेन की संख्या, आदि) पर निर्भर करता है।

एक बात जो मुझे समस्याग्रस्त लगती है वह है "मैं रोजाना 2 पूर्ण बैकअप करता हूं ताकि लॉग वास्तव में जरूरी न हो जितना कि डेटा रोल-फॉरवर्ड का संबंध है।" लॉग आपके पूर्ण बैकअप के बीच बिंदुओं के लिए अत्यंत महत्वपूर्ण है। यहां तक ​​कि दिन में दो बार आपदा वसूली के लिए एक लॉग फ़ाइल की आवश्यकता को समाप्त नहीं करता है, जब तक कि यह केवल पढ़ने वाला डेटाबेस नहीं है (यदि यह था, तो आप लॉग फ़ाइल में भारी वृद्धि नहीं देखेंगे, हालांकि)।


इस आकार को प्राप्त करने में लॉग को लगभग 4-6 महीने लगते हैं, इसलिए यह बहुत तेजी से नहीं है। मैंने सोचा (शायद गलत तरीके से) कि लॉग फ़ाइल ने पूर्ण बैकअप के बीच लेनदेन किया, इसीलिए मैंने उल्लेख किया कि मैं दिन में 2 पूर्ण बैकअप करता हूं ताकि लॉग के बीच की सामग्री बहुत अधिक न हो। जैसा कि मैंने कहा, मुझे लॉग फाइल कांसेप्ट गलत लग सकता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.