2009-07-21 19 views
13

हमारे पास MySQL का उपयोग कर एक अनुप्रयोग चलाया गया था। हमने पाया कि MySQL हमारे ऐप के लिए उपयुक्त नहीं था जब हमने पाया कि उसने जीआईएस क्षमता की कुछ जीआईएस क्षमता का समर्थन नहीं किया है (नोट: mysql केवल न्यूनतम-बाउंड आयताकार जीआईएस खोज का समर्थन करता है)।विंडोज़ पर PostgreSQL इतनी धीमी क्यों है?

तो हमने अपने डीबी को PostgreSQL में बदल दिया। तब हमें पता चला कि विंडोज़ पर पोस्टग्रेस्क्ल 8.2 चल रहा है जो माइस्क्ल 5.1 की तुलना में बहुत धीमी है। धीरे-धीरे, मेरा मतलब लगभग 4-5 गुना धीमा है।

यह क्यों है? क्या कॉन्फ़िगरेशन में कुछ ऐसा है जिसे हमें बदलने की ज़रूरत है?

मैं ऐसे this के रूप में अन्य वेबसाइटों से कुछ टिप्पणियों पाया:

अद्यतन: हमने पाया है कि सुस्ती के कारण ब्लॉब कि हम डीबी में डालने कर रहे हैं के कारण है। हमें 10-15 एमबी/एस की निरंतर दर पर बीएलओबी डालने में सक्षम होना चाहिए। हम प्रत्येक बीएलओबी के लिए libpq के lo_read और lo_write का उपयोग कर रहे हैं जिसे हम सम्मिलित/पढ़ रहे हैं। क्या यह सबसे अच्छा तरीका है? क्या किसी ने पहले उच्च दर पर बड़ी बीएलओबी डालने के लिए Pgsql का उपयोग किया है?

संपादित करें: मैंने सुना है कि pgSQL अभी हाल ही में विंडोज पर वापस पोर्ट गया। क्या यह कारणों में से एक हो सकता है?

+1

1. नवीनतम संस्करण 8.4 है (इस महीने जारी) - अपग्रेड, टेस्ट, रिपोर्ट। 2. यह "अन्य वेबसाइटें" PostgreSQL प्रोजेक्ट का आधिकारिक मेलिंग सूची संग्रह है। लेकिन दूसरी तरफ जो पोस्टिंग आप लिंक करते हैं वह बहुत पुरानी है और बहुत पुरानी है और समर्थित संस्करण (8.0) नहीं है। –

उत्तर

21

मामलों में जहां विंडोज पर PostgreSQL जब हम यह पोर्ट बनाया तालमेल की वजह से, अन्य समाधान की तुलना में एक अतिरिक्त भूमि के ऊपर का भुगतान करती है कर रहे हैं।

उदाहरण के लिए, PostgreSQL, कनेक्शन के प्रति एक प्रक्रिया का उपयोग करता MySQL एक धागा उपयोग करता है। यूनिक्स पर, यह आम तौर पर एक उल्लेखनीय प्रदर्शन अंतर नहीं है, लेकिन विंडोज़ पर नई प्रक्रियाएं बनाना बहुत महंगा है (फोर्क() सिस्टम कॉल की कमी के कारण)। इस कारण से, लगातार कनेक्शन या कनेक्शन पूलर का उपयोग पोस्टग्रेएसक्यूएल का उपयोग करते समय विंडोज पर अधिक महत्वपूर्ण है।

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

आप डेटाबेस के कॉन्फ़िगरेशन को ट्यून करने के बारे में कुछ भी नहीं बताते हैं।डिफ़ॉल्ट रूप से, PostgreSQL के साथ भेजी गई कॉन्फ़िगरेशन फ़ाइल बहुत रूढ़िवादी है। यदि आपने वहां कुछ भी नहीं बदला है, तो आपको निश्चित रूप से इसे देखने की आवश्यकता है। PostgreSQL wiki पर कुछ ट्यूनिंग सलाह उपलब्ध है।

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

+0

आप सही हैं। जब मैंने डिफ़ॉल्ट कॉन्फ़िगरेशन को थोड़ा सा बदल दिया, तो यह थोड़ा तेज़ हो गया। – sivabudh

+0

प्रदर्शन के लिए विंडोज़ पर नवीनतम संस्करण कैसा दिख रहा है? क्या आपका उत्तर आज बहुत बदल जाएगा? –

+0

जबकि प्रदर्शन निश्चित रूप से सुधार हुआ है, वास्तुकला अंतराल अभी भी बना हुआ है। –

7

जबकि PostgreSQL के Windows बंदरगाह अपेक्षाकृत हाल है, मैं समझता हूँ कि इस बारे में और साथ ही अन्य संस्करणों करता है। लेकिन यह निश्चित रूप से एक बंदरगाह है; लगभग सभी डेवलपर्स मुख्य रूप से या विशेष रूप से यूनिक्स/लिनक्स/बीएसडी पर काम करते हैं।

आपको वास्तव में विंडोज़ पर 8.2 चलाना नहीं चाहिए। मेरी राय में, 8.3 पहली विंडोज रिलीज थी जो वास्तव में उत्पादन तैयार थी; 8.4 अभी तक बेहतर है। 8.2 वैसे भी पुराना है, और यदि आप अपग्रेड करना प्रबंधित कर सकते हैं तो आप कई लाभ प्राप्त करेंगे।

विचार करने की एक और बात ट्यूनिंग है। PostgreSQL को इष्टतम प्रदर्शन प्राप्त करने के लिए MySQL से अधिक ट्यूनिंग की आवश्यकता होती है। आप बुनियादी tweaking से अधिक के लिए मदद के लिए mailing lists में से एक को पोस्ट करने पर विचार करना चाह सकते हैं।

+1

PostgreSQL को MySQL से अधिक ट्यूनिंग की आवश्यकता होती है: असल में यह प्रति डिफ़ॉल्ट रूप से बहुत रूढ़िवादी स्मृति उपयोग कॉन्फ़िगरेशन से ग्रस्त है। मुझे नहीं पता कि यह अभी भी मामला है, लेकिन आम तौर पर यह पहला संदिग्ध है। –

0

PostgreSQL MySQL से पहले से ही धीमी एक निश्चित बिंदु (यह वास्तव में तेजी से होता है आप एक हास्यास्पद बड़ा डेटाबेस है जब) पर निर्भर है। बस एफवाईआई, यह आपकी समस्या का कारण नहीं बना रहा है लेकिन इसे ध्यान में रखें।

संबंधित मुद्दे