在我的项目中,我想收集PostgreSQL服务器的性能计数器。为此我想要查询从数据库中收集它。我是postgreSQL的新手。当我在搜索时,我有类似的东西,
SELECT * FROM pg_stat_database
但是当我以下列方式在java中使用它时,这里Map_PostgreSQL是一个hashmap。
while(rs.next())
{
Counter_Name.add(rs.getString(1).trim());
Map_PostgreSQL.put(rs.getString(1).trim(), rs.getString(2));
}
我的输出就像
{12024=template0, 1=template1, 12029=postgres}
在MySQL中收集状态变量的实际查询是什么,例如“ SHOW GLOBAL STATUS ”。
提前致谢..
答案 0 :(得分:0)
1,尝试在PostgreSQL Shell中启动sql查询,以确切地查看返回的数据以及它在行和列中的组织方式。
您将看到hashmap键是您的datid(数据库ID),值是您的数据库名称。
我认为您认为统计数据的结构是"行"而它们是按列结构的。
不要忘记:PostgreSQL是一个数据库服务器,这意味着它可以处理多个数据库(事实上,它有几个数据库,因为其中一些数据库已经创建,例如' postgres'数据库本身 - Postgres(服务器)在内部使用,或者' template0')。启动:
SELECT * FROM pg_stat_database;
您要求服务器返回每个数据库的统计信息(前提是您已获得这些数据库)
如果您只想拥有自己数据库的统计数据,请执行以下操作:
SELECT * FROM pg_stat_database WHERE datname='your_database_name';
希望这有帮助