2011-07-05 8 views
9

मैं समझता हूँ कि TRUNCATE का उपयोग कर एक न्यूनतम लॉग इन ऑपरेशन है और प्रत्येक रिकॉर्ड का विलोपन लॉग नहीं है, जबकि DROP लॉग संचालन को हटा दें।क्या मुझे ओवरहेड लॉगिंग से बचने के लिए टेबल ड्रॉ करने से पहले टेबल को ट्यून करना चाहिए?

इसलिए, यह सुरक्षित ग्रहण करने के लिए है कि मैं एक अपेक्षाकृत बड़े तालिका से छुटकारा पाने के लिए चाहते हैं और मैं इस रूप में जल्दी होती हैं और यथासंभव कम लॉगिंग भूमि के ऊपर मैं चाहिए TRUNCATE TABLE मैं DROP TABLE से पहले के साथ करना चाहते हैं? RECOVERY SIMPLE में ऐसा करने से कोई फर्क पड़ता है?

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

+0

मेरी स्मृति है कि चिंता का विषय विवादास्पद है अगर पुनर्प्राप्ति सेटिंग 'है SIMPLE' है। –

+0

तो क्या इसका मतलब यह है कि सिम्पल रिकवरी मॉडल का उपयोग करते समय ड्रॉप टेबल को न्यूनतम रूप से लॉग माना जाता है? मैंने उस पर कोई निश्चित जवाब नहीं देखा है। –

+2

जब तक आप अभी भी उसी लेनदेन के अंदर हैं, तब तक आप सिंपल रिकवरी में भी एक डीआरओपी वापस रोल कर सकते हैं। SQL सर्वर में बहुत से "न्यूनतम लॉग इन" ऑपरेशन नहीं हैं। –

उत्तर

10

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

क्यों यहाँ गति महत्वपूर्ण है? आप के बारे में छोड़ने के लिए कर रहे हैं यह उपयोगकर्ताओं को तालिका का उपयोग कर रहे की तरह नहीं है ...

आप इसे क्यों परीक्षण नहीं करते हैं? जब तक कि इसने कई अलग-अलग चर को कवर करने के बारे में व्यापक अध्ययन नहीं किया है, मुझे संदेह है कि आप अर्ध-शिक्षित अनुमानों से कहीं अधिक प्राप्त करने जा रहे हैं।

+0

गति एक कारक क्यों है क्योंकि यह एक उत्पादन डेटाबेस में अपग्रेड प्रक्रिया का हिस्सा है और डाउनटाइम को कम से कम रखा जाना चाहिए। ईमानदारी से, लॉग फ़ाइल वृद्धि शायद एक मुद्दा है। –

+0

पता नहीं था TRUNCATE उलटा है ... –

+1

अपग्रेड प्रक्रिया के बाद तालिका को क्यों नहीं छोड़ें? ऐसा नहीं है कि अपग्रेड खत्म होने से पहले इसे जाना आवश्यक है, इसे केवल तालिका के एक अलग संस्करण (मुझे लगता है) के साथ प्रतिस्थापित करने की आवश्यकता है। मैं कहूंगा कि इसे एक अलग स्कीमा में स्थानांतरित करें या उसका नाम बदलें, फिर जब आप प्रतीक्षा नहीं कर रहे हैं तो आप इसे बाद में छोड़ सकते हैं। –

2

मेरे अनुभव truncate में विशेष रूप से बड़े डेटा सेट के लिए, जिस तरह से ड्रॉप की तुलना में तेजी है।

संबंधित मुद्दे