我正在开发一个使用Java servlet访问Mysql数据库的Web应用程序,我如何获取当前打开的数据库的连接数?如何计算打开的数据库连接?
编辑:
我想“SHOW PROCESSLIST”,这表明我:2695159,但这是不正确的,我只是在开发这个新的项目,我是唯一的用户,可能没有那么多进程运行,我想要的是访问我的项目的数据库,而不是所有数据库用户的数量,但仅登录到我的数据库只有一个表的用户数。
我正在开发一个使用Java servlet访问Mysql数据库的Web应用程序,我如何获取当前打开的数据库的连接数?如何计算打开的数据库连接?
编辑:
我想“SHOW PROCESSLIST”,这表明我:2695159,但这是不正确的,我只是在开发这个新的项目,我是唯一的用户,可能没有那么多进程运行,我想要的是访问我的项目的数据库,而不是所有数据库用户的数量,但仅登录到我的数据库只有一个表的用户数。
SHOW PROCESSLIST
你可以使用MySQL命令show processlist
获得连接的数量。
但是,这也会显示任何使用相同的用户ID到数据库的连接,这可能不是来自您的servlet。
一般来说,我建议您最好使用连接池对象(请参阅http://java-source.net/open-source/connection-pools)来管理与MySQL服务器的连接。这可以通过使数据库连接持久化来提高性能,所以每次页面加载时都不会总是有新的数据库连接开销。
如果你的servlet需要知道连接的数量,那么你的连接池应该有一个方法告诉你当前有多少连接是活动的。
显示像像“threads_connected的” 或 显示全球状态的状态“threads_connected的”
不知道有关在用户上下文这两个之间的区别,你仍然可以从你会看到问题的困扰所有连接,而不仅仅是来自您的应用的连接。
你甚至可以检查Threads_running,只看到正在运行的线程(例如不睡觉)。
根据您的MySQL版本,你可以在
SELECT COUNT(*) FROM information_schema.PROCESSLIST;
进行选择,你可以做一个where
用户,数据库,主机IP之间。
例如:
USE information_schema;
SELECT COUNT(*) FROM PROCESSLIST WHERE db ="mycase" AND HOST LIKE "192.168.11.174%"
只能从Information_Schema.Processlist
选择属于你的数据。这意味着如果您以root用户身份登录,则只能将其用于监控,否则您将看到来自您登录的用户的连接。
如果你想适当的监测SQL,这将是:
SELECT variable_value
FROM INFORMATION_SCHEMA.GLOBAL_STATUS
WHERE variable_name='threads_connected'
运行以下查询,它列出了主机名和没有。来自每个主机的连接:
SELECT host,count(host)FROM information_schema。processlist GROUP BY主机;
你可以用这个
SHOW GLOBAL STATUS; 或 显示全局状态,如“Threads_connected”;
从Connections状态您可以找出连接总数。
您也可以通过计算显示打开的连接状态从Threads_connected
变量名是这样的:
SHOW STATUS WHERE variable_name = 'Threads_connected';
或者你也可以直接从information_schema.PROCESSLIST
计数进程列表如下图所示:
SELECT COUNT(*) FROM information_schema.PROCESSLIST;