बैकअप इंटर्नल - SQL सर्वर में लॉकिंग और प्रदर्शन ओवरहेड के संदर्भ में - जब बैकअप कार्य चल रहा होता है तो क्या होता है?


13

MySQL के लिए मुझे पता है कि डेटाबेस SQL ​​स्टेटमेंट्स में तालिका द्वारा समर्थित टेबल है, इससे लॉकिंग होती है और यदि आप स्तंभों को अपडेट करते हैं तो आप अखंडता की समस्याओं को समाप्त कर सकते हैं।

मेरी समझ से यह Microsoft SQL सर्वर के लिए लागू नहीं होता है, लेकिन SQL सर्वर इसे कैसे संभालता है? DB को सुसंगत रखने के लिए कुछ आंतरिक फ्रीज है?

इसके अलावा, मैंने सुना है कि बैकिंग सिंगल थ्रेडेड है जिसका अर्थ है कि यह केवल एक कोर का उपयोग करता है, आपको सिंगल फाइल का बैकअप देता है। यह मानते हुए कि आपके पास एक मल्टीकोर मशीन है, उदाहरण के लिए 16 कोर, या कम से कम एक से अधिक बड़ी संख्या।

अपने व्यक्तिगत अनुभव से मुझे कभी भी बैकअप लेते समय कोई समस्या नहीं हुई, न ही लॉकिंग और न ही ओवरहेड मुद्दे, लेकिन मेरा अनुभव सीमित है। इसलिए मैं हमेशा सर्वर संपत्तियों में बैकअप संपीड़न चालू करने की सलाह देता हूं।

तो क्या होता है जब एक बैकअप नौकरी चल रही है? और विभिन्न संस्करणों के लिए महत्वपूर्ण अंतर भी हैं? उदाहरण के लिए 2008,2012 और 2014 (लाइसेंस नहीं)।


4
यह पॉल रान्डेल लेख बैकअप के बारे में जानकारी के लिए एक अच्छी शुरुआत है technet.microsoft.com/en-us/magazine/2009.07.sqlbackup.aspx
जेम्स एंडरसन

जवाबों:


9

आपके सभी बिंदु बैकअप मिथकों में शामिल हैं - पॉल रैंडल द्वारा

30-01) बैकअप संचालन अवरुद्ध होने का कारण बनता है

नहीं। बैकअप संचालन उपयोगकर्ता ऑब्जेक्ट पर ताले नहीं लेते हैं । बैकअप आई / ओ सबसिस्टम पर वास्तव में भारी रीड लोड का कारण बनता है, इसलिए ऐसा लग सकता है कि कार्यभार अवरुद्ध हो रहा है, लेकिन यह वास्तव में नहीं है। इसे अभी धीमा किया जा रहा है। एक विशेष मामला है जहां एक बैकअप जिसे बल्क-लॉगेड extents को चुनना पड़ता है, एक फ़ाइल लॉक लेगा जो एक चेकपॉइंट ऑपरेशन को ब्लॉक कर सकता है - लेकिन डीएमएल कभी भी अवरुद्ध नहीं होता है।

इसके अलावा, मैंने सुना है कि बैकिंग सिंगल थ्रेडेड है जिसका अर्थ है कि यह केवल एक कोर का उपयोग करता है, आपको सिंगल फाइल का बैकअप देता है।

किसी एकल फ़ाइल या डिवाइस पर किए जाने वाले बैकअप में 1 लेखक थ्रेड का उपयोग किया जाएगा। इसलिए यदि आप एक से अधिक फ़ाइलों / उपकरणों का बैकअप ले रहे हैं (तो कई .bak फ़ाइलों का) एक लेखक प्रति फ़ाइल / डिवाइस होगा।

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

चेक

  1. SQL सर्वर 2008 Microsoft प्रमाणित मास्टर (MCM) रेडीनेस वीडियो विशेष रूप से बैकअप इंटर्नल्स।
  2. बैकअप इंटर्नल्स पर नज़र डालें और बैकअप कैसे ट्रैक करें और थ्रूपुट को पुनर्स्थापित करें (भाग 1) - द्वारा: जोनाथन केहियास
  3. बैकअप इंटर्नल्स पर नज़र डालें और बैकअप कैसे ट्रैक करें और थ्रूपुट को पुनर्स्थापित करें (भाग 2) - द्वारा: जोनाथन केहियास

7

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

इसके अलावा, मैंने सुना है कि बैकिंग सिंगल थ्रेडेड है जिसका अर्थ है कि यह केवल एक कोर का उपयोग करता है, आपको सिंगल फाइल का बैकअप देता है। यह मानते हुए कि आपके पास एक मल्टीकोर मशीन है, उदाहरण के लिए 16 कोर, या कम से कम एक से अधिक बड़ी संख्या।

बैकअप ऑपरेशन, can use parallelismलेकिन याद रखें कि यह SQL सर्वर में ऑप्टिमाइज़र द्वारा संचालित समानांतरवाद नहीं है, जिसमें बैकअप शामिल है जहाँ से बैकअप को डेटा फ़ाइल को पढ़ना है और जहाँ बैकअप डेटा फ़ाइल और बैकअप फ़ाइलों की मात्रा लिखता है।

MAXDOPSQL सर्वर बैकअप लेते समय आप संकेत का उपयोग नहीं कर सकते

आप सरल TSQL बैकअप ऑपरेशन के लिए SSMS में निष्पादन योजना नहीं बना सकते हैं।

SQL सर्वर में क्वेरी ऑप्टिमाइज़र द्वारा संचालित समानता मूल रूप से शामिल ऑपरेटरों के लिए है (वास्तव में इसकी अधिक जटिल लेकिन सरलता के लिए आप इसे ले सकते हैं) क्योंकि बैकअप ऑपरेशन में कोई ऑपरेटर शामिल नहीं है क्योंकि यह ऑप्टिमाइज़र द्वारा संचालित समानता का उपयोग नहीं कर सकता है।

मैंने बैकअप और समानता के बारे में Technet Wiki पर एक लेख लिखा था जहाँ मैंने SQL Server बैकअप के दौरान समानता की व्याख्या करने के लिए सरल उदाहरणों का उपयोग किया था। इसके बाद निष्कर्ष निकला

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

  2. यहां तक ​​कि अगर आप एक ही ड्राइव पर बैकअप की कई प्रतियाँ डंप कर रहे हैं, तो हमारे पास एक थ्रेड प्रति बैकअप फ़ाइल डंप होगी।

  3. बैकअप से संबंधित समानता धारियों से संबंधित है। प्रत्येक स्ट्रिप को अपने स्वयं के श्रमिक धागे मिलते हैं और यह वास्तव में बैकअप का एकमात्र हिस्सा है / पुनर्स्थापित करता है कि किसी को समानांतर संचालन के रूप में माना जाना चाहिए।

  4. समानता की अधिकतम डिग्री का बैकअप संचालन पर कोई प्रभाव नहीं पड़ता है।

मुझे इस पर कुछ विशेषज्ञ की राय पॉल और बॉब डोर से मिली।

तो क्या होता है जब एक बैकअप नौकरी चल रही है? और विभिन्न संस्करणों के लिए महत्वपूर्ण अंतर भी हैं? उदाहरण के लिए 2008,2012 और 2014 (लाइसेंस नहीं)।

मैं आपको बॉब डोरर के इस ब्लॉग को पढ़ने की सलाह दूंगा । कुछ महत्वपूर्ण बिंदुओं पर उन्होंने जोर दिया

  1. जब एक बैकअप शुरू होता है तो यह बफर पूल के बाहर मेमोरी से आवंटित बफ़र्स की एक श्रृंखला बनाता है। लक्ष्य आमतौर पर प्रत्येक बफर के लिए 4MB होता है जिसके परिणामस्वरूप लगभग 4 से 8 बफ़र्स होते हैं। गणना के बारे में विवरण यहां स्थित है: http://support.microsoft.com/kb/904804/en-us

  2. बफ़र्स को मुफ्त और डेटा कतारों के बीच परिवर्तित किया जाता है। पाठक एक मुफ्त बफर खींचता है, इसे डेटा से भरता है और इसे डेटा कतार पर रखता है। लेखक (ओं) को डेटा कतार से भरे हुए डेटा बफ़र्स खींचते हैं, बफर की प्रक्रिया करते हैं और इसे मुफ्त सूची में वापस करते हैं।

  3. आपको प्रति बैकअप डिवाइस पर एक लेखक मिलता है, प्रत्येक डेटा कतार से पुनर्प्राप्त होता है। तो चार (4) डिस्क विनिर्देशों के साथ एक बैकअप कमांड में चार लेखक और एक पाठक होंगे। पाठक async I / O का उपयोग करता है ताकि यह लेखकों के साथ बना रह सके।

आप सक्षम कर सकते हैं trace flags 3213 and 3605, दोनों अनिर्धारित हैं इसलिए कृपया परीक्षण पर्यावरण पर इसका उपयोग करें, और देखें कि SQL सर्वर त्रुटि में क्या दिलचस्प संदेश डंप किया गया है। नीचे कुछ दिखाई देगा

Memory limit: 249MB
BufferCount:                7
Sets Of Buffers:            1
MaxTransferSize:            1024 KB
Min MaxTransferSize:        64 KB
Total buffer space:         7 MB
Tabular data device count:  1
Fulltext data device count: 0
Filestream device count:    0
TXF device count:           0
Filesystem i/o alignment:   512
Media Buffer count:            7
Media Buffer size:          1024KB

मुझे विभिन्न संस्करणों के लिए बैकअप कोड में किसी भी महत्वपूर्ण बदलाव के बारे में पता नहीं है, ऐसी चीजों का दस्तावेजीकरण नहीं किया गया है। मैं केवल SQL Server 2012 SP1 Cumulative Update 2,बैकअप सक्षम करने और TSSQL या SMO का उपयोग करते हुए SQL सर्वर से Windows Azure Blob संग्रहण सेवा से शुरू किए गए एन्हांसमेंट के बारे में जानता हूं । यहां पढ़ें


4

मूल रूप से, SQL सर्वर डिस्क पर सभी पृष्ठों की एक गंदा प्रतिलिपि बनाता है। यदि समवर्ती गतिविधि हो या पहले से बिना जांच की गई गतिविधि हो तो वे पृष्ठ असंगत हैं।

फिर, SQL सर्वर लेन-देन लॉग के आवश्यक भाग को भी कॉपी करता है जो कि नवीनतम तारीखों के पन्नों को नवीनतम संस्करण में लाने और सब कुछ बहाल करने के लिए संगत बनाने के लिए आवश्यक है।

मैं बैकअप ऑपरेशन के बहु-थ्रेडिनेस से बात नहीं कर सकता। मुझे उम्मीद है कि यह समानांतर हो जाएगा। 10GB / सेकंड IO सबसिस्टम पर आप 10TB डेटाबेस का बैकअप कैसे ले सकते हैं?


उत्तर के लिए धन्यवाद, लेकिन कुछ चीजें स्पष्ट नहीं हैं। यदि मैंने रिकवरी मॉडल को बैकअप जॉब के दौरान ट्रंकट जैसे सरल या रन स्टेटमेंट में सेट किया है तो क्या होगा। इसका मतलब यह नहीं है कि SQL सर्वर इसे एक सुसंगत स्थिति में नहीं ला सकता है?
रयॉफकमंड

बैकअप के दौरान प्रभावी लॉग मॉडल भरा हुआ है। SQL सर्वर को हर चीज को रोल करने में सक्षम होना चाहिए, भले ही आप SIMPLE चाहते हों। ट्रंकिंग टेबल एक लॉग और ट्रांसेक्स्ड ऑपरेशन है, इसमें कोई समस्या नहीं है। डीडीएल ट्रांजेक्शनल है।
usr
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.