मुझे अपने SQL सर्वर पर SSD ड्राइव के RAID सरणी को कैसे कॉन्फ़िगर करना चाहिए?


14

मैं 48 GB RAM, 1 CPU और 8 SATA III (6GB / s) SSD ड्राइव (128 GB Crucial m4) और एक LSI MegaRAID नियंत्रक (SAS 9265-8i) के साथ SQL सर्वर बना रहा हूँ। मैं उम्मीद करता हूं कि आम तौर पर पढ़े जाने वाले काम का बोझ सबसे ज्यादा होगा। भारी लेखन गतिविधि की कुछ अवधियाँ होंगी (प्रति घंटा डेटा सिंक w / 3rd पार्टी डेटा प्रदाता - रात्रिकालीन बैकअप), लेकिन मुझे संदेह है कि विशिष्ट रीड / राइट अनुपात लगभग 90% रीड / 10% लिखते हैं।

विकल्प 1:
तार्किक ड्राइव C: - RAID 1 (2 भौतिक ड्राइव) - OS
तार्किक ड्राइव D: - RAID 10 (6 भौतिक ड्राइव) - DB फाइलें / लॉग / tempdb / backups?

या

विकल्प 2:
लॉजिकल ड्राइव C: - RAID 1 (2 भौतिक ड्राइव) - OS
लॉजिकल ड्राइव D: - RAID 1 (2 भौतिक ड्राइव) - Db फाइलें
तार्किक ड्राइव E: - RAID 1 (2 भौतिक ड्राइव) - लॉग फाइल / बैकअप?
लॉजिकल ड्राइव F: - RAID 1 (2 फिजिकल ड्राइव) - tempdb

या

विकल्प 3:
अन्य सुझाव?

मैं सोच रहा हूं कि विकल्प 1 मुझे बेहतर प्रदर्शन देगा, क्योंकि सभी DB गतिविधि को 3 ड्राइव (और सरणी में अन्य 3 के पार) में धारीदार किया जाएगा, हालांकि विकल्प 2 पारंपरिक ज्ञान की नकल करता है (जो कि मैकेनिकल पर अधिक लागू होता है SSDs से ड्राइव)। ऐसा लगता है कि स्टैक ओवरफ्लो 1 विकल्प के साथ चला गया है ।

मैं SSD के साथ अनुमान लगा रहा हूँ कि हर एक लॉजिकल ड्राइव पर हर चीज़ डालना ठीक है क्योंकि उस समय आपके सर्वर में I / O की बजाय अधिक CPU विवश है?

मेरे पास एक और सवाल यह है कि मुझे रात के बैकअप कहां रखना चाहिए? हम बैकअप को SQL सर्वर के बाकी हिस्सों को धीमा नहीं करना चाहते हैं, और मुझे लगता है कि बैकअप को उसी स्थान पर लिखने का अनुमान है क्योंकि लॉग एक अच्छा अभ्यास है क्योंकि उन दोनों मामलों में पढ़ने / लिखने का व्यवहार अनुक्रमिक लिखता है।


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

जवाबों:


9

RAID के बारे में पारंपरिक ज्ञान SSDs पर अच्छी तरह से लागू नहीं होता है। उन्हें वास्तव में स्ट्रिपिंग (RAID0) की आवश्यकता नहीं है। वे डिजाइन के द्वारा विफलताओं के लिए प्रवण हैं, लेकिन RAID-1 आमतौर पर दो कारणों से SSD के लिए सही उत्तर नहीं है: a) व्यर्थ है, SSD सरणी की क्षमता को आधा कर देता है (और वे कीमत हैं ) और 2) SSDD विफलता विशेषताओं का नेतृत्व करता है दर्पण में दोनों ड्राइव की ओर बहुत करीब अंतराल (यानी सहसंबद्ध विफलताओं) को विफल करने के लिए और इस तरह पूरे सरणी बेकार। डिफरेंशियल RAID देखें : एक लंबी चर्चा के लिए SSD विश्वसनीयता के लिए Rethinking RAID । कुछ ने SSDs के लिए RAID-6 का उपयोग करने की सिफारिश की है ।

इसके अतिरिक्त, SQL सर्वर फ़ाइल लेआउट का पारंपरिक ज्ञान SSDs पर लागू नहीं होता है। मैं आपको SSDs: हॉट एंड क्रेजी लव पर SQL देखने और इस उत्तर में बेंचमार्क लिंक पर जाने की सलाह दूंगा


अच्छा बिंदु, RAID 10 के साथ, मैं शायद सहसंबद्ध विफलताओं के लिए अधिक असुरक्षित हूं। डिफरेंशियल RAID लिंक के लिए धन्यवाद।
रॉबी

8

लॉग के अनुक्रमिक से डेटा के लिए यादृच्छिक IO पैटर्न को अलग करने का मानक तरीका बस SSDs पर लागू नहीं होता है, इसलिए मैं आपके विकल्प 1 को केवेट के साथ चुनूंगा:

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

एसएसडी का उपयोग करने वाले डेटा से लॉग को अलग करने का मुद्दा प्रदर्शन के बजाय सिस्टम के लिए आरपीओ (रिकवरी पॉइंट ऑब्जेक्टिव) का मामला है। यदि RPO मिनट में परिभाषित किया गया है तो एक साझा सरणी के साथ जाएं और हर [RPO] मिनट में लॉग बैकअप लें। यदि RPO सेकंड में परिभाषित किया गया है तो अलग-अलग सरणियों के साथ जाएं।

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


बैकअप को एक अलग मशीन में भी कॉपी किया जाता है। वे स्थानीय मशीन पर बनाए जाते हैं, इसलिए मैं प्रतिगमन / उपयोगकर्ता त्रुटि के मामले में SQL तुलना / डेटा तुलना का उपयोग कर सकता हूं और परिवर्तनों को वापस कर सकता हूं।
रॉबी

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

1

आपको विकल्प 2 का पालन करना चाहिए:

Logical Drive - RAID 1 (2 physical drives)
 1 partition C: OS
 2 partition D: backups / log files
Logical Drive E: - RAID 1 (2 physical drives) - DATA files
Logical Drive F: - RAID 1 (2 physical drives) - INDEX files
Logical Drive G: - RAID 1 (2 physical drives) - tempdb

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

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

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


6
बकवास। ये एसएसडी हैं, स्पिनर नहीं।
मार्क स्टोरी-स्मिथ

sons के साथ भी बकवास नहीं है, प्रदर्शन की एक संख्या उस तरह से पहुंच गई है, हालांकि उतना नहीं।
निकोलस डी फोंटेनै

2
स्पिनरों के साथ भी जब SQLCAT क्षेत्र में खेलने तक इंडेक्स से डेटा को अलग करने का कोई मूल्य नहीं है। टेम्पर्डब को अलग करने का मामला भी कभी स्पष्ट नहीं है और बहुत कम संख्या में ऐसे डिस्क के साथ लागू होता है।
मार्क मंजिला-स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.