2008-11-06 11 views
12

मैं माइस्क्ल डीबी तक पहुंचने के लिए जावा सर्वलेट का उपयोग कर एक वेब ऐप विकसित कर रहा हूं, मैं वर्तमान में खुले मेरे डीबी में कनेक्शन की संख्या कैसे प्राप्त कर सकता हूं?ओपन डीबी कनेक्शन कैसे गिनें?

संपादित करें:

मैंने कोशिश की "शो processlist", यह मेरे से पता चला है: 2,695,159, लेकिन यह सही नहीं है, मैं सिर्फ इस नई परियोजना के विकास कर रहा हूँ, मैं केवल उपयोगकर्ता हूँ, नहीं कर सकता है कि कई चल रही प्रक्रियाएं, जो मैं चाहता हूं वह तक पहुंचने वाले उपयोगकर्ताओं की संख्या है जो मेरे प्रोजेक्ट के डीबी, सभी डीबी उपयोगकर्ताओं की संख्या नहीं है, लेकिन केवल मेरे डेटाबेस में लॉग इन किए गए हैं जिनमें केवल एक टेबल है।

उत्तर

9

आप MySQL आदेश show processlist का उपयोग कनेक्शन की संख्या प्राप्त करने के लिए कर सकता है।

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

आम तौर पर मैं सुझाव दूंगा कि आप कनेक्शन कनेक्शन ऑब्जेक्ट (http://java-source.net/open-source/connection-pools देखें) का उपयोग कर शायद बेहतर हो सकते हैं ताकि MySQL सर्वर से आपके कनेक्शन का प्रबंधन किया जा सके। यह डीबी कनेक्शन लगातार बनाकर प्रदर्शन बढ़ा सकता है, इसलिए आपके पास प्रत्येक पृष्ठ लोड के लिए हमेशा एक नए डीबी कनेक्शन का ओवरहेड नहीं होता है।

यदि आपके सर्वलेट को कनेक्शन की संख्या जानने की आवश्यकता है तो आपका कनेक्शन पूल एक विधि के साथ आना चाहिए जो आपको बताता है कि वर्तमान में कितने कनेक्शन सक्रिय हैं। की तरह की तरह 'Threads_connected' या शो वैश्विक स्थिति

3

शो स्थिति 'Threads_connected'

एक उपयोगकर्ता के संदर्भ में उन दोनों के बीच अंतर के बारे में सुनिश्चित नहीं हैं, और आप अभी भी समस्या यह है कि आप देखना होगा से पीड़ित हो सकता है सभी कनेक्शन, न केवल आपके ऐप से।

आप थ्रेड्स_रिंगिंग को केवल थ्रेड (उदाहरण नहीं सोते) देखने के लिए भी देख सकते हैं।

13

अपने MySQL संस्करण के आधार पर आप

SELECT COUNT(*) FROM information_schema.PROCESSLIST;

पर एक का चयन कर सकते हैं और आप उपयोगकर्ता, डाटाबेस, और मेजबान आईपी के बीच एक where कर सकते हैं।

उदाहरण के लिए:

USE information_schema; 
SELECT COUNT(*) FROM PROCESSLIST WHERE db ="mycase" AND HOST LIKE "192.168.11.174%" 
2

आप केवल Information_Schema.Processlist से डेटा है कि आप के अंतर्गत आता है चुन सकते हैं। इसका अर्थ यह है कि आप इसे केवल निगरानी के लिए उपयोग कर सकते हैं यदि आप रूट के रूप में लॉग इन हैं, अन्यथा आप अपने उपयोगकर्ता से आने वाले कनेक्शन देख रहे होंगे, जिसमें आपने लॉग इन किया है।

आप उचित निगरानी एसक्यूएल चाहते हैं, यह हो जाएगा:

SELECT variable_value 
FROM INFORMATION_SCHEMA.GLOBAL_STATUS 
WHERE variable_name='threads_connected' 
3

भागो निम्न क्वेरी, यह होस्ट नाम बाहर सूचीबद्ध करता है और कोई। प्रत्येक होस्ट से कनेक्शन का:

चयन होस्ट, गिनती (होस्ट) info_schema से।मेजबान द्वारा प्रक्रिया सूची ग्रुप;

0

आप इस

ग्लोबल स्थिति दिखा सकते हैं; या "थ्रेड्स_कनेक्टेड" जैसे वैश्विक स्थिति दिखाएं;

कनेक्शन स्थिति से आप कनेक्शन की कुल संख्या पा सकते हैं।

0

तुम भी शो से खुले कनेक्शन Threads_connected चर नाम से इस तरह की स्थिति की गिनती कर सकते हैं:

SHOW STATUS WHERE variable_name = 'Threads_connected'; 

या आप भी नीचे की तरह information_schema.PROCESSLIST से सीधे प्रक्रिया सूची भरोसा कर सकते हैं:

SELECT COUNT(*) FROM information_schema.PROCESSLIST; 
संबंधित मुद्दे