डेटाबेस के लिए एसएसडी बनाम एचडीडी


42

मैं MySQL सर्वर को चलाने के लिए एक नया सर्वर खरीदने की कोशिश कर रहा हूं। यह नया सर्वर मेरी मुख्य मशीन का गुलाम होगा। हालांकि, यह सर्वर केवल "बहुत सारे रीड और जटिल प्रश्नों" की रिपोर्टिंग के लिए समर्पित होगा।

अब मैं ठोस राज्य हार्ड ड्राइव में निवेश कर रहा हूं, लेकिन सोच रहा था कि क्या यह वास्तव में कीमत है। SSD और SATA 7200 हार्ड ड्राइव के बीच का अंतर लगभग $ 1500 है और SSD में डिस्क स्थान कम है। अगर मैं एसएसडी में निवेश करता हूं तो क्या गति ध्यान देने योग्य होगी?

मैं 2 (500GB SSD) खरीदने की तुलना में $ 1500 के लिए 4 (500GB SATA 7200) खरीद सकता हूं

क्या आप मुझे यह देखने के लिए निर्णय लेने में मदद कर सकते हैं कि क्या यह उन्नयन के लायक है या नहीं?

एक बार और बात जो मैं बताना चाहूंगा वह यह है कि मैं इसका उपयोग नहीं कर रहा हूं query_cacheइसलिए बहुत सारे डिस्क रीड होंगे।

इस सर्वर में 32GB रैम होगी और यह Ubuntu 12.04 चलेगी


गीगाबाइट के संदर्भ में आपका डेटाबेस कितना बड़ा है? नीचे दिए गए उत्तरों में से कौन सा सही है, यह वास्तव में समझने पर निर्भर करता है कि कितना डेटा है।
नाथन जॉली

1
यदि आप SSD का उपयोग कर समाप्त करते हैं, तो आप Ubuntu 14.04 के लिए अप्रैल तक इंतजार करना चाहते हैं या 12.04 पर मैन्युअल रूप से TRIM को सक्षम कर सकते हैं। अधिक जानकारी के लिए यह लेख देखें ।
OSE

5
सीरियल ATA (SATA) इंटरफ़ेस है। SATA SSD हैं और हार्ड डिस्क ड्राइव (HDD) हैं जो SATA का उपयोग नहीं करते हैं।
डेनिस

कुछ खरीदना जो आपके लिए पैसा नहीं बनाता है, वह शायद ही एक निवेश है ...
inf3rno

जवाबों:


25

हां, बहुत कुछ पढ़ता है और एक एसएसडी की रिपोर्टिंग से बहुत फर्क पड़ेगा। 7200 RPM ड्राइव से आप ~ 100 IOPS से अधिक की उम्मीद नहीं कर सकते हैं जबकि सबसे सस्ता SSD न्यूनतम 5x जितना तेज़ हो सकता है। अच्छे SSD के साथ आप 20000 IOPS या इससे भी अधिक प्राप्त कर सकते हैं।

इसके अलावा SSD में रैंडम राइट्स बहुत तेज होते हैं क्योंकि डिस्क को हर बार हिलना नहीं पड़ता है।


4
आप एक अच्छे SSD को कैसे परिभाषित करेंगे?
माइक

यह प्रदर्शन और बेंचमार्क के बारे में है। मैं क्या कर रहा हूँ बेंचमार्क या SSD के मॉडल की समीक्षा के लिए जो आप खरीद रहे हैं। इसके अलावा en.wikipedia.org/wiki/IOPS#Examples बहुत सामान्य अवलोकन देता है।
18

20

यहां आपको तीन कारकों पर विचार करने की आवश्यकता है:

  1. आपके डेटाबेस का आकार
  2. आपके पास सर्वर में स्मृति की मात्रा
  3. आपका my.cnf कॉन्फ़िगरेशन, विशेष रूप से innodb_buffer_pool_size

यदि उपलब्ध स्मृति> डेटाबेस आकार , तो आपका सर्वर संभवतः आपके सभी डेटा को स्मृति में रखने में सक्षम होगा, और इसलिए एक एसएसडी पैसे की बर्बादी हो सकती है। InnoDB बफर का query_cacheविकल्पों से कोई लेना-देना नहीं है ।

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

सामान्य तौर पर, डेटाबेस सबसे अधिक उपयोग किए जाने वाले डेटा को मेमोरी में रखते हैं - यदि आपके डेटा का 80% शायद ही कभी / कभी उपयोग नहीं किया जाता है, तो आपको प्रदर्शन बनाए रखने के लिए केवल अपने डेटाबेस का 20% मेमोरी में रखने की आवश्यकता होगी।

आपके द्वारा आवश्यक मेमोरी की सटीक मात्रा तुरंत स्पष्ट नहीं होगी, लेकिन जब तक आपका डेटाबेस 200GB + नहीं होता है, मैं SSDs के बजाय Up_One की सलाह लेने और स्मृति पर अतिरिक्त पैसे खर्च करने की पूरी तरह से सिफारिश करूंगा।

NB: यदि आपका डेटाबेस MyISAM का उपयोग कर रहा है (आप इसके साथ जांच कर सकते हैं show table status;), तो InnoDB में बदलने पर विचार करें। MyISAM key_buffer_cacheकेवल इंडेक्स ब्लॉक को स्टोर करता है, जहां InnoDB बफर पूल पूरे डेटा ब्लॉक को स्टोर करता है। ज्यादातर मामलों में, InnoDB के साथ काम करने के लिए एक बेहतर इंजन साबित होगा।


मैं डेटाबेस को मेमोरी में कैसे डाल सकता हूं? सर्वर एक गुलाम है, इसलिए उस पर हर समय लिखते रहेंगे, लेकिन रिपोर्ट की वजह से इसका भारी बोझ भी होगा
माइक

यदि आपकी तालिकाएँ InnoDB हैं, और यदि आपका InnoDB बफ़र पूल काफी बड़ा है, तो MySQL मेमोरी में अपने डेटाबेस के कैशिंग को स्वचालित रूप से प्रबंधित करेगा, और हर समय मेमोरी में सबसे अधिक उपयोग किए जाने वाले डेटा को रखने का प्रयास करेगा। MySQL के प्रलेखन यह कैसे काम करता है का एक बहुत अच्छा अवलोकन प्रदान करता है
नाथन जॉली

@NathanJolly भले ही पूरे डेटाबेस की मेमोरी में हो, फिर भी डेटा को सहेजे जाने पर हार्ड डिस्क पर पढ़ा और लिखा जाएगा + विभिन्न सर्वरों की सीमा होती है। उदाहरण के लिए SQL सर्वर एक्सप्रेस संस्करण का उपयोग केवल 1GB मेमोरी के लिए किया जाता है ताकि यह मुट्ठी में बड़े डेटाबेस को स्मृति स्थान पर न चला सके।
जैकोफॉल

@Jackofall, जबकि यह बिल्कुल सच है, यहाँ सवाल एक भारी-भारी MySQL डेटाबेस को निर्दिष्ट करता है। हर रीड-ओनली क्वेरी जिसे डिस्क तक पहुंचने के बजाय मेमोरी से परोसा जा सकता है - यहां तक ​​कि फास्ट डिस्क - अच्छी खबर है।
नेथन जॉली

6

मुझे नहीं लगता कि यह इतना अच्छा विचार है!
मेरा सलाह
आपके InnoDB बफर पूल का आकार बढ़ाएँ MySQL को तेज करने का सबसे अच्छा तरीका है। यदि आप अधिक RAM जोड़ सकते हैं, तो करें। यह आपके अधिकांश गर्म डेटा को मेमोरी में डाल देगा इसलिए कल्पना करें! डिस्क बनाम मेमोरी!
सही परिदृश्य आपके मेमरी को आपके डेटाबेस का आकार
एसएसडी है - महान है लेकिन यह महंगा आएगा! और यह केवल गहन नौकरियों को पढ़ने के लिए अच्छा है।

वादिम टकाचेंको से इस पर अच्छे लेख के लिए इस लिंक को देखें


1
आप जिस लेख से जुड़ रहे हैं, वह लगभग 4 साल पुराना है, उस समय की तुलना में SSD की कीमतें आधे से भी कम हैं और प्रदर्शन भी बहुत बढ़ गया है। डेटाबेस के आकार की स्मृति? 500Gb डेटाबेस के बारे में क्या? केवल रैम की मात्रा ही नहीं है, बल्कि आपके द्वारा खरीदा जाने वाला सर्वर भी इतने सारे मेमोरी बैंक उपलब्ध हैं।
यारोस्लाव

DB आकार के बारे में! हां, आप ऐसा नहीं कर सकते- लेकिन जैसा कि मैंने कहा कि यह एक आदर्श परिदृश्य होगा!
अप_ऑन

6

एक विकल्प देने के लिए: आप डेटा रखने के लिए एक बड़ी हार्डडिस्क (आदर्श रूप से, RAID1) का उपयोग कर सकते हैं, और डेटा रखने के लिए एक छोटा एसएसडी।

दलील:

  • इंडेक्स काफी छोटे होते हैं, इसलिए आप छोटे एसएसडी का उपयोग कर सकते हैं
  • सामान्य प्रश्नों को मुख्य रूप से वैसे भी अनुक्रमित करना चाहिए
  • RAID1 आपको दोष सहिष्णुता देता है
  • RAID1 आपको रैंडम रीड्स के लिए लोड बैलेंसिंग देता है
  • यदि डिस्क विफल हो जाता है तो तीन डिस्क दोष सहिष्णुता छोड़ देता है
  • यदि SSD विफल रहता है, तो अनुक्रमणिका को फिर से बनाया जा सकता है

5

कर दो।

आपने उल्लेख किया है कि आपके पास एक रीड-हैवी वर्कलोड है, इसलिए आप पहले से ही डेटाबेस पर एसएसडी का उपयोग करने के साथ बड़ी समस्या से बच गए हैं: वीटआउट। नो राइट्स का मतलब है नो वियर, इसलिए आप गोल्डन हैं।

जैसा कि edvinas.me ने उल्लेख किया है, आपका IOPS कताई डिस्क की तुलना में SSD के साथ तेजी से परिमाण का आदेश है। एक डेटाबेस के लिए, IOPS प्रति सेकंड अनुरोधों के लिए बहुत अधिक अनुवाद करता है। रैम कैश को अनदेखा करते हुए, आप 7200RPM डिस्क की तुलना में SSD से लगभग 100x अनुरोध करेंगे।

टीआरआईएम में बहुत फर्क नहीं पड़ेगा क्योंकि यह एक भारी-भरकम वर्कलोड है और लगता है जैसे आप डिस्क को भरने की योजना बनाते हैं। इसके बारे में तनाव मत करो।

मुझे यकीन नहीं है कि $ 1500 चीज कहां से आई है। अपने स्थानीय (ऑस्ट्रेलियाई) आपूर्तिकर्ता की जाँच करते हुए, मैं $ 750 ( http://www.auspcmarket.com.au/960gb-crucial-m500-sata-6gbps-2-5-7mm-with-) के लिए 960GB SSD का सम्मानित कर सकता हूँ 9-5 मिमी-एडेप्टर-एसएसडी-रीड -500 एमबी-एस-राइट -400 एमबी / एस )। कताई डिस्क अधिक-या-कम मुक्त हैं, लेकिन $ 750 अभी भी $ 1500 की तुलना में बहुत अधिक स्वादिष्ट है।

(ओह, रुको - आप शायद एक बड़े नाम वाले आपूर्तिकर्ता से ऑर्डर कर रहे हैं, इसलिए वे आपको एसएसडी के लिए नाक के माध्यम से चार्ज कर रहे हैं! मैं हमेशा एसएसडी को अलग से खरीदता हूं और इसे अपने आप में स्वैप करता हूं, लेकिन मुझे नहीं पता कि क्या है? आपके वातावरण में स्वीकार्य है।)

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

यदि आप अभी भी निश्चित नहीं हैं, तो आप बड़ी 10k RPM ड्राइव प्राप्त कर सकते हैं, लेकिन वे SSD की तुलना में लगभग उतना ही कम खर्च करेंगे, जितना कि बहुत धीमा।

यदि आपको 1TB से अधिक के पैमाने की आवश्यकता है तो SSDs बहुत महंगे होने लगते हैं, लेकिन 1TB पर, मैं कहूंगा कि SSD एक स्पष्ट जीत है।


3

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

1,253 IOPS - 4 x SCSI 15k (3.5 ") डिस्क

परीक्षण: (g = 0): rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 पढ़ें: io = 3071.7MB, bs = 5012.8KB / s, iops = 1253 , runt = 627475msec लिखें: io = 1024.4MB, bw = 1671.7KB / s, iops = 417, runt = 627475msec सीपीयू: usr = 0.63%, s = = 3.11%, ctx = 985926, majf = 0, minf = 22f

2,558 IOPS - 8 x 10K RPM 900GB SAS (2.5 ") डिस्क

परीक्षण: (g = 0): rw = randrw, bs = 4K-4K / 4K / 4K / 4K-4K, ioengine = libaio, iodepth = 64 पढ़ें: io = 3071.7MB, b = = 10236KB / s, iops = 2558 runt = 307293msec लिखें: io = 1024.4MB, bw = 3413.5KB / s, iops = 853, runt = 307293msec सीपीयू: usr = 2.73%, sys - 8.72%, ctx = 904875, majf = 0, minf = 25f

23,456 IOPS - रैकस्पेस प्रदर्शन 2 एसएसडी सर्वर

परीक्षण: (g = 0): rw = randrw, bs = 4K-4K / 4K / 4K / 4K-4K, ioengine = libaio, iodepth = 64 पढ़ें: io = 3071.7MB, b = = 93708KB / s, iops = 23426, runt = 33566msec लिखें: io = 1024.4MB, bw = 31249KB / s, iops = 7812, runt = 33566msec सीपीयू: usr = 5.73%, sys = 35.83%, ctx = 181568, majf = 0, minf = 23

35,484 IOPS - 2 x मिरर एज बूस्ट 480GB 2.5 "MLC ( http://www.edgememory.com )

परीक्षण: (g = 0): rw = randrw, bs = 4K-4K / 4K-4K / 4K-4K, ioengine = libaio, iodepth = 64 पढ़ें: io = 3068.4MB, b = 141934KB / s, iops = 35483/3 runt = 22137msec लिखें: io = 1027.7MB, bw = 47537KB / s, iops = 11884, runt = 22137msec सीपीयू: usr = 11.68%, ss = 69.89%, ctx = 24379, majf = 0, minf = 20f

तो यह स्पष्ट है कि आज के उच्च गुणवत्ता वाले एसएसडी अद्भुत कलाकार हैं। दो मिरर किए गए SSD आसानी से 16 डिस्क सैन स्टोरेज एनक्लोजर को बेहतर बना सकते हैं और यह एक सम्मोहक स्टेटमेंट है।

यदि आप पूर्ण विवरण में रुचि रखते हैं, तो शेष लेखन मेरे ब्लॉग पर पाया जाता है:

http://www.juhavehnia.com/2015/05/using-ssds-to-improve-mysql-performance.html

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