IO का उपयोग डिस्क IO के लिए अंगूठे का नियम है:
SATA के लिए प्रति स्पिंडल 75 आईओपी।
एफसी / एसएएस के लिए 150 आईओपी प्रति स्पिंडल
SSD के लिए धुरी प्रति 1500 IOP।
साथ ही IOP प्रति सरणी भी IOPs प्रति टेराबाइट पर विचार करते हैं। अगर SATA + RAID6 कर रहे हैं तो टीबी के अनुपात में बहुत खराब IOP के साथ समाप्त होना असामान्य नहीं है। यह बहुत ज्यादा नहीं लग सकता है, लेकिन आप अक्सर किसी सरणी पर किसी को 'मुक्त स्थान' के साथ समाप्त करेंगे, और इसका उपयोग करना चाहते हैं। यह लोगों के लिए जिग्स खरीदने और आईओपी को नजरअंदाज करने के लिए आम है, जब वास्तव में अधिकांश उद्यम प्रणालियों में विपरीत सच है।
फिर RAID के लिए लिखने की सजा की लागत जोड़ें:
- RAID1 के लिए 2, RAID1 + 0
- RAID5 के लिए 4 (या 4)
- RAID6 के लिए 6।
लिखो पेनल्टी आंशिक रूप से अच्छा बड़ा लिख कैश और सही परिस्थितियों में कम किया जा सकता है। यदि आपने बहुत सारे अनुक्रमिक लेखन IO (जैसे DB लॉग्स) किए हैं, तो आप उन RAID 5 और 6 पर लिखी गई पेनल्टी को काफी कम कर सकते हैं। यदि आप एक पूर्ण पट्टी लिख सकते हैं (जैसे एक ब्लॉक प्रति धुरी) तो आपको समता की गणना करने के लिए पढ़ना नहीं होगा।
एक 8 + 2 RAID 6 सेट मान लें। एक एकल IO के लिए सामान्य ऑपरेशन में आपको निम्न की आवश्यकता है:
- 'अद्यतन' ब्लॉक पढ़ें।
- पहले समता ब्लॉक पढ़ें
- दूसरी समता ब्लॉक पढ़ें
- समरसता समता।
- सभी लिखें 3. (6 आईओ)।
कैश्ड फुल स्ट्राइप राइट के साथ - उदाहरण के लिए लगातार 8 'चंक्स' RAID स्ट्राइप का आकार जिसे आप एक रीड की जरूरत के बिना, पूरे लॉट पर समता की गणना कर सकते हैं। तो आपको केवल 10 लिखना चाहिए - प्रत्येक डेटा के लिए एक, और दो समता।
यह आपके लिखने के दंड को 1.2 बनाता है।
आपको यह भी ध्यान रखना होगा कि IO को कैश करना आसान है - आपको इसे तुरंत डिस्क पर लाने की आवश्यकता नहीं है। यह एक नरम समय की कमी के तहत काम करता है - जब तक कि औसत आपके आने वाले लेखन में गति से अधिक न हो, यह सब 'कैश गति' पर चलने में सक्षम होगा।
दूसरी ओर आईओ पढ़ें, एक कठिन समय बाधा ग्रस्त है - जब तक डेटा प्राप्त नहीं किया जाता है तब तक आप एक रीड पूरा नहीं कर सकते। पढ़ें कैशिंग और कैश लोडिंग एल्गोरिदम उस बिंदु पर महत्वपूर्ण हो जाते हैं - पूर्वानुमानित रीड पैटर्न (जैसे अनुक्रमिक, जैसा कि आप बैकअप से प्राप्त करेंगे) का अनुमान लगाया जा सकता है और प्रीफ़ेट किया जा सकता है, लेकिन यादृच्छिक रीड पैटर्न नहीं हो सकता है।
डेटाबेस के लिए, मैं आमतौर पर आपको यह मानने का सुझाव दूंगा कि:
आपका अधिकांश 'डेटाबेस' IO यादृच्छिक पढ़ा जाता है। (यादृच्छिक अभिगम के लिए बुरा)। यदि आप ओवरहेड वहन कर सकते हैं, तो RAID1 + 0 अच्छा है - क्योंकि प्रतिबिंबित दर्पण रीड के दो स्रोत देता है।
आपका अधिकांश 'लॉग' IO अनुक्रमिक लेखन है। (उदाहरण के लिए कैशिंग के लिए अच्छा है, और कई DBAs जो सुझाएंगे, उसके विपरीत, आप शायद RAID10 के बजाय RAID50 करना चाहते हैं)।
दोनों का अनुपात कहना मुश्किल है। निर्भर करता है कि DB क्या करता है।
क्योंकि यादृच्छिक पढ़ा IO कैशिंग के लिए सबसे खराब स्थिति है, यह वह जगह है जहां एसएसडी वास्तव में अपने आप में आता है - बहुत सारे निर्माता एसएसडी को कैशिंग करने से परेशान नहीं करते हैं क्योंकि यह वैसे ही गति के बारे में है। तो विशेष रूप से अस्थायी डेटाबेस और इंडेक्स जैसी चीजों के लिए, एसएसडी निवेश पर अच्छा रिटर्न देता है।