वहाँ SQL सर्वर प्रोफाइलर के बराबर एक PostgreSQL है?


84

मुझे PostgreSQL सर्वर पर सबमिट किए गए प्रश्नों को देखने की आवश्यकता है। आम तौर पर मैं SQL सर्वर भूमि में इस क्रिया को करने के लिए SQL सर्वर प्रोफाइलर का उपयोग करता हूं, लेकिन मुझे अभी तक यह पता नहीं चल पाया है कि PostgreSQL में यह कैसे किया जाता है। प्रतीत होता है कि कुछ पे-टू-टूल्स हैं, मुझे उम्मीद है कि एक खुला स्रोत संस्करण होगा।

जवाबों:


59

सर्वर के सभी प्रश्नों की सूची प्राप्त करने के लिए आप log_statement config सेटिंग का उपयोग कर सकते हैं

https://www.postgresql.org/docs/current/static/runtime-config-logging.html#guc-log-statement

बस सेट करें, और लॉगिंग फ़ाइल पथ और आपके पास सूची होगी। आप इसे केवल लंबे समय तक चलने वाले प्रश्नों को लॉग करने के लिए भी कॉन्फ़िगर कर सकते हैं।

फिर आप उन प्रश्नों को ले सकते हैं और उन पर EXPLAIN चला सकते हैं ताकि पता लगा सकें कि उनके साथ क्या हो रहा है।

https://www.postgresql.org/docs/9.2/static/using-explain.html


1
परिपूर्ण, इसके खिलाफ एक पूंछ फेंक दिया
BozoJoe

6
ठीक है, कॉल करने के लिए इसकी हार्ड .csv लॉग फाइलें "SQL सर्वर प्रोफाइलर के बराबर" ...
Feofilakt

31

जोशुआ के उत्तर को जोड़ते हुए , यह देखने के लिए कि वर्तमान में कौन से प्रश्न बस चल रहे हैं , किसी भी समय निम्न कथन जारी करें (जैसे PGAdminIII की क्वेरी विंडो में):

SELECT datname,procpid,current_query FROM pg_stat_activity;

नमूना उत्पादन:

     datname    | procpid | current_query
 ---------------+---------+---------------
  mydatabaseabc |    2587 | <IDLE>
  anotherdb     |   15726 | SELECT * FROM users WHERE id=123 ;
  mydatabaseabc |   15851 | <IDLE>
 (3 rows)

4
PG (9.3) के मेरे संस्करण के साथ, मैंने निम्नलिखित क्वेरी का उपयोग किया: SELECT datname, pid, usename, application_name, client_addr, क्वेरी से pg_stat_activity; pg_stat_activity DB 'postgresql' का एक दृश्य है
mrmuggles

3
ग्राहक का चयन करें, राज्य, एक्सचेंज, क्वेरी से pg_stat_activity;
दिमित्री डायचकोव

3
लंबे प्रश्नों को प्रदर्शित करने के लिए "क्वेरी" कॉलम की लंबाई बहुत कम है।
देजन जनाज़ेविक

25

मैंने pgBadger ( http://dalibo.github.io/pgbadger/ ) की खोज की और यह एक शानदार उपकरण है जिसने मेरे जीवन को कई बार बचाया। यहां रिपोर्ट का एक उदाहरण है: http://dalibo.github.io/pgbadger/samplev4.html । यदि आप इसे खोलते हैं और 'शीर्ष' मेनू पर जाते हैं, तो आप सबसे धीमी क्वेरी और समय लेने वाले प्रश्नों को देख सकते हैं। फिर आप विवरण पूछ सकते हैं और अच्छे ग्राफ़ देख सकते हैं जो आपको घंटों तक प्रश्नों को दिखाते हैं और यदि आप विवरण बटन का उपयोग करते हैं तो आप SQL टेक्स्ट को एक सुंदर रूप में देख सकते हैं। इसलिए मैं देख सकता हूं कि यह उपकरण स्वतंत्र और परिपूर्ण है।


2
बहुत अच्छा उपकरण। मैंने इसे स्थापित करने के लिए इस ट्यूटोरियल का उपयोग किया, क्योंकि आधिकारिक दस्तावेज़ बहुत क्रिया है
mrmuggles

5
बस एक नोट, यह उपकरण केवल * निक्स सिस्टम के लिए है, जो विंडोज उपयोगकर्ताओं के लिए बेकार है
एलेक्स क्लॉस

+1 के रूप में ओपी ने एसक्यूएल सर्वर प्रोफाइलर जैसे उपकरण के लिए पूछा, मैन्युअल रूप से आवश्यक प्रदर्शन जानकारी निकालने के लिए विकल्पों को कॉन्फ़िगर नहीं किया।
ईएमेज़ जूल

17

मुझे PostgreSQL सर्वर पर सबमिट किए गए प्रश्नों को देखने की आवश्यकता है

एक विकल्प के रूप में, यदि आप pgAdmin का उपयोग करते हैं (मेरी तस्वीर पर यह pgAdmin 4 v2.1 है)। आप "डैशबोर्ड" टैब के माध्यम से प्रश्नों का अवलोकन कर सकते हैं: pgadmin4 अनुप्रयोग, डैशबोर्ड से क्वेरी


2
यह लंबे SQL कथन नहीं दिखा सकता है। SQL छोटा हो जाता है।
देजन जनाज़ेविक

0

आप pg_stat_statements एक्सटेंशन का उपयोग कर सकते हैं ।

यदि dob में db रन कर रहा है तो बस इस कमांड को जोड़ें docker-compose.yml, अन्यथा अपने सेटअप के इंस्टॉलेशन निर्देशों को देखें:

command: postgres -c shared_preload_libraries=pg_stat_statements -c pg_stat_statements.track=all -c max_connections=200

और फिर db में यह क्वेरी चलाएँ:

CREATE EXTENSION pg_stat_statements;

अब अधिक समय लगने वाले संचालन को देखने के लिए:

SELECT * FROM pg_stat_statements ORDER BY total_time/calls DESC LIMIT 10;

या जो आप देख रहे हैं उसे खोजने के लिए उस दृश्य पर अन्य प्रश्नों के साथ खेलें।

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