MySQL (InnoDB) के लिए सबसे अच्छा लिनक्स फाइल सिस्टम क्या है?


48

मैंने MySQL InnoDB के साथ विभिन्न फाइल सिस्टम के प्रदर्शन पर बेंचमार्क देखने की कोशिश की, लेकिन कोई भी नहीं मिला।

मेरा डेटाबेस कार्यभार विशिष्ट वेब-आधारित ओएलटीपी है, लगभग 90% पढ़ा जाता है, 10% लिखते हैं। रैंडम आई.ओ.

प्रचलित फाइलसिस्टम जैसे कि ext3, ext4, xfs, jfs, Reiserfs, Reiser4, आदि जो आपको लगता है कि MySQL के लिए सबसे अच्छा है?

जवाबों:


44

आप डेटा को कितना महत्व देते हैं?

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

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

यदि डेटा किसी महत्वपूर्ण मूल्य का है, तो आप XFS से बचना चाहेंगे। क्यों? क्योंकि अगर यह एक फ़ाइल के एक हिस्से को पुनर्प्राप्त नहीं कर सकता है, जिसे यह जर्नल किया जाता है तो यह ब्लॉक को शून्य कर देगा और डेटा को पुनर्प्राप्त करने योग्य बना देगा। यह समस्या लिनक्स कर्नेल 2.6.22 में तय की गई है

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

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

मैंने कभी JFS का उपयोग नहीं किया है। मैं केवल टिप्पणी कर सकता हूं कि मैंने जो भी पढ़ा है, उसकी प्रत्येक समीक्षा "ठोस, लेकिन ब्लॉक पर सबसे तेज बच्चा नहीं" की तर्ज पर कुछ है। यह जांच की योग्यता हो सकती है।

विपक्ष के बहुत, चलो पेशेवरों को देखो:

XFS:

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

ReiserFS:

  • अत्यधिक इष्टतम छोटे फ़ाइल का उपयोग
  • एक ही ब्लॉक में कई छोटी फाइलों को पैक करता है, फाइलसिस्टम स्पेस को संरक्षित करता है
  • तेजी से वसूली, प्रतिद्वंद्वियों XFS वसूली समय

ext3:

  • अच्छी तरह से परीक्षण किए गए Ext2 कोड के आधार पर, कोशिश की और सच किया
  • इसके साथ काम करने के लिए बहुत सारे उपकरण
  • वसूली के लिए एक चुटकी में Ext2 के रूप में फिर से लगाया जा सकता है
  • सिकुड़ और विस्तारित दोनों हो सकते हैं (अन्य फाइल सिस्टम केवल विस्तारित किए जा सकते हैं)
  • नवीनतम संस्करणों को "लाइव" विस्तारित किया जा सकता है (यदि आप उस साहसी हैं)

तो आप देखिए, प्रत्येक की अपनी अपनी विचित्रताएँ हैं। सवाल यह है कि आपके लिए सबसे कम विचित्र कौन सा है?


29
उस XFS NULLed फ़ाइल समस्या को 3 साल पहले ठीक किया गया था। xfs.org/index.php/…
रेयान बैर

5
हालांकि यह सच है कि मेरे पास कर्नेल विकास परिवर्तनों (काम के ऊपर और एक परिवार) के साथ रखने के लिए दुनिया में हर समय नहीं है, यह भी निश्चित रूप से सच है कि वहाँ बाहर पुराने तैनाती हैं जिन्हें अपडेट करने की आवश्यकता है। फिर भी, मैं +1 में एक चिप लगाऊंगा, जो इस बात की ओर इशारा करता है कि फिक्स किया गया था।
अवनी पायने

13

यह भी ध्यान देने योग्य हो सकता है कि आप एक फाइल सिस्टम के बिना InnoDB चला सकते हैं और फाइल सिस्टम ओवरहेड के बिना प्रदर्शन में सुधार कर सकते हैं। मुझे यकीन नहीं है कि मैं इसे सुझाऊंगा, लेकिन मैंने इसे बिना मुद्दों के पहले इस्तेमाल किया है।

InnoDB कच्चे उपकरण

इसके अलावा, यदि आप 90% रीड्स पर चल रहे हैं और 10% लिखते हैं, जब तक आपको इनोबीडी की ट्रांजेक्शनल क्षमता की आवश्यकता नहीं होती है, तो आप बेहतर रीड परफॉर्मेंस के लिए MyISAM में पोर्ट कर सकते हैं।


6
-1 बेहतर पढ़ने के प्रदर्शन के लिए MyISAM में जाने का सुझाव देने के लिए। अन्य दोषों और गिरावट है। इसके बजाय InnoDB को ठीक से कॉन्फ़िगर किया जाना चाहिए। InnoDB-on-raw-device सुझाव के लिए +1।
gertvdijk

5
मैं अपने बयान के साथ खड़ा हूं, MyISAM में कमियां हैं, लेकिन बहुत कुछ होना बाकी है। MyISAM अभी भी वर्कलोड पढ़ने के लिए बॉस है।
Xorlev

11

यहां के जवाबों को गंभीरता से चित्रित किया गया है, और अपडेट करने की आवश्यकता है क्योंकि यह Google परिणामों में आ रहा है।

उत्पादन वातावरण के लिए, XFS। हर बार। XFS जर्नलिंग और नॉन-ब्लॉकिंग है। सुनिश्चित करें कि आपके पास उत्पादन में InnoDB का उपयोग करके एक आधुनिक (2011/2012) MySQL डेटाबेस के लिए निम्नलिखित चर हैं:

innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 1 # an ACID requirement
sync_binlog = 1 # more ACID
innodb_flush_method = O_DIRECT

EXT3 या EXT4 का उपयोग न करें। एक दिन BTRFS वहां पहुंच जाएगा।

EXT3, और शायद EXT4, इनकोड स्तर पर लॉक करता है, स्मार्ट नहीं है!

स्रोत: - www.mysqlperformanceblog.com - http://dev.mysql.com/doc/internals/en/index.html - साशा पाचेव द्वारा MySQL के आंतरिक को समझना - https://www.facebook.com/note.php? note_id = 10150210901610933 - http://oss.sgi.com/projects/xfs/training/ - कुछ स्विंग किट, परीक्षण और त्रुटि।

संपादित करें: एक अद्यतन। EXT4 मिड 2013 के रूप में बहुत अच्छा कर रहा है! BTRFS अभी भी एक अच्छा विकल्प नहीं है। और RHEL अच्छी तरह से XFS को नई डिफॉल्ट फाइल सिस्टम बना सकता है। फिर से, EXT3 का उपयोग न करें।


वादिम Tkachenko के परीक्षण के अनुसार , EXT4 XFS पर 20% थ्रूपुट प्रदान करता है यदि MySQL 5.5 इनोबीडी के साथ उपयोग किया जाता है। वादिम 'dioread_nolock' EXT4 विकल्प का उपयोग करने का सुझाव देता है, जहां उपलब्ध है (हालांकि उन्होंने परीक्षण के साथ इसका उपयोग नहीं किया था)।
कैलिगारी जूल

क्यों इनोड स्तर पर लॉकिंग खराब है?
jpaugh

अन्य जवाब पुराने हैं ... अब, 5 साल बाद ...
kaiser

इनसाइड लॉकिंग की समस्याओं के लिए Google "इनकोड लॉक कंटेस्टेंट"।
निरा

9

संक्षिप्त संस्करण यह है कि मैंने फाइल सिस्टम पर MySQL मेकिंग के बारे में एक सिफारिश के सबसे नजदीक है XFS, हालांकि ext3 ठीक होना चाहिए, ext4 एक अच्छा सुधार होने का वादा करता है, लेकिन यह अभी भी काफी स्थिर नहीं है, हालांकि यह पहले होना चाहिए साल का अंत।

यदि आप क्लस्टर फ़ाइल सिस्टम CXFS, OCFS2 और GFS चला रहे हैं तो सब ठीक होना चाहिए।

मैं किसी भी Reiser डेरिवेटिव के खिलाफ दृढ़ता से चेतावनी देता हूं, और JFS हालांकि एक बार अच्छा XFS द्वारा पीटा गया है और ext4 जो दोनों अधिक व्यापक रूप से तैनात हैं।


6

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

अपना प्रयास अन्य चीज़ों को करने में बिताएं - पर्याप्त राम प्राप्त करें - एक छापा नियंत्रक प्राप्त करें जो चूसना नहीं करता है - और डेटाबेस के अनुप्रयोग के लंगड़े (एब) उपयोग को ठीक करें (एनबी: यह ज्यादातर मामलों में मुख्य अपराधी है जहां यह पहले से ही नहीं है किया गया)।

हालाँकि, ध्यान से देखें, जिस फाइलसिस्टम को आपने mysql tmpdir पर रखा है; यह प्रदर्शन को प्रभावित करेगा, विशेष रूप से क्वेरीज़ जो डिस्क-आधारित फाइल (एस) करते हैं (अधिक विवरण के लिए देखें)।

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

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


5

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

डेटाबेस वास्तव में शो चला रहा है, क्योंकि फाइलसिस्टम केवल बड़े एक्स्टेंट का प्रबंधन कर रहा है जो भंडारण इंजन तक पहुंच रहा है।

फिर भी, उन सभी फाइल सिस्टम के साथ एक प्रदर्शन राउंडअप करना दिलचस्प होगा। (मेरे पास MySQL के लिए कोई उत्साह से कम नहीं है, हालांकि, इसलिए मैं इसे शुरू नहीं करने जा रहा हूं। बेंचमार्किंग पोस्टग्रेट्स, OTOH, दिलचस्प हो सकता है ...)


1
Thee भी एक stackoverflow.com/questions/1021854/… कुछ संदर्भों के साथ डुप्लिकेट है जो आपको रुचि दे सकता है
nik

3

IMHO लिनेक्स के लिए उपलब्ध एफएस ध्यान देने योग्य हैं:

XFS (खराब पढ़ने की गति) को सिस्टम संसाधनों पर प्रकाश और बड़ी फ़ाइलों के साथ तेजी से जाना जाता है, लेकिन बहुत सारी छोटी फ़ाइलों को संभालने के लिए खराब।

ReiserFS (खराब लेखन गति) सिस्टम संसाधनों पर बहुत दयालु नहीं है, लेकिन बहुत सारी छोटी फाइलों के साथ बहुत अच्छा प्रदर्शन करता है।

EXT3 के बीच में पड़ता है, सभी क्षेत्रों पर प्रदर्शन कर रहा है (यही कारण है कि इसका डिफ़ॉल्ट लिनक्स एफएस माना जाता है )।

मैंने अभी तक खुद EXT4 का उपयोग नहीं किया है ReiserFS4 नहीं है, लेकिन मैंने कुछ बेंचमार्क के आसपास देखा है और जब रीडिंग गति की बात आती है, तो ReiserFS को सबसे अच्छा प्रदर्शन होता है, जो आपने कहा था कि आपके लिए सबसे महत्वपूर्ण था।

इस पर एक नज़र डालें: ReserFS4 X Ext4 X Ext3

मैं एक्सटे 3 को इसकी स्थिरता, सुरक्षा और परिपक्वता के लिए सलाह दूंगा, लेकिन अगर पढ़ने की गति आपके लिए सबसे महत्वपूर्ण है, तो आपको ReiserFS पर विचार करना चाहिए।

याद रखें कि आपको एफएस चुनने से पहले सीपीयू के उपयोग, स्थिरता, सुरक्षा पर भी विचार करना चाहिए।

और निश्चित रूप से एक पायलट बनाना, अपने विशेष वातावरण पर परीक्षण और बेंचमार्किंग हमेशा यह बताने का सबसे अच्छा तरीका है कि आपके लिए सबसे अच्छा काम क्या होगा।

पुनश्च: मैंने अधिक बेंचमार्क पोस्ट किए होंगे, लेकिन मैं एक से अधिक लिंक पोस्ट नहीं कर सकता।

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