PostgreSQL DB में कनेक्शन की वर्तमान संख्या प्राप्त करने के लिए सही क्वेरी


जवाबों:


226

उन दो की आवश्यकता नहीं के बराबर हैं। पहले वाले का समतुल्य संस्करण होगा:

SELECT sum(numbackends) FROM pg_stat_database;

उस मामले में, मैं उम्मीद करूंगा कि यह संस्करण दूसरे की तुलना में थोड़ा तेज होगा, सिर्फ इसलिए कि इसमें गिनती करने के लिए कम पंक्तियाँ हैं। लेकिन आप एक अंतर को मापने में सक्षम होने की संभावना नहीं रखते हैं।

दोनों प्रश्न बिल्कुल एक ही डेटा पर आधारित हैं, इसलिए वे समान रूप से सटीक होंगे।


1
सच नहीं वे समान रूप से सटीक हैं। मेरा जवाब देखिए।
गार्गी

2
ध्यान दें कि जब कमांड कमांड लाइन टूल को पोस्ट किया जाता है, तो इस क्वेरी को निष्पादित करने के लिए PSQL का उपयोग किया जाता है, कनेक्शन की कुल संख्या इस क्वेरी का परिणाम है - 1 चूंकि psql कनेक्शन बनाया भी एक कनेक्शन के रूप में शामिल है
neonidian

25

निम्नलिखित क्वेरी बहुत मददगार है

select  * from
(select count(*) used from pg_stat_activity) q1,
(select setting::int res_for_super from pg_settings where name=$$superuser_reserved_connections$$) q2,
(select setting::int max_conn from pg_settings where name=$$max_connections$$) q3;

2
क्या आप बता सकते हैं कि 'प्रयुक्त' और 'res_for_super' कॉलम क्या हैं?
शर्त

हैलो, उपयोग किया जाता है कनेक्शन, res_for_super कनेक्शन
सुपरसुसर

12

वे निश्चित रूप से अलग परिणाम दे सकते हैं। बेहतर है

select count(*) from pg_stat_activity;

ऐसा इसलिए है क्योंकि इसमें वाल प्रेषक प्रक्रियाओं के कनेक्शन शामिल हैं जिन्हें नियमित कनेक्शन के रूप में माना जाता है और उनकी ओर ध्यान जाता है max_connections

देखें max_wal_senders


2

उनकी स्थिति के अनुसार सभी सत्रों का एकत्रीकरण (कितने निष्क्रिय हैं, कितने कुछ कर रहे हैं ...)

select state, count(*) from pg_stat_activity  where pid <> pg_backend_pid() group by 1 order by 1;

0

टीसीपी कनेक्शन की संख्या आपकी मदद करेगी। याद रखें कि यह किसी विशेष डेटाबेस के लिए नहीं है

netstat -a -n | find /c "127.0.0.1:13306"

1
यह टिप्पणी विंडोज आधारित ओएस के लिए है। -Pni lsof:: लिनक्स के लिए यह निम्न में से कुछ हो सकता है | fgrep ">" | fgrep मैं स्थापित | 5432 WC -l
XXL

3
यह SQL क्वेरी नहीं है, कृपया विशिष्ट प्रश्नों के लिए शोर न जोड़ें।
Bugmenot123

-3

स्रोत कोड को देखने से ऐसा लगता है कि pg_stat_database क्वेरी आपको सभी उपयोगकर्ताओं के लिए वर्तमान डेटाबेस से कनेक्शन की संख्या प्रदान करती है। दूसरी ओर, pg_stat_activity क्वेरी केवल क्वेरी करने वाले उपयोगकर्ता के लिए वर्तमान डेटाबेस के लिए कई कनेक्शन देता है।


1
यह गलत है। pg_stat_activity उपयोगकर्ता की परवाह किए बिना सभी कनेक्शन देता है। यह आपको एक फ़ील्ड देता है जो कहता है कि यह कौन सा उपयोगकर्ता है, जिसे आप चाहें तो फ़िल्टर कर सकते हैं। यदि आप एक ही उपयोगकर्ता या एक सुपरयूज़र नहीं हैं, तो यह आपको क्वेरी का पाठ नहीं देगा , लेकिन यह अभी भी कनेक्शन दिखाएगा।
मैग्नस हैगेंडर

3
आप सही हे। मैं दृश्य परिभाषा पर पर्याप्त रूप से ध्यान नहीं देता था। Userid पर प्रतिबंध सिर्फ pg_authid के खिलाफ शामिल होने के लिए है। मेरी गलती।
ब्रायन एल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.