बैकअप से SQL डेटाबेस को पुनर्स्थापित करने से इसके अनुक्रमों का पुनर्निर्माण होता है?


10

बैकअप से SQL डेटाबेस को पुनर्स्थापित करने से खरोंच से अपनी तालिकाओं और अनुक्रमितों का पुनर्निर्माण होता है? या क्या यह उसी आंतरिक भौतिक क्रम में रखता है जो बैकअप के समय था?

हम एसक्यूएल 2000 का उपयोग क्वेस्ट लाइटस्पीड कंप्रेस्ड बैकअप के साथ कर रहे हैं, अगर इससे कोई फर्क पड़ता है।

जवाबों:


16

जो भी बैकअप सॉफ्टवेयर का उपयोग किया जा रहा है, उसका उत्तर नहीं है।

बैकअप एक फिजिकल ऑपरेशन है, न कि लॉजिकल ऑपरेशन। यह सभी विस्तारित पृष्ठ वाले पृष्ठों को पढ़ता है (भले ही 8-पृष्ठ की सीमा से केवल एक पृष्ठ आवंटित किया जाता है, यह संपूर्ण 64K सीमा का बैकअप देगा), और यह इसे भौतिक क्रम में करता है।

एक पुनर्स्थापना एक भौतिक ऑपरेशन है, न कि तार्किक ऑपरेशन। यह डेटा फ़ाइलों में उनके सही स्थानों में विस्तार को नीचे देता है।

एक सूचकांक (या ऐसा कुछ भी) का पुनर्निर्माण एक तार्किक ऑपरेशन है, जिसे लॉग करना होगा। बफ़र पूल से गुज़रते हुए, बिना डेटा फ़ाइलों को सीधे बैकअप और रीस्टोर किए, जो कि ऐसा नहीं किया जा सकता है। यह नहीं किया जा सकता है एक और कारण यह है कि बैकअप और पुनर्स्थापना को इस बात की कोई समझ नहीं है कि डेटा बैकअप में क्या निहित है।

हालांकि, इसका मुख्य कारण यह नहीं हो सकता है कि पुनर्स्थापना कार्रवाई के दौरान घूमने वाले पृष्ठ बी-ट्री पॉइंटर्स को तोड़ दें। यदि पृष्ठ A, पृष्ठ B की ओर इंगित करता है, लेकिन पृष्ठ A को पुनर्स्थापना प्रक्रिया द्वारा स्थानांतरित किया जाता है, तो पृष्ठ B को पृष्ठ A को इंगित करने के लिए कैसे अपडेट किया जाता है? यदि इसे तुरंत अपडेट किया जाता है, तो इसे बाकी की पुनर्स्थापना प्रक्रिया द्वारा अधिलेखित किया जा सकता है। यदि यह स्थगित-अद्यतित है, तो क्या होगा यदि पुनर्स्थापना प्रक्रिया ने पृष्ठ A, या पृष्ठ B को हटाए गए कुछ हस्तांतरण लॉग को पुनर्स्थापित किया? यह बस नहीं किया जा सकता है।

निचला रेखा - बैकअप और पुनर्स्थापना भौतिक ऑपरेशन हैं जो डेटा को कभी नहीं बदलते हैं।

उम्मीद है की यह मदद करेगा!

पुनश्च हालांकि यह सीधे इस प्रश्न को संबोधित नहीं करता है, मैंने जुलाई टेकनेट पत्रिका के लिए लिखे गए लेख की जांच की, जिसमें बताया गया है कि विभिन्न बैकअप आंतरिक रूप से कैसे काम करते हैं: SQL सर्वर बैकअप को समझना । सितंबर माह की पत्रिका में पुनर्स्थापना को समझने की श्रृंखला में अगला भाग होगा।


2
मुझे इस तथ्य से प्यार है कि आपने समझाया कि अनुक्रमण एक तार्किक ऑपरेशन है।
जिम बी

आह, यह समझ में आता है। बैकअप 64k फिजिकल एक्सटेंशन्स को पकड़ता है, न कि 8k डेटा पेजों को।
ब्रैड

यह बकवास है। बैकअप ऑपरेशंस अक्सर उन डेटा को कंप्रेस करते हैं जो वे वापस करते हैं, और यह "परिवर्तन" का प्रकार है जिसके बारे में हम बात कर रहे हैं: आखिरकार, टेबल्स से इंडेक्स को फिर से बनाया जा सकता है, वे निरर्थक डेटा हैं (बशर्ते कि स्कीमा बैकअप है , बेशक)। असली कारण डेटाबेस डेवलपर्स की ओर से आलस्य है।
जॉन

1
@ जॉन तुम क्या कह रहे हो बकवास है? यहां कहीं भी संपीड़न का उल्लेख नहीं किया गया है - बस अनुक्रमणिका का पुनर्निर्माण करना, जो किसी भी तरह से संपीड़न के समान नहीं है (जो एक पुनर्स्थापना के दौरान डेटाबेस में पृष्ठों या उनके स्थान को नहीं बदलता है, जबकि एक पुनर्निर्माण करता है)। एक पुनर्स्थापना के दौरान खरोंच से अनुक्रमणिका को फिर से स्थापित करने की तुलना में अविश्वसनीय रूप से धीमी गति से पुनर्निर्मित किया जाएगा। मुझे लगता है कि आप यहां कुछ गलत समझ रहे हैं।
पॉल रैंडल

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

6

एक मूल SQL बैकअप बैकअप फ़ाइलों का केवल एक पृष्ठ-दर-पृष्ठ डंप है, इसलिए इसका उत्तर "नहीं" है। एक क्वेस्ट लाइटस्पीड बैकअप संभावना संपीड़न संपीड़न एल्गोरिथ्म के कुछ प्रकार का उपयोग करता है, लेकिन यह अभी भी डेटा फ़ाइलों या अनुक्रमितों को "पुनर्निर्माण" नहीं करेगा, जो एक बड़े डेटाबेस पर बहुत बड़ी मात्रा में समय लगेगा।


हाँ, लेकिन इसे वैसे भी डिस्क पर हर पृष्ठ लिखना होगा। खंडित क्रम के बजाय उन्हें तार्किक क्रम में क्यों नहीं लिखा जाता? (शायद यह एक पुनर्स्थापना प्रश्न के बजाय एक बैकअप प्रश्न का अधिक है : क्या बैकअप भौतिक क्रम में या तार्किक क्रम में पृष्ठों को लिखता है?)
ब्रैडेक

यह मानते हुए कि एक उत्पाद था जिसने डेटा को सूचकांक क्रम में लिखा था, आप किस क्रम में तालिका को सहेजना चाहेंगे? आइए कहते हैं कि मेरे पास 3 कॉलम product_id, productname और कीमत के साथ एक तालिका है। अनुक्रमित क्रम में पृष्ठों को बचाने के लिए किस पर सॉर्ट करना सही कॉलम है? BTW पूरी मेज (एक क्लस्टर इंडेक्स) या प्रत्येक पंक्तियों (कंपोजिट इंडेक्स) पर अनुक्रमण से आपको रोकने के लिए कुछ भी नहीं है।
जिम बी

@ जिम बी: यह आसान है। टेबल्स को क्लस्टर इंडेक्स क्रम में सहेजा जाएगा। गैर-संकुलित सूचकांक प्रमुख क्रम में संग्रहीत किए जाएंगे। हीप्स को मूल (गैर-क्रमबद्ध) क्रम में रखा जाएगा। (हारून और पॉल ने वैध कारणों का उल्लेख किया है कि बैकअप / पुनर्स्थापना ऐसा नहीं करती है। "पसंदीदा ऑर्डर" का पता लगाने में सक्षम नहीं है। इन कारणों में से एक नहीं है। या फिर एक पूर्ण सूचकांक पुनर्निर्माण करने से एक ही समस्या होगी। )
ब्रैड

डेटा ठीक उसी भौतिक पृष्ठ क्रम में समर्थित है जिसे वह डेटाबेस फ़ाइलों में सहेजा गया है। जब डेटा को पुनर्स्थापित किया जाता है तो इसे उसी पृष्ठ क्रम में पुनर्स्थापित किया जाता है जिसमें इसे बैकअप किया गया था। SQL विभिन्न कारणों से डेटा को इधर-उधर नहीं करता है। इसमें यह भी शामिल है कि लॉग-इन और पेज चैनिंग मुद्दों को बहाल करने वाले लेन-देन के मुद्दे हो सकते हैं, न कि मल्टी-टीबी डेटाबेस पर डेटा को फेरबदल करने के लिए आवश्यक अतिरिक्त समय की भारी मात्रा का उल्लेख करने के लिए।
मर्डनी

2

बैकअप नियमित रूप से और बहुत बार किया जाता है (मुझे उम्मीद है)। तो डिजाइनरों ने सुनिश्चित किया कि बैकअप यथासंभव त्वरित है। सबसे तेज I / O क्या है? अनुक्रमिक। आप सटीक भौतिक क्रम में डिस्क से ब्लॉक पढ़ते हैं, आपके पास सबसे अच्छा प्रदर्शन है।

क्यों पृथ्वी पर डेटाबेस को हर एक रात में बोझिल यादृच्छिक I / O ऑपरेशन करना चाहिए , डिस्क के सिर को पूरे स्थान पर रौंद कर? अंतर परिमाण के दो आदेशों के आसपास होगा। इसमें कोई संभावित लाभ नहीं है।


मैं आपके समग्र बिंदु से सहमत हूं, लेकिन अंतर्निहित भंडारण विन्यास पर निर्भर करता है, यादृच्छिक I / O क्रमिक I / O (उदाहरण के लिए दर्जनों स्पैन्डल में फैले एक सैन ड्राइव) की तुलना में बदतर परिमाण के आदेश नहीं हो सकते हैं। वास्तव में, यदि हार्ड ड्राइव पर डेटा फ़ाइल खंडित है, तो "अनुक्रमिक" I / O वास्तव में अनुक्रमिक नहीं है। लेकिन पॉल के अंक वैसे भी इसे ओवरराइड करते हैं (
अपडेटिंग

0

हममम। ब्रैडसी, क्या आपने पहले फायरबर्ड / इंटरबेस के साथ काम किया है - जहां मुख्य बैकअप / पुनर्स्थापना उपयोगिता / एपीआई एसएसएमएस / ईएम के "कॉपी डेटाबेस ..." के समान है? यदि हां, तो जान लें कि MS SQL सर्वर ऐसा नहीं है।

SQLServer बैकअप एक डेटाबेस डंप है जिसे "AS-IS" बहाल किया जाता है - इसलिए यह "detach-copy-reattach for other place" ऑपरेशन के लिए एक कंजेक्टिव ऑनलाइन शॉर्टकट की तरह अधिक है। पुनर्स्थापित डेटाबेस मूल डेटाबेस फ़ाइल की लगभग एक सटीक प्रतिलिपि है (लगभग क्योंकि आप एक बहाल डेटाबेस की डेटाबेस फ़ाइलों के स्थान को बदल सकते हैं ...

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