शिपिंग लॉग करने के लिए कम से कम प्रभाव के साथ बड़ी तालिकाओं का निपटान कैसे करें?
दो अर्ध बड़ी संबंधित तालिकाओं (284,6876,609 पंक्तियाँ - 156,785,176 KB और 4,2628,162 पंक्तियाँ - 2,212,464 KB) को लॉग किए गए db में या तो शुद्ध या गिराया जाना चाहिए। शिपिंग लॉग करने के लिए प्रभाव को कम करते हुए मैं इन दो तालिकाओं का निपटान कैसे कर सकता हूं?
जवाब
यदि आप DROP
टेबल रखते हैं, तो यह कम से कम लॉग उत्पन्न करने का कारण बनेगा क्योंकि यह तुरंत इस्तेमाल किए गए स्थान पर कचरा संग्रह करने के लिए मजबूर नहीं करता है, यह केवल मूल रूप से संदर्भ को हटा देता है। आप इसी तरह से एक ही परिणाम को पूरा कर सकते हैं TRUNCATE
(हालांकि मुझे लगता है कि बड़ी तालिकाओं की तुलना में अधिक ओवरहेड हो सकता है DROP
, मुझे इस पर शोध करना होगा और तदनुसार अपना उत्तर अपडेट करना होगा)।
यह एक बहुत अच्छा लेख है जो विवरण देता है कि ऑपरेशन क्यों TRUNCATE
और कैसे DROP
लगते हैं जल्दी से और न्यूनतम लॉग उत्पन्न करते हैं, जो कि SQL सर्वर की एक विशेषता के कारण होता है जिसे आस्थगित ड्रॉप कहा जाता है ।
किसी भी तरह से, DELETE
अन्यथा से बचें जो कि लॉग का एक टन उत्पन्न करेगा जिसे लक्षित डेटाबेस पर भेजना और फिर से लागू करना होगा।
इस स्टैकऑवरफ्लो प्रश्न के पास बड़ी तालिका से डेटा को कुशलतापूर्वक हटाने के बारे में अच्छी जानकारी के साथ कई उत्तर हैं (कुछ संभवतः आपके प्रश्न से संबंधित नहीं हैं, लेकिन भविष्य के संदर्भ या समान समस्याओं वाले अन्य उपयोगकर्ताओं के लिए अच्छे हैं)।