查看数据库的当前连接数和状态的几种方式:
只是能看出数据库服务是否正在运行和启动路径
#切换用户
su postgres
pg_ctl status
1.查看数据库进程
统计当前postgresql相关进程数,在大体上可以估算数据库的连接数,非精准,但是目前最常用的
ps -ef |grep postgres |wc -l
包含本窗口的所有数据库连接数
SELECT count(*) FROM pg_stat_activity;
2.数据库CPU占用过高
(1)查看CPU占用
使用top命令查看CPU占用情况(如果用了容器,需要进入容器内部查看相应的进程)
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
(2)根据PID(系统进程号)来查询执行的sql
su - postgres
psql
SELECT procpid, START, now()-START AS lap, current_query FROM (
SELECT backendid, pg_stat_get_backend_pid (S.backendid) AS procpid,
pg_stat_get_backend_activity_start (S.backendid) AS START,pg_stat_get_backend_activity (S.backendid) AS current_query
FROM (SELECT pg_stat_get_backend_idset () AS backendid) AS S) AS S WHERE current_query <> '<IDLE>' and procpid=15874
ORDER BY lap DESC;
定位到sql之后,查看执行计划即可explain+sql