एक डेटाबेस स्नैपशॉट एक SQL सर्वर डेटाबेस का केवल-पढ़ने के लिए दृश्य प्रदान करता है जो डेटाबेस स्नैपशॉट बनाए जाने के समय स्रोत डेटाबेस की स्थिति के साथ लेन-देन के अनुरूप होता है। डेटाबेस स्नैपशॉट का उपयोग करने के लिए कई कारण मौजूद हैं, उदाहरण के लिए मिरर किए गए डेटाबेस के विरुद्ध रिपोर्टिंग, और DBCC CHECKDB SQL सर्वर 2005 के बाद से आंतरिक डेटाबेस स्नैपशॉट का भी उपयोग करता है।
डेटाबेस स्नैपशॉट डेटाबेस स्नैपशॉट बनाए जाने के बाद से डेटाबेस में हुए सभी परिवर्तनों को वापस रोल करने की क्षमता भी प्रदान करते हैं, लेकिन डेटाबेस के लेन-देन लॉग पर एक बुरा दुष्प्रभाव के साथ, जिसके बारे में पॉल ने यहां ब्लॉग किया था।
उन चीजों में से एक जिसे आमतौर पर डेटाबेस स्नैपशॉट के आसपास नहीं माना या दिखाया जाता है, वह प्रदर्शन प्रभाव है जो स्नैपशॉट में डेटाबेस लिखने के कार्यभार के लिए होता है। SQLCAT टीम ने SQL सर्वर 2005 के लिए एक श्वेतपत्र प्रकाशित किया, I/O-गहन कार्यभार के तहत डेटाबेस स्नैपशॉट प्रदर्शन विचार, जिसने डेटाबेस स्नैपशॉट के प्रदर्शन प्रभावों की जांच की, और हाल ही में एक क्लाइंट के साथ काम करने के बाद जहां डेटाबेस स्नैपशॉट के परिणामस्वरूप प्रदर्शन समस्याएं हुईं, मैं चाहता था कि SQL सर्वर 2012 का परीक्षण करें और निर्धारित करें कि क्या सात साल बाद डेटाबेस स्नैपशॉट और तीन SQL सर्वर रिलीज़ के ओवरहेड में कोई परिवर्तन हुआ है।
परीक्षण विन्यास
लेखन कार्यभार प्रदर्शन पर डेटाबेस स्नैपशॉट के प्रभाव का परीक्षण करने के लिए, मैंने अपने डेल R720 का उपयोग एडवेंचरवर्क्स2012 डेटाबेस के बढ़े हुए संस्करण में एक नई तालिका में 1,000,000 पंक्ति सम्मिलित करते हुए किया। एडवेंचरवर्क्स2012 डेटाबेस को दो फ़्यूज़न-आईओ आईओड्राइव डुओ 640 जीबी एसएसडी में फैली 8 डेटा फ़ाइलों के साथ बनाया गया था, जो विंडोज़ में दो अलग-अलग 320 जीबी डिस्क के रूप में प्रत्येक सेटअप थे, कुल 4 डिस्क पेश करते थे। कॉन्फ़िगरेशन की व्याख्या को सरल बनाने के लिए, इन परीक्षणों के लिए उपयोग किए गए संग्रहण लेआउट को नीचे दी गई तालिका में दिखाया गया है:
डिस्क | कॉन्फ़िगरेशन | उपयोग |
---|---|---|
K | 15K RAID 5 - 6 डिस्क | स्नैपशॉट |
एल | Fusion-io Card2 - साइड B | लॉग फ़ाइल |
M | Fusion-io Card2 - साइड A | 4 डेटा फ़ाइलें |
N | Fusion-io Card1 - साइड A | 4 डेटा फ़ाइलें |
Q | Fusion-io Card1 - साइड B | Tempdb |
R | LSI Nytro BLP4-1600 | स्नैपशॉट |
तालिका 1 - सर्वर डिस्क लेआउट और उपयोग
डेटाबेस स्नैपशॉट के लिए भंडारण या तो iSCSI के माध्यम से जुड़े छह 15k RPM SAS ड्राइव का एक RAID-5 सरणी था, या एक LSI Nytro BLP4-1600 PCI-E कार्ड था।
परीक्षण कार्यभार ने 1,000,000 पंक्ति तालिका उत्पन्न करने के लिए निम्नलिखित SELECT INTO कथन का उपयोग किया, जिसे प्रत्येक परीक्षण के बीच छोड़ दिया गया था।
SELECT TOP 1000000 * INTO tmp_SalesOrderHeader FROM Sales.SalesOrderHeaderEnlarged;
डेटाबेस स्नैपशॉट के बिना अवधि को मापने के लिए परीक्षणों का समय दिया गया था, और फिर डेटाबेस स्नैपशॉट विरल फ़ाइल में पृष्ठ परिवर्तन लिखने के कारण प्रदर्शन गिरावट को मापने के लिए प्रत्येक स्टोरेज डिवाइस पर बनाए गए डेटाबेस स्नैपशॉट के साथ अवधि। एक ही स्टोरेज डिवाइस पर दो डेटाबेस स्नैपशॉट का उपयोग करके परीक्षण भी चलाए गए ताकि यह पता लगाया जा सके कि डुप्लिकेट राइट ऑपरेशंस के लिए अतिरिक्त डेटाबेस स्नैपशॉट होने का ओवरहेड क्या हो सकता है।
परिणाम
प्रत्येक परीक्षण कॉन्फ़िगरेशन को दस बार निष्पादित किया गया था और आसान देखने के लिए मिलीसेकंड से सेकंड में परिवर्तित औसत अवधि, 0, 1, या 2 डेटाबेस स्नैपशॉट के लिए चित्र 1 में दिखाई गई है।
चित्र 1 - स्नैपशॉट अवधि
बिना डेटाबेस स्नैपशॉट के बेसलाइन परीक्षण औसतन 1.8 सेकंड में निष्पादित होते हैं, और यहां तक कि जब डेटाबेस स्नैपशॉट फ़ाइलों के लिए भंडारण प्रदर्शन के बराबर था, तब भी एक एकल डेटाबेस स्नैपशॉट का अस्तित्व डेटाबेस के लिए लेखन प्रदर्शन के लिए ओवरहेड लगाया गया था। दूसरे डेटाबेस स्नैपशॉट का ओवरहेड प्रत्येक परीक्षण में पहला डेटाबेस स्नैपशॉट होने की तुलना में कम है, हालांकि 15K RPM डिस्क में डेटाबेस के लिए दूसरे डेटाबेस स्नैपशॉट से अतिरिक्त लेखन कार्यभार को ध्यान में रखते हुए अधिक कठिन समय था।पी>
एलएसआई नाइट्रो कार्ड के प्रदर्शन ने शुरू में मुझे चौंका दिया क्योंकि यह एक पीसीआई-एक्स एसएसडी भी था। हालांकि, ग्लेन के साथ परिणामों पर चर्चा करने के बाद, उन्होंने उल्लेख किया कि ड्राइव पर अपने पिछले परीक्षणों से यादृच्छिक, कम-संपीड़न डेटा के लिए सैंडफोर्स नियंत्रक संपीड़न और धीमी लेखन प्रदर्शन। हालांकि, इसने फिर भी कताई मीडिया को आसानी से पछाड़ दिया।
परीक्षण चलाने से पहले मुझे यह जानने में दिलचस्पी थी कि परीक्षण के दौरान किस प्रकार की प्रतीक्षा होगी, इसलिए परीक्षण कॉन्फ़िगरेशन के एक भाग के रूप में, मैंने DBCC SQLPERF के साथ sys.dm_os_wait_stats को साफ़ किया और प्रत्येक परीक्षण के लिए DMV से आउटपुट को एक तालिका में चलाया। 1 या 2 डेटाबेस स्नैपशॉट के लिए चित्र 2 में दिखाए गए अनुसार एकल स्नैपशॉट कॉन्फ़िगरेशन के लिए शीर्ष प्रतीक्षा PREEMPTIVE_OS_WRITEFILE और WRITE_COMPLETION थे।
चित्र 2 - स्नैपशॉट टॉप वेट्स
दिलचस्प वस्तुओं में से एक FCB_REPLICA_WRITE प्रतीक्षा का जोड़ था जब दूसरा स्नैपशॉट बनाया गया था। एकल डेटाबेस स्नैपशॉट प्रतीक्षा परिणामों की समीक्षा करने के बाद, और परीक्षणों के कुछ दौरों को फिर से चलाने के बाद, यह प्रतीक्षा एकल स्नैपशॉट के लिए कभी नहीं होती है और केवल तब होती है जब एक से अधिक स्नैपशॉट मौजूद होते हैं और डेटाबेस स्नैपशॉट फ़ाइलों में पृष्ठों की प्रतिलिपि बनाने से जुड़े होते हैं। PREEMPTIVE_OS_WRITEFILE के लिए प्रतीक्षा समय प्रत्येक कॉन्फ़िगरेशन के लिए निष्पादन अवधि में वृद्धि के साथ-साथ रुझान की प्रतीक्षा करता है।
इन परिणामों को ध्यान में रखते हुए, प्रतीक्षा और कतार पद्धति का उपयोग करने वाले सिस्टम की समीक्षा करते समय, इस प्रतीक्षा प्रकार को उच्च मानों के साथ देखना यह जांच करने योग्य हो सकता है कि सर्वर पर किसी भी डेटाबेस के लिए डेटाबेस स्नैपशॉट मौजूद हैं या नहीं।
निष्कर्ष
डेटाबेस स्नैपशॉट का उपयोग करते समय, SQL सर्वर 2012 में भी, स्नैपशॉट के लिए विरल फ़ाइलों में डेटा पृष्ठों की प्रतिलिपि बनाने के लिए आवश्यक अतिरिक्त लेखन के साथ एक ओवरहेड जुड़ा होता है। यदि डेटाबेस स्नैपशॉट का उपयोग करना आपके सामान्य कॉन्फ़िगरेशन का एक हिस्सा है, तो मैं डेटाबेस स्नैपशॉट विरल फ़ाइलों के लिए समवर्ती I/O गतिविधि के लिए कार्यभार आवश्यकताओं को पूरा करने के लिए I/O सबसिस्टम की योजना बनाने के बारे में वास्तव में सावधान रहूंगा।
इन परीक्षणों के परिणामों से मैं लिखने के प्रदर्शन के लिए, और स्नैपशॉट रखरखाव से कम प्रदर्शन प्रभाव के लिए भी SSDs पर डेटाबेस स्नैपशॉट रखने पर विचार करूंगा।
हमेशा की तरह, आपका माइलेज भिन्न हो सकता है, और आप निश्चित रूप से किसी भी कॉन्फ़िगरेशन को उत्पादन के उपयोग में लाने से पहले उसके प्रदर्शन का परीक्षण करना चाहेंगे।