2011-03-11 12 views
79

में कनेक्शन की वर्तमान संख्या प्राप्त करने के लिए सही क्वेरी निम्न में से कौन सा दो सटीक है?PostgreSQL डीबी

select numbackends from pg_stat_database; 

select count(*) from pg_stat_activity; 
+3

क्या के मामले में बेहतर है? –

+1

सटीकता –

उत्तर

124

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

SELECT sum(numbackends) FROM pg_stat_database; 

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

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

-3

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

+1

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

+3

आप सही हैं। मैंने दृश्य परिभाषा पर काफी बारीकी से नहीं देखा। उपयोगकर्ता आईडी पर प्रतिबंध सिर्फ pg_authid के खिलाफ शामिल होने के लिए है। मेरी गलती। –

2

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

netstat -a -n | ढूंढें/सी "127.0.0.1:13306"