2016-12-10 5 views
9

धीमी क्वेरी लॉगिंग चालू होने के साथ, हम अपने उत्पादन डेटाबेस को पूरा करने के लिए बहुत से COMMIT एस को कई सेकंड के ऊपर लेते हुए देखते हैं। जांच पर, ये आम तौर पर सरल लेनदेन होते हैं: पंक्ति, UPDATE पंक्ति, COMMIT पंक्ति प्राप्त करें। इन विशेष लेनदेन में SELECT एस और UPDATE एस धीमे के रूप में लॉग इन नहीं किए जा रहे हैं। क्या हम कुछ भी कर सकते हैं, या उपकरण जो हम उपयोग कर सकते हैं, इन धीमी गति के कारणों का पता लगाने के लिए? हम एक एसएसडी पर चल रहे हैं, और एक गुलाम के लिए स्ट्रीमिंग कर रहे हैं, अगर इससे कोई फर्क पड़ता है।धीमी पोस्टग्रेस्क्ल 9.3 COMMITs

+2

प्रतिकृति के लिए स्ट्रीमिंग एक बड़ा अंतर बना सकता है। सिंक्रोनस प्रतिकृति सक्षम है? यदि ऐसा है, तो आसानी से देरी हो सकती है। आप पुष्टि कर सकते हैं कि यह अस्थायी रूप से सिंक्रोनस प्रतिकृति को अक्षम कर रहा है (सेटिंग 'synchronous_standby_names =' '' या सेटिंग 'synchronous_commit =' local'' 'सेटिंग –

+0

दोनों सेटिंग्स डिफ़ॉल्ट पर सेट हैं, जैसा कि मैं दस्तावेज़ों को समझता हूं, मतलब है कि synchronous_commit प्रभावी रूप से पहले से ही 'स्थानीय' है। –

+1

यह देखने के लिए कि क्या आपके लेखन का तर्क है, 'log_lock_waits = true' आज़माएं। – teppic

उत्तर

0

पोस्टग्रेज़ सिंक्रोनस हैं। इसका मतलब है कि वे अगले एक में जाने से पहले वाल लिखने के लिए इंतजार करेंगे। इसके लिए समायोजित करने के लिए आप कॉन्फ़िगरेशन फ़ाइल में WAL सेटिंग्स को समायोजित कर सकते हैं।

आप कॉन्फ़िगरेशन फ़ाइल में synchronous_commit के साथ सत्र/उपयोगकर्ता स्तर या डेटाबेस चौड़े पर एसिंक्रोनस को प्रतिबद्ध स्तर सेट कर सकते हैं।

डेटाबेस पक्ष पर।

अपने टेबल को वैक्यूम आंकड़े अपडेट करें। यह आपके प्रदर्शन के अपडेट के बाद से मृत tuples से छुटकारा पा जाएगा, वहाँ कई होंगे।

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