Postgres: मैं डेटाबेस सर्वर द्वारा निष्पादित किए जा रहे सभी SQL स्टेटमेंट को कैसे देख सकता हूं?


23

मैं हर SQL स्टेटमेंट की समीक्षा करने की प्रक्रिया में हूं जो एक एप्लिकेशन डेटाबेस के खिलाफ, प्रदर्शन कारणों से करता है। क्या PostgreSQL डेटाबेस सर्वर द्वारा निष्पादित किए जाने वाले सभी कथनों को लॉग करने का एक आसान तरीका है? धन्यवाद।


इस निम्नलिखित विवरण में कैसे वर्तमान चल रहा है क्वेरी को देखने के लिए के बारे में समझाया गया है tutorialdba.com/2016/11/pgstatactivity-view-explanation-in.html
Nijam

जवाबों:


27

आपके द्वारा खोजा जा रहा कॉन्फ़िगरेशन विकल्प log_statement = "all"(यदि आप केवल कथन चाहते हैं), या log_min_statement_duration = <some number>यदि आप "धीमी" क्वेरी के बाद ("धीमी" के कुछ मूल्य के लिए) हैं। लॉगिंग कॉन्फ़िगरेशन पर अधिक जानकारी के लिए http://www.postgresql.org/docs/current/static/runtime-config-log.html देखें ।


1
सभी बयानों को लॉग करना एक प्रदर्शन हत्यारा है (जैसा कि आधिकारिक डॉक्स में कहा गया है)। हालाँकि, 8.4 को explain analyzeटाई पर धीमी गति से क्वेरी करने की एक अच्छी सुविधा है , जिसे आप निष्पादित किया गया था, आप इस के साथ परीक्षण शुरू करना चाह सकते हैं क्योंकि 8.4 अभी तक जारी नहीं किया गया है, लेकिन यह जानना एक अच्छा विकल्प है कि निष्पादन के समय खुश रहें , अगर विश्लेषण की व्याख्या उत्पादन ठीक है, तो आप शायद I / O या CPU सीमा के साथ मुद्दों में चल रहे हैं, लेकिन कम से कम आपको पता चल जाएगा कि यह स्वयं क्वेरी नहीं है
serverhorror

5
मुझे वास्तव में log_statement = 'mod' विकल्प पसंद है। यह केवल सभी चुनिंदा कथनों को बनाता है, अपडेट करता है और हटाता है, और दिखाता है। बहुत अच्छा है अगर आप यह पता लगाने की कोशिश कर रहे हैं कि कौन सा कोड किसी क्षेत्र को मोड़ रहा है।
डॉन किर्कबी

5

इसके लिए auto_explainमॉड्यूल बहुत उपयोगी है। यह केवल बयानों को लॉग नहीं करेगा, यह उनकी निष्पादन योजनाओं को लॉग करेगा और PL / PgSQL फ़ंक्शंस के भीतर चलने वाले स्टेटमेंट भी लॉग इन कर सकता है। जब तक आप विश्लेषण को सक्षम नहीं करते हैं, तब तक प्रदर्शन हिट काफी कम होता है, जिस स्थिति में आप सभी प्रश्नों के लिए उचित ओवरहेड का समय निकाल देते हैं।

auto_explainदस्तावेज में देखें ।


ध्यान दें कि "auto_explain" एक मॉड्यूल है, इस प्रकार यह AWS RDS पोस्टग्रेज डेटाबेस पर नहीं चलता है :(
johntellsall

1
@johntellsall RDS समर्थन करता है auto_explain, यह धन्य मॉड्यूल की उनकी सूची में है। दस्तावेज़ को डॉक्स.समेस्ज़ोन
क्रेग रिंगर

3

बेशक, आप अपने आप से सबसे धीमी क्वेरी का पता लगा सकते हैं, लेकिन मैं आपको सलाह देता हूं कि आप pgFouine - एक PostgreSQL लॉग विश्लेषक का उपयोग करें । यह स्थापित करना आसान है और वास्तव में उपयोगी है।

नमूना रिपोर्ट: यहाँ और यहाँ


मैंने एक परियोजना पर pgFouine का उपयोग किया और कई स्थानों की पहचान की जहां एक सूचकांक चीजों को बहुत मदद करेगा।
पॉल टॉम्बलिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.