PostgreSQL पर सम्मिलित प्रदर्शन के लिए सबसे अच्छा फाइल सिस्टम क्या है?


20

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

यदि आप सामान्य फाइल सिस्टम / डेटाबेस प्रदर्शन से संबंधित प्रश्न खोज रहे हैं, तो इस पोस्ट में कुछ अच्छी जानकारी है।

हालांकि, मैं पर ज्यादा सलाह के रूप में प्राप्त करना चाहते हैं डालने संभव के रूप में प्रदर्शन को पढ़ने के लिए विरोध प्रदर्शन। सभी महान जवाब के लिए धन्यवाद!


7
सबसे अच्छा फाइलसिस्टम अधिक मेमोरी होगा? ;)
ऑस्कर डुवॉर्न

2
Oskar के लिए +1। हम सिर्फ एक सर्वर कॉन्फ़िगरेशन से गए थे जहाँ RAM, DB के कुल आकार का 33% था एक नई मशीन के लिए जहाँ कुल RAM DB के आकार से अधिक था। अब हम पूरे DB को मेमोरी में कैश कर सकते हैं। हमारी सबसे धीमी एसक्यूएल क्वेरी अब परिमाण के 2 क्रम तेज है।
केविन राए

जवाबों:


14

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

संक्षेप में: कोई छोटा जवाब नहीं है।

लेकिन मैं गर्मियों में करने की कोशिश करूंगा:

  • जब तक आप जानते हैं कि आप क्या कर रहे हैं ext2 का उपयोग न करें।
  • fsync कॉल के कारण चेकपॉइंट स्पाइक्स के एक्स 3 से सावधान रहें, पृष्ठ 113 और 82 और 79 देखें
  • ext4 या xfs का उपयोग करें
  • अन्य विकल्प हैं

लेकिन जैसा कि आप वास्तव में अपने आप से पूछ रहे हैं कि एफएस का उपयोग करने के लिए, आपको पुस्तक को पढ़ना चाहिए!


4
सहमत, यह विषय ग्रेग को बहुत अच्छी तरह से कवर करता है। Packtpub.com/sites/default/files/… पर एक सैंपल चैप्टर है, यदि आप पुस्तक को उधार लेने या खरीदने से पहले विकसित करना चाहेंगे।
Sciurus

1
मजेदार, जब मुझे यह समस्या हो रही थी, तो पुस्तक मौजूद नहीं थी। अब, ग्रेग ने उस पुस्तक में जो प्रयास किया, उसके लिए मैं वास्तव में उनका आभारी हूं।
एलिय्याह

मैं सिर्फ इस महान काम :-) सम्मानित करने के लिए एक और प्रतिलिपि खरीदा
Janning

6

सबसे पहले, आप पहले एक विश्वसनीय फाइल सिस्टम चाहते हैं, और एक तेज़ दूसरा। कौन से नियम कुछ विकल्प ...

प्रदर्शन परीक्षण से पता चलता है कि अक्सर XFS सर्वश्रेष्ठ प्रदर्शन देता है। डिस्क-वेरी-क्लोज़-टू-फ़ुल परिदृश्यों तक पहुँचने के बाद इसके साथ कुछ स्थिरता के मुद्दे हैं, लेकिन जब तक आप इसके लिए मॉनिटर नहीं करते हैं, तब तक यह आपको थोड़ा बेहतर प्रदर्शन देगा।

सिद्धांत रूप में आपको pg_xlog निर्देशिका के लिए जर्नलिंग फ़ाइल सिस्टम की आवश्यकता नहीं है, लेकिन गति में अंतर आमतौर पर इतना छोटा होता है कि यह केवल इसके लायक है। डेटा डायरेक्टरी के लिए, आपके पास हमेशा मेटाडेटा जर्नलिंग फाइलसिस्टम होना चाहिए।


4
आप डेटाबेस को संग्रहीत करने के लिए XFS का उपयोग करना / न करना / कर सकते हैं, अर्थात् क्योंकि यह (जब आवश्यक हो) ब्लॉक को शून्य कर देगा जिसे वह पुनर्प्राप्त नहीं कर सकता है।
अवन पायने

4

डेटाबेस प्रबंधन प्रणाली डेटाबेस लॉग के माध्यम से अपनी स्वयं की पत्रिकाओं को लागू करती है, इसलिए दो तंत्रों के माध्यम से एक प्रदर्शनित फ़ाइल सिस्टम के प्रदर्शन पर इस तरह के DBMS को स्थापित करना:

  1. निरर्थक पत्रिकाओं के डिस्क गतिविधि की मात्रा बढ़ जाती है

  2. भौतिक डिस्क लेआउट को खंडित किया जा सकता है (हालांकि कुछ जर्नलिंग फाइल सिस्टम में इसे साफ करने के लिए तंत्र हैं)।

  3. डिस्क गतिविधि के बहुत सारे जर्नल भर सकते हैं, जिसके कारण गंभीर 'डिस्क पूर्ण' स्थितियां बन सकती हैं।

मैंने कुछ साल पहले एक उदाहरण देखा है जहां यह HP / UX बॉक्स पर एक बाॅन इंस्टॉलेशन पर LFS फाइल सिस्टम पर किया गया था। सिस्टम में लगातार प्रदर्शन और डेटा भ्रष्टाचार के मुद्दे थे जो तब तक अनजाने में चले गए जब तक किसी ने काम नहीं किया कि फ़ाइल सिस्टम एलएफएस के साथ स्वरूपित किए गए थे।

डेटाबेस फ़ाइलों को रखने वाले वॉल्यूम में सामान्य रूप से बड़ी फ़ाइलों की एक छोटी संख्या होगी। DBMS सर्वरों में सामान्य रूप से एक सेटिंग होती है जो कॉन्फ़िगर करती है कि एक I / O में कितने ब्लॉक पढ़े जाते हैं। छोटी संख्या उच्च मात्रा के लेनदेन प्रसंस्करण प्रणालियों के लिए उपयुक्त होगी क्योंकि वे अनावश्यक डेटा के कैशिंग को कम करेंगे। बड़ी संख्या में सिस्टम ऐसे डेटा वेयरहाउस के लिए उपयुक्त होंगे, जिन्होंने बहुत सीक्वेटियल रीड किए। यदि संभव हो, तो अपनी फ़ाइल सिस्टम आवंटन ब्लॉक आकार को उसी आकार में ट्यून करें जैसा कि मल्टी-ब्लॉक पढ़ा गया है कि डीबीएमएस सेट है।

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

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

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


जर्नलिंग डेटा में खराबी आ प्रदर्शन; मेटाडेटा को जमाने के लिए सबसे कम प्रभाव होना चाहिए, और सबसे अधिक संभावना है, लगभग कोई भी नहीं। मेटाडेटा नहीं प्रकाशित करना अस्वीकार्य है।
niXar

मुझे लगता है कि आपने लेख को गलत समझा। किसी भी फाइल सिस्टम में फाइल सिस्टम मेटाडेटा है और किसी भी डिस्क ट्रैफिक में इसे पढ़ना या लिखना शामिल होगा। आधुनिक कंप्यूटर में आमतौर पर इस फाइल सिस्टम मेटाडेटा को आसानी से कैश करने के लिए पर्याप्त रैम होती है लेकिन पुरानी मशीनें नहीं थीं। इसका मतलब यह था कि फ़ाइल सिस्टम के मेटाडेटा को पढ़ने या अपडेट करने के लिए डिस्क अतिरिक्त महत्वपूर्ण I / O ओवरहेड (Oracle के लिए इन-उद्धृत उद्धरण 30% प्रदर्शन हिट था)। अधिक रैम वाले आधुनिक सिस्टम में फ़ाइल सिस्टम मेटाडेटा के कैश होने की अधिक संभावना है, इसलिए ओवरहेड कम है।
कंसर्नडऑफटुनब्रिजवेल्स

इसमें कुछ अच्छी सामान्य सलाह शामिल हैं, लेकिन मैंने इसे अस्वीकार कर दिया क्योंकि इसमें ऐसी जानकारी भी शामिल है जो पोस्टग्रेजेक और आधुनिक जर्नलेड फाइल सिस्टम के लिए अप्रासंगिक या गलत है।
१०:४१ पर Sciurus

3

मैंने ऐसी विस्तृत रिपोर्ट की थी लेकिन यह केवल फ्रेंच में है । यदि आप फ्रेंच पढ़ते हैं या स्वचालित अनुवाद टूल से खुश हैं ... आप कार्यप्रणाली का पुन: उपयोग कर सकते हैं और इसे अपने लिए चला सकते हैं।

कार्यकारी सारांश: मैंने pgbench का उपयोग किया है। लिनक्स I / O शेड्यूलर में प्रदर्शन और फाइलसिस्टम के लिए बहुत कम महत्व है। इसलिए, यदि आप जल्दी में हैं, तो बस डिफ़ॉल्ट चुनें। मैंने JFS को चुना।


2

फाइलसिस्टम ही समस्या का हिस्सा है। आप अपने आईओ अनुसूचक को बदलकर महत्वपूर्ण प्रदर्शन को बढ़ावा दे सकते हैं। सौभाग्य से यह परीक्षण करने के लिए काफी आसान है क्योंकि आप मक्खी पर IO अनुसूचक को बदल सकते हैं। मेरा सुझाव है कि प्रत्येक को एक दो दिनों के लिए विशिष्ट लोड के तहत कोशिश करें और देखें कि कौन सा सबसे अच्छा प्रदर्शन देता है।


मेरे बेंचमार्क ने I / O शेड्यूलर को बदलते समय बहुत कम परिवर्तन दिखाया, शायद इसलिए कि हर DBMS का अपना शेड्यूलर पहले से ही है।
बोर्त्ज़मेयर

MySQL समय सीमा अनुसूचक का उपयोग करने से उच्च भार के तहत बहुत बेहतर है।
डेविड पशले

2

मैंने कुछ महीने पहले कुछ परीक्षण किया था:

मेरे पास एक छोटा सा परीक्षण कार्यक्रम था जिसने 50 धागे बनाए, जहां प्रत्येक धागा 1000 (या यदि यह 10000) पंक्तियों को एक ही तालिका में डाला गया था।

  • EXT3 पर डेटाबेस और 4 डिस्क RAID5 के साथ 50 सेकंड का समय लगा।
  • रैमडिस्क पर टेबल के साथ (टेबलस्पेस का उपयोग करके) इसमें अभी भी 50 सेकंड लगे। यह तेज़ नहीं होने का कारण यह है कि सब कुछ pg_xlog निर्देशिका में लॉग इन किया गया है, जहां अभी भी वही RAID 5 है।
  • मैंने pg_xlog को एक 4 डिस्क RAID0 (स्ट्राइप) और 40 सेकंड में एक ही प्रोग्राम चलाया।
  • परीक्षण के प्रयोजनों के लिए मैंने pg_xlog को ramdisk में स्थानांतरित किया और EXT3 4 डिस्क RAID पर बाकी सब कुछ था। कार्यक्रम 5 सेकंड से कम समय के बाद समाप्त हो गया था।

लेकिन सॉफ्टवेयर पर ramgisk pg___xlog होना एक विकल्प नहीं है: यदि आप pg_xlog निर्देशिका की सामग्री खो देते हैं तो पोस्टग्रेज शुरू नहीं होंगे। (लेकिन इसमें बैटरी बैकअप के साथ हार्डवेयर रैमडिस्क मौजूद हैं जो रुचि के हो सकते हैं।)

IMHO: डेटाबेस फ़ाइलों के लिए आपके द्वारा सबसे अधिक आरामदायक फ़ाइलों का उपयोग करें। आपके पास सबसे तेज संभव डिवाइस के लिए pg_xlog (एक सिमलिंक के साथ, प्रलेखन देखें) को स्थानांतरित करें।


1
pgbench कुछ ऐसा ही करता है और अधिकांश इंस्टॉल के साथ शामिल होता है।
अवन पायने

0

मैंने देखा है कि एक याद किया हुआ FreeBSD आपको अन्य OS के विपरीत थोड़ा अधिक प्रदर्शन देगा। हालांकि मुझे यकीन है कि यह जानकारी पुरानी है और शायद पहले स्थान पर एक मिथक है। लेकिन आप इसे फिर भी आज़मा सकते हैं, कर्नेल सेटिंग्स के लिए यह दिशानिर्देश देखें: http://developer.postgresql.org/pgdocs/postgres/kernel-resources.html

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