धीमी गति से चलने वाले प्रश्नों के आंकड़े प्राप्त करें


10

मेरा डेटाबेस एप्लिकेशन कई अलग-अलग क्वेरी चलाता है। मैंने log_min_duration_statement१००० पर सेट किया है। लेकिन वहाँ लॉग किए गए प्रश्न हमेशा धीमे नहीं होते हैं, ज्यादातर बार वे केवल कुछ एमएस लेते हैं।

क्या सभी प्रश्नों का एक आंकड़ा प्राप्त करना संभव है, और उन्हें 1000 मी से अधिक समय कैसे लगा?


1
देखें कि क्या मदद करता है: log_min_duration_statement सेटिंग को अनदेखा किया जाता है । या आप सेटिंग बदलने के बाद कॉन्फ़िगरेशन को फिर से लोड करना भूल गए।
डैनियल वेरिटा

जवाबों:


11

SQL कमांड के साथ एक्सटेंशन pg_stat_statements स्थापित करें

CREATE EXTENSION pg_stat_statements

आप यह सुनिश्चित करना चाहते हैं कि आप इसे एक उपयुक्त उपयोगकर्ता (जैसे कि उपयोगकर्ता आपके एप्लिकेशन का उपयोग करता है या कुछ dba खाते) का उपयोग करके बना सकते हैं। ध्यान रखें कि जो भी उपयोगकर्ता एक्सटेंशन बनाता है, वह उसका मालिक भी होगा।

यह प्रयोग करने योग्य होने के लिए एक सर्वर पुनरारंभ की आवश्यकता होगी (क्योंकि आपको postgresql.conf में कॉन्फिग को थोड़ा बदलना होगा जो मेमोरी खपत को प्रभावित करता है), लेकिन यह आपको सभी प्रश्नों पर आंकड़े देगा।

कृपया pg_stat_statements क्या प्रदान करता है, इसके बारे में अधिक जानकारी के लिए प्रलेखन पृष्ठ देखें । Pg_stat_statements के लिए postgresql.conf कॉन्फ़िगरेशन फ़ाइल के कॉन्फ़िगरेशन पर त्वरित संदर्भ के लिए यहां देखें ।

एक बार जब आप इसे इंस्टॉल और रन कर लेते हैं, तो आप pg_stat_statements व्यू को क्वेरी करके आंकड़े देख सकते हैं ..

select * from pg_stat_statements;
-- or
select * from pg_stat_statements where total_time / calls > 200; -- etc ..

2

कैसे @JoishiBodio ने कहा कि आप pg_stat_statementsधीमी क्वेरी आँकड़े देखने के लिए एक्सटेंशन का उपयोग कर सकते हैं । स्थापना के साथ संघर्ष करने वालों के लिए (जैसा मैंने किया):

  1. pg_stat_statementsउपलब्ध एक्सटेंशनों की सूची देखें कि क्या है:

    SELECT * FROM pg_available_extensions;
  2. postgresql-contribअपने सिस्टम पैकेज प्रबंधक के माध्यम से डेबियन / उबंटू पर पैकेज स्थापित करने का प्रयास करें :

    sudo apt-get install postgresql-contrib-9.5

फिर स्टेप 1 फिर करें।

  1. जोड़े pg_stat_statementsको shared_preload_librariesPostgreSQL विन्यास में:

के माध्यम से postgres.conf:

    shared_preload_libraries = 'pg_stat_statements'

कमांड लाइन तर्क के माध्यम से (कोई उद्धरण नहीं!):

    postgres -c shared_preload_libraries=pg_stat_statements
  1. फिर एक डेटाबेस में एक्सटेंशन बनाएं:

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