2012-09-04 12 views
6

मुझे ओएलटीपी अनुप्रयोगों के लिए पोस्टग्रेस के लिए प्रदर्शन को ट्यून और अनुकूलित करने के तरीके पर बहुत सारे ऑनलाइन और प्रिंट मार्गदर्शिकाएं मिली हैं, लेकिन मुझे डेटा वेयरहाउसिंग अनुप्रयोगों के लिए विशिष्ट प्रकार के कुछ भी नहीं मिला है। चूंकि वर्कलोड के प्रकारों में इतने सारे मतभेद हैं, इसलिए मुझे यकीन है कि डेटाबेस कैसे प्रबंधित और ट्यून किए जाते हैं, इसमें कुछ अंतर होना चाहिए।पोस्टग्रेएसक्यूएल डेटा वेयरहाउसिंग के लिए सर्वोत्तम प्रथाओं को ट्यूनिंग

मेरे अपने में से कुछ:

  • मैं, DDL पक्ष यह है कि मैं एक बहुत अधिक उदारतापूर्वक अनुक्रमित का उपयोग से पाया है के बाद से मैं आमतौर पर केवल एक दिन में एक बार आवेषण के बारे में चिंता और सूचकांक के साथ पुनर्निर्माण बैच आवेषण कर सकते हैं ।

  • मैं आम तौर पर डेटा तेजी से मिलती है

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

मुझे लगता है कि मैं स्मृति प्रबंधन और अन्य डेटाबेस सेटिंग्स पर कुछ जानकारी मिल जाएगा उम्मीद कर रहा था, लेकिन मैं किसी भी उपयोगी सबसे अच्छा Postgres आधारित डेटा भंडारण के लिए विशिष्ट प्रथाओं को सुनने के लिए खुशी होगी।

+2

इसका कोई संक्षिप्त जवाब नहीं है। यदि आप सामान्य रूप से PostgreSQL को ट्यून करने के बारे में जानना चाहते हैं तो मैं निम्नलिखित पुस्तक की अनुशंसा कर सकता हूं: http: //www.packtpub।com/postgresql-90-high-performance/book (एक निशुल्क अध्याय उपलब्ध है) – Eelke

+0

हमें बताएं कि आपको कुछ रोचक जानकारी मिली है या नहीं। जब हमने समय आयाम और तथ्य सारणी में 'bigint' को' छोटा 'बदल दिया, तो हमें बड़ा प्रदर्शन परिवर्तन मिला। –

+0

मैं जोश बर्कस http://vimeo.com/9889075 से इस उत्कृष्ट बात को "पोस्टग्रेएसक्यूएल प्रदर्शन के लिए 5 कदम" देखने की सलाह दूंगा। यह आपके कई प्रश्नों का उत्तर देगा या आपको स्वयं जवाब देने के करीब आ जाएगा। – Will

उत्तर

1

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

2

मेरा अनुभव (एक बहुत छोटे पैमाने पर बेशक जब यह डेटा गोदामों के लिए आता है):

  • की तरह आप का उल्लेख, पूर्व एकत्रित डेटा आसानी से सबसे महत्वपूर्ण बात है, क्योंकि यह डेटा की मात्रा कम कर देता है कि परिमाण के कई आदेशों द्वारा पढ़ा जाना चाहिए।
  • लघु लेखन लेनदेन, subtransactions और savepoints से बचें। इसमें पीएल/पीजीएसक्यूएल में अपवाद हैंडलिंग शामिल है। ये उपलब्ध "लेनदेन आईडी" स्थान के माध्यम से जल्दी से जलते हैं, और expensive "wraparound" vacuums that need to rewrite whole tables का कारण बनते हैं।
  • मैंने पाया कि विभाजन तालिकाएं जैसे कि प्रत्येक विभाजन अलग-अलग कर्नेल के कैश में फिट हो सकता है, यदि आपको कभी भी ऐसा करने की आवश्यकता है, तो रखरखाव और माइग्रेशन के लिए अच्छा है। इसका मतलब यह है कि आप प्रत्येक इंडेक्स के लिए एक स्कैन की बजाय डिस्क से केवल 1 सेक स्कैन के साथ विभाजन पर सभी इंडेक्स को पुन: बना सकते हैं।
  • क्रिस की तरह पहले से ही उल्लेख किया गया है, work_mem और रखरखाव_work_mem के साथ उदार हो; यदि आपका वर्कलोड रैम में फिट नहीं है तो मेमोरी में अधिक अस्थायी डेटा रखने से स्मार्ट क्वेरी प्लान (सबसे महत्वपूर्ण हैशएग्रेगेट) के कारण I/O और CPU समय बचाता है।
  • यदि आपको भारी प्रकार की आवश्यकता है, तो यह अस्थायी फ़ाइलों को संग्रहीत करने के लिए एक समर्पित एसएसडी खरीदने में मदद कर सकता है।
संबंधित मुद्दे