Database
 sql >> डेटाबेस >  >> RDS >> Database

एसएसआईएस का उपयोग करके ईटीएल प्रदर्शन में सुधार करने के लिए शीर्ष 10 तरीके

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

SSIS सीखें और आज ही अपना निःशुल्क परीक्षण शुरू करें!

SQL सर्वर इंटीग्रेशन सर्विसेज (SSIS) ETL परिवार में एक उपकरण है जो एंटरप्राइज़ डेटा वेयरहाउस के विकास और प्रबंधन के लिए उपयोगी है। किसी भी आर्किटेक्ट या डीबीए के लिए बड़ी मात्रा में डेटा का प्रबंधन करते समय डेटा वेयरहाउस अपने स्वयं के लक्षण वर्णन द्वारा बड़ी मात्रा में डेटा पर काम करता है और प्रदर्शन एक बड़ी चुनौती है।

ETL सुधार विचार

आज, मैं चर्चा करूंगा कि आप कितनी आसानी से ETL के प्रदर्शन में सुधार कर सकते हैं या SSIS की मदद से एक उच्च प्रदर्शन करने वाला ETL सिस्टम डिज़ाइन कर सकते हैं। बेहतर समझ के लिए, मैं दस विधियों को दो अलग-अलग श्रेणियों में विभाजित करूंगा; पहला, एसएसआईएस पैकेज डिजाइन समय विचार और दूसरा एसएसआईएस पैकेज में उपलब्ध घटकों के विभिन्न संपत्ति मूल्यों को कॉन्फ़िगर करना।

एसएसआईएस पैकेज डिजाइन-समय के विचार

# 1 समानांतर में डेटा निकालें:एसएसआईएस नियंत्रण प्रवाह में अनुक्रम कंटेनरों का उपयोग करके समानांतर में डेटा खींचने का तरीका प्रदान करता है। आप एक पैकेज को इस तरह से डिज़ाइन कर सकते हैं कि यह गैर-निर्भर तालिकाओं या समानांतर में फ़ाइलों से डेटा खींच सके, जो समग्र ईटीएल निष्पादन समय को कम करने में मदद करेगा।

# 2 आवश्यक डेटा निकालें:किसी भी तालिका या फ़ाइल से केवल आवश्यक डेटा सेट करें। आपको स्रोत पर उपलब्ध हर चीज को अभी के लिए खींचने की प्रवृत्ति से बचने की जरूरत है जिसका आप भविष्य में उपयोग करेंगे; यह नेटवर्क बैंडविड्थ को खा जाता है, सिस्टम संसाधनों (I/O और CPU) की खपत करता है, अतिरिक्त संग्रहण की आवश्यकता होती है, और यह ETL सिस्टम के समग्र प्रदर्शन को खराब करता है।

यदि आपका ईटीएल सिस्टम वास्तव में प्रकृति में गतिशील है और आपकी आवश्यकताएं बार-बार बदलती हैं, तो अन्य डिजाइन दृष्टिकोणों पर विचार करना बेहतर होगा, जैसे मेटा डेटा संचालित ईटीएल, आदि। एक ही समय में सब कुछ खींचने के लिए डिज़ाइन के बजाय।

#3 अतुल्यकालिक परिवर्तन घटकों के उपयोग से बचें:एसएसआईएस ईटीएल निष्पादन के दौरान जटिल कार्यों को प्राप्त करने के लिए परिवर्तन घटकों के एक सेट के साथ एक समृद्ध उपकरण है, लेकिन साथ ही अगर इन घटकों का ठीक से उपयोग नहीं किया जा रहा है तो यह आपको बहुत महंगा पड़ता है।

SSIS में रूपांतरण घटकों की दो श्रेणियां उपलब्ध हैं:सिंक्रोनस और एसिंक्रोनस

सिंक्रोनस ट्रांसफॉर्मेशन वे घटक हैं जो प्रत्येक पंक्ति को संसाधित करते हैं और अगले घटक / गंतव्य तक नीचे धकेलते हैं, यह आवंटित बफर मेमोरी का उपयोग करता है और अतिरिक्त मेमोरी की आवश्यकता नहीं होती है क्योंकि यह इनपुट / आउटपुट डेटा पंक्ति के बीच सीधा संबंध है जो पूरी तरह से आवंटित मेमोरी में फिट बैठता है। लुकअप, व्युत्पन्न कॉलम और डेटा रूपांतरण आदि जैसे घटक इस श्रेणी में आते हैं।

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

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

#4 ईवेंट हैंडलर में ईवेंट का इष्टतम उपयोग:पैकेज निष्पादन प्रगति को ट्रैक करने या किसी विशिष्ट ईवेंट पर कोई अन्य उपयुक्त कार्रवाई करने के लिए, SSIS ईवेंट का एक सेट प्रदान करता है। ईवेंट बहुत उपयोगी होते हैं लेकिन ईवेंट के अधिक उपयोग से ETL निष्पादन पर अतिरिक्त खर्च होगा।

यहां, आपको SSIS पैकेज में किसी ईवेंट को सक्षम करने से पहले सभी लक्षणों को सत्यापित करने की आवश्यकता है।

#5 डेटा की एक बड़ी मात्रा पर काम करते समय गंतव्य तालिका स्कीमा से अवगत होने की आवश्यकता है। आपको दो बार सोचने की जरूरत है जब आपको स्रोत से बड़ी मात्रा में डेटा खींचने और इसे डेटा वेयरहाउस या डेटा मार्ट में धकेलने की आवश्यकता होती है। जब आप इन्सर्ट, अपडेट और डिलीट (डीएमएल) ऑपरेशंस के संयोजन के साथ विशाल डेटा को गंतव्य में धकेलने का प्रयास करते हैं, तो आप प्रदर्शन के मुद्दों को देख सकते हैं, क्योंकि एक मौका हो सकता है कि गंतव्य तालिका में क्लस्टर या गैर-क्लस्टर इंडेक्स होंगे, जिसके कारण हो सकता है DML संचालन के कारण बहुत सारा डेटा मेमोरी में शफ़ल हो रहा है।

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

घटक गुण कॉन्फ़िगर करें

#6 MaxConcurrentExecutables . को कॉन्फ़िगर करके किसी कार्य के समानांतर निष्पादन को नियंत्रित करें और इंजन थ्रेड संपत्ति। एसएसआईएस पैकेज और डेटा प्रवाह कार्यों में एक कार्य के समानांतर निष्पादन को नियंत्रित करने के लिए एक संपत्ति है:MaxConcurrentExecutables पैकेज स्तर की संपत्ति है और इसका डिफ़ॉल्ट मान -1 . है , जिसका अर्थ है कि निष्पादित किए जा सकने वाले कार्यों की अधिकतम संख्या मशीन प्लस दो पर प्रोसेसर की कुल संख्या के बराबर है;


पैकेज

इंजन थ्रेड्स डेटा प्रवाह कार्य स्तर की संपत्ति है और इसका डिफ़ॉल्ट मान 10 है, जो डेटा प्रवाह कार्य को निष्पादित करने के लिए बनाए जा सकने वाले थ्रेड्स की कुल संख्या को निर्दिष्ट करता है।


डेटा प्रवाह कार्य

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

#7 OLEDB डेस्टिनेशन में डेटा एक्सेस मोड विकल्प को कॉन्फ़िगर करें। SSIS डेटा फ्लो टास्क में हम OLEDB डेस्टिनेशन पा सकते हैं, जो डेटा एक्सेस मोड के तहत डेटा को डेस्टिनेशन टेबल में पुश करने के लिए कुछ विकल्प प्रदान करता है; सबसे पहले, "तालिका या दृश्य" विकल्प, जो एक समय में एक पंक्ति सम्मिलित करता है; दूसरा, "टेबल या व्यू फास्ट लोड" विकल्प, जो गंतव्य तालिका में डेटा भेजने के लिए आंतरिक रूप से बल्क इंसर्ट स्टेटमेंट का उपयोग करता है, जो हमेशा अन्य विकल्पों की तुलना में बेहतर प्रदर्शन प्रदान करता है। एक बार जब आप "फास्ट लोड" विकल्प चुनते हैं तो यह आपको डेटा पुश ऑपरेशन के दौरान गंतव्य तालिका व्यवहार को प्रबंधित करने के लिए अधिक नियंत्रण देता है, जैसे कि पहचान रखें, नल रखें, टेबल लॉक और बाधाओं की जांच करें।


OLE DB गंतव्य संपादक

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

#8, प्रति बैच पंक्तियों को कॉन्फ़िगर करें और OLEDB गंतव्य में अधिकतम सम्मिलित करें प्रतिबद्ध आकार। ये दो सेटिंग्स tempdb और लेनदेन लॉग के प्रदर्शन को नियंत्रित करने के लिए महत्वपूर्ण हैं क्योंकि इन गुणों के दिए गए डिफ़ॉल्ट मानों के साथ यह डेटा को एक बैच और एक लेनदेन के तहत गंतव्य तालिका में धकेल देगा। इसके लिए tembdb और ट्रांजेक्शन लॉग के अत्यधिक उपयोग की आवश्यकता होगी, जो मेमोरी और डिस्क स्टोरेज की अत्यधिक खपत के कारण ETL प्रदर्शन समस्या में बदल जाता है।


OLE DB गंतव्य संपादक

ईटीएल प्रदर्शन में सुधार करने के लिए आप अनुमानित डेटा वॉल्यूम के आधार पर दोनों गुणों में एक सकारात्मक पूर्णांक मान डाल सकते हैं, जो डेटा के पूरे समूह को कई बैचों में विभाजित करने में मदद करेगा, और बैच में डेटा फिर से गंतव्य तालिका में प्रतिबद्ध हो सकता है। निर्दिष्ट मूल्य। यह tempdb और लेन-देन लॉग के अत्यधिक उपयोग से बच जाएगा, जो ETL के प्रदर्शन को बेहतर बनाने में मदद करेगा।

#9 डेटा प्रवाह कार्य में SQL सर्वर गंतव्य का उपयोग। जब आप स्थानीय SQL सर्वर डेटाबेस में डेटा को पुश करना चाहते हैं, तो SQL सर्वर गंतव्य का उपयोग करने की अत्यधिक अनुशंसा की जाती है, क्योंकि यह अन्य विकल्प की सीमाओं को पार करने के लिए कई लाभ प्रदान करता है, जो आपको ETL प्रदर्शन को बेहतर बनाने में मदद करता है। उदाहरण के लिए, यह बल्क इंसर्ट फीचर का उपयोग करता है जो SQL सर्वर में बनाया गया है लेकिन यह आपको गंतव्य तालिका में डेटा लोड करने से पहले परिवर्तन लागू करने का विकल्प देता है। इसके अलावा, यह आपको डेटा लोड करते समय ट्रिगर होने वाले ट्रिगर को सक्षम/अक्षम करने का विकल्प देता है, जो ईटीएल ओवरहेड को कम करने में भी मदद करता है।


SQL सर्वर गंतव्य डेटा प्रवाह घटक

# 10 निहित टाइपकास्ट से बचें। जब डेटा किसी फ़्लैट फ़ाइल से आता है, तो फ़्लैट फ़ाइल कनेक्शन प्रबंधक सभी स्तंभों को एक स्ट्रिंग (DS_STR) डेटा प्रकार के रूप में मानता है, जिसमें संख्यात्मक कॉलम भी शामिल हैं। जैसा कि आप जानते हैं, SSIS डेटा के पूरे सेट को संग्रहीत करने के लिए बफर मेमोरी का उपयोग करता है और डेटा को गंतव्य तालिका में धकेलने से पहले आवश्यक परिवर्तन लागू करता है। अब, जब सभी कॉलम स्ट्रिंग डेटा प्रकार हैं, तो उसे बफ़र में अधिक स्थान की आवश्यकता होगी, जिससे ETL प्रदर्शन कम हो जाएगा।

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

ईटीएल प्रदर्शन सुधारों का सारांश

इस लेख में हमने पता लगाया कि ईटीएल के प्रदर्शन को किसी भी समय कितनी आसानी से नियंत्रित किया जा सकता है। ETL प्रदर्शन को बेहतर बनाने के लिए ये 10 सामान्य तरीके हैं। विभिन्न परिदृश्यों के आधार पर और भी तरीके हो सकते हैं जिनके माध्यम से प्रदर्शन में सुधार किया जा सकता है।

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑफ़सेट / फ़ेच के साथ पेजिनेशन:एक बेहतर तरीका

  2. घुटना-झटका प्रदर्शन ट्यूनिंग:अस्थायी तालिकाओं का गलत उपयोग

  3. एन्क्रिप्शन के साथ के आंतरिक

  4. JPA के साथ दृढ़ता के लिए Java समर्थन को समझना

  5. ऑडिट लॉगिंग के लिए डेटाबेस डिजाइन