2008-11-06 4 views
12

MySQL 서블릿을 사용하여 MySQL DB에 액세스하는 웹 응용 프로그램을 개발 중이며 현재 열려있는 DB에 대한 연결 수를 어떻게 알 수 있습니까?db 연결을 열려면 어떻게 계산합니까?

편집 : 나는, 그것은 나를 보여 주었다 시도 "쇼 PROCESSLIST"

: 2695159,하지만 그건 옳지 않아, 난 그냥이 새로운 프로젝트를 개발하고 있어요, 내가 유일한 사용자입니다, 많은 것을이 없습니다 프로세스가 실행되고, 내가 원하는 것은 내 프로젝트의 DB에 액세스하는 사용자의 수가 아니라 모든 db 사용자의 수가 아니라 내 데이터베이스에 로그인 한 사용자가 하나의 테이블 만 갖는 것입니다.

답변

2

쇼 PROCESSLIST는

9

당신은 연결 수를 얻을 수있는 MySQL의 명령 show processlist을 사용할 수 있습니다.

그러나 서블릿에서 오지 않을 수도있는 동일한 사용자 ID로 데이터베이스에 연결 한 것을 보여줍니다.

일반적으로 연결 풀 개체 (http://java-source.net/open-source/connection-pools 참조)를 사용하여 MySQL 서버 연결을 관리하는 것이 더 좋습니다. 이렇게하면 DB 연결을 영구화하여 성능을 향상시킬 수 있으므로 각 페이지로드마다 새 DB 연결의 오버 헤드가 항상있는 것은 아닙니다.

서블릿이 연결 수를 알아야하는 경우 연결 풀에는 현재 활성화 된 연결 수를 알려주는 메서드가 있어야합니다. 같은 'Threads_connected' 또는 쇼 글로벌 상태와 같은

3

쇼 상태 'Threads_connected'

사용자 맥락에서 그 둘 사이의 차이에 대한 확인, 당신은 아직도 당신이 볼 것지는 문제가 발생 할 수 없음 모든 연결은 앱의 연결뿐만 아니라

도 Threads_running을 검사하여 실행중인 스레드 (예 : 잠자기 상태가 아닌) 만 볼 수 있습니다.

13

은 MySQL 버전에 따라

SELECT COUNT(*) FROM information_schema.PROCESSLIST;

에 선택을 수행 할 수 있으며 사용자, 데이터베이스 및 호스트 IP 사이에 where 할 수 있습니다. 예를 들어

: 당신은 Information_Schema.Processlist에서 당신에 속한 데이터를 선택할 수 있습니다

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

. 루트로 로그인 한 경우에만 모니터링에 사용할 수 있음을 의미합니다. 그렇지 않으면 로그인 한 사용자의 연결이 표시됩니다.

당신이 적절한 모니터링 SQL을 원하는 경우

, 그것은 것입니다 :

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

실행 다음 쿼리, 그것은 어떤 호스트 이름을 나열하고. 각 호스트의 연결 수 :

SELECT 호스트, count (호스트) FROM information_schema.processlist GROUP BY 호스트;

0

사용할 수 있습니다.

SHOW GLOBAL STATUS; 또는 은 "Threads_connected"와 같은 전역 상태를 표시합니다.

연결 상태에서 총 연결 수를 확인할 수 있습니다.

0

또한 쇼에 의해 열린 연결을 Threads_connected 변수 이름과 같은 상태 셀 수 :

SHOW STATUS WHERE variable_name = 'Threads_connected'; 

을 또는 당신은 또한 다음과 같은 information_schema.PROCESSLIST에서 직접 프로세스 목록을 셀 수 :

SELECT COUNT(*) FROM information_schema.PROCESSLIST; 
관련 문제