गैर-सूचीबद्ध अनुक्रमित को अलग फाइलग्रुप पर कब संग्रहीत किया जाना चाहिए?


16

मैंने सुना है कि एक अलग फाइलग्रुप और ड्राइव पर इंडेक्स को संग्रहीत करने से डेटाबेस में प्रदर्शन बढ़ जाता है क्योंकि ड्राइव को इंडेक्स और डेटा के बीच आगे और पीछे नहीं जाना पड़ता है, जिससे इंडेक्स संदर्भित होता है। मैंने यह भी सुना है कि यह एक मिथक है।

जब गैर-सूचीबद्ध अनुक्रमित को एक अलग फ़ाइलग्रुप और ड्राइव पर संग्रहीत करना उचित है? उस निष्कर्ष पर पहुंचने के लिए मुझे कौन सा परफ़ॉर्म / प्रोफाइलर सबूत मिलेगा? क्या हार्डवेयर निर्णय में एक भूमिका निभाता है (क्या एक RAID / SAN एक एकल ड्राइव पर प्रयोग किया जाता है)?

जवाबों:


10

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

यदि आप अपने सिस्टम से बेहतर प्रदर्शन प्राप्त करना चाहते हैं, तो आप ऐसे परिदृश्य का उपयोग करेंगे, बशर्ते आपके पास डिस्क हों। अपने परफ़ॉर्मेंस काउंटर आप इस्तेमाल कर सकते हैं के लिए Physical Disk – Avg. Disk sec/Read, Physical Disk – Avg. Disk sec/Write, Physical Disk – Disk Reads/sec, Physical Disk – Disk Writes/secसे पहले और अपने बदलावों की तुलना के बाद एक है।


1
अगर दो अलग-अलग भौतिक डिस्क के बजाय अगर मैं किसी तरह से दो अलग-अलग डिस्क ड्राइवों पर अनुक्रमित और डेटा का प्रबंधन करता हूं, जैसे कि D: \ और E: \ एक ही हार्ड डिस्क पर मौजूद है, तो क्या यह मुझे कुछ प्रदर्शन को बढ़ावा देगा अगर मैं पढ़ने से संबंधित विवाद पर विचार करूं हार्ड डिस्क भंडारण?
RBT

5

यह निश्चित रूप से सच है कि विभिन्न ड्राइव्स के बीच आपके एक साथ I / O फैलने से प्रदर्शन बढ़ेगा - यह कोई मिथक नहीं है। यह एक मिथक है कि इसे दो बार करने से प्रदर्शन में फिर से सुधार होगा।

यदि आप SAME करते हैं , तो अपने ऐरे को दो भागों में विभाजित करना और एक पर टेबल्स और दूसरे पर टेबल्स लगाना समय की बर्बादी है।


मैं सहमत हूं, लेकिन मैं यह नहीं मानता कि यह वही है जो वह पूछ रहा था।
NTDLS

प्रश्न पूछा गया: "क्या हार्डवेयर निर्णय में एक भूमिका निभाता है (चाहे एक RAID / SAN एक एकल ड्राइव पर प्रयोग किया जाता है)?"। मेरा जवाब मूल रूप से है: यदि आप RAID करते हैं, तो अनुक्रमित और तालिकाओं को विभाजित करने से परेशान न हों। जो कहना है कि आपको निश्चित रूप से नहीं करना चाहिए भले ही आपके पास RAID न हो ...
जैक कहते हैं कि topanswers.xyz की कोशिश करें

5

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

संदर्भ: http://weblogs.sqlteam.com/dang/archive/2008/08/01/Are-you-a-DBA-Monkey.aspx

आपको पहले प्रश्न पूछना चाहिए। आपको ऐसा करने की आवश्यकता क्यों है?

  1. क्या आप अनुक्रमित को शामिल करके बैकअप के प्रदर्शन में सुधार नहीं कर रहे हैं?
  2. क्या आप इन अनुक्रमणिकाओं को पढ़ने और लिखने के प्रदर्शन में सुधार करना चाहते हैं?
  3. क्या आप अंतर्निहित वस्तुओं की नियुक्ति की बेहतर प्रबंधन क्षमता के लिए ऐसा कर रहे हैं?
  4. क्या आपके पास प्रदर्शन के लिए अलग-अलग मात्रा में डेटा की जरूरत है?
  5. क्या आप प्रदर्शन को बेहतर बनाने के लिए गैर-संकुलित अनुक्रमित के लिए SSD का उपयोग करना चाहते हैं ...

मैंने इस कार्य को उपरोक्त सूची में # 5 की आवश्यकता का समर्थन करने के लिए देखा और यह मेरे लिए एक अच्छे प्रस्ताव की तरह प्रतीत होता है, हालांकि हमने अभी तक उस पर कार्रवाई नहीं की है।

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


मुझे डैन का लेख :-) पसंद है। मुझे लगता है कि यह पुराने कॉर्पोरेट मानकों को आयात करने के लिए हम सभी के लिए होता है और कुछ समय में यह सवाल है कि यह उपयोगिता है।
मरिअन

1

मैं आपको इस आइटम के बारे में अपना व्यक्तिगत अनुभव बताऊंगा। नॉन क्लस्टर्ड इंडेक्स को एक अलग फाइलग्रुप पर स्टोर किया जाना चाहिए, जब वर्तमान डिस्क ड्राइव आवश्यक स्थान के लिए पर्याप्त बड़ा नहीं है :-)। आप इसके बारे में हंस सकते हैं .. लेकिन ऐसा होता है।

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

प्रदर्शन के बारे में हमने इस कदम के बाद कुछ भी सामान्य से बाहर नहीं देखा। लेकिन यह एक बड़ा SAN स्टोरेज बॉक्स है जहाँ सब कुछ एक साथ रखा जाता है :-)।


1

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

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

अस्थायी हार्डवेयर के साथ गैर-पीक घंटों के दौरान समान हार्डवेयर के साथ या (केवल अगर एक माध्यमिक सर्वर एक विकल्प नहीं है) परीक्षण सर्वर पर कुछ बेंच मार्किंग करें। ऊपर Sakaar द्वारा DBA-Monkey लिंक विचार के लिए अच्छा भोजन है।

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