查看数据库用户
通过GS_USER可以查看数据库中所有用户的列表,还可以查看用户ID(USESYSID)和用户权限。
SELECT * FROM gs_user;
usename | usesysid | usecreatedb | usesuper | usecatupd | userepl | passwd | valbegin | valuntil | respool | parent | spacelimit | useconfig | nodegroup | tempspacelimit | spillsp
acelimit | usemonitoradmin | useoperatoradmin | usepolicyadmin
---------+----------+-------------+----------+-----------+---------+----------+----------+----------+--------------+--------+------------+-----------+-----------+----------------+--------
---------+-----------------+------------------+----------------
omm | 10 | t | t | t | t | ******** | | | default_pool | 0 | | | | |
| t | t | t
(1 row)
|
查看和停止正在运行的查询语句
通过视图PG_STAT_ACTIVITY可以查看正在运行的查询语句。方法如下:
- 设置参数track_activities为on。
SET track_activities = on;
当此参数为on时,数据库系统才会获取当前活动查询的运行信息。
- 查看正在运行的查询语句。以查看正在运行的查询语句所连接的数据库名、执行查询的用户、查询状态及查询对应的PID为例:
SELECT datname, usename, state,pid FROM pg_stat_activity;
datname | usename | state | pid ----------+---------+--------+----------------- testdb | Ruby | active | 140298793514752 testdb | Ruby | active | 140298718004992 testdb | Ruby | idle | 140298650908416 testdb | Ruby | idle | 140298625742592 testdb | omm | active | 140298575406848 (5 rows)
如果state字段显示为idle,则表明此连接处于空闲,等待用户输入命令。
如果仅需要查看非空闲的查询语句,则执行如下命令查看:
SELECT datname, usename, state, pid FROM pg_stat_activity WHERE state != 'idle';
- 若需要取消运行时间过长的查询,通过pg_terminate_backend(pid...函数,根据线程ID(即2中查询结果的pid字段)结束会话。
SELECT PG_TERMINATE_BACKEND(140298793514752);
显示类似如下信息,表示结束会话成功。
PG_TERMINATE_BACKEND ---------------------- t (1 row)
显示类似如下信息,表示用户执行了结束当前会话的操作。FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command
说明:
- gsql客户端使用pg_terminate_backend(pid...函数结束当前正在执行会话的后台线程时,如果当前的用户是初始用户,客户端不会退出而是自动重连,即还会返回“The connection to the server was lost. Attempting reset: Succeeded.”;否则客户端会重连失败,即返回。“The connection to the server was lost. Attempting reset: Failed.”。这是因为只有初始用户可以免密登录,普通用户不能免密登录,从而重连失败。
- 对于使用pg_terminate_backend(pid...函数结束非活跃的后台线程时,如果打开了线程池,此时空闲的会话没有线程ID,无法结束会话。非线程池模式下,结束的会话不会自动重连。
更多详情请参考GaussDB 文档中心:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html
浙公网安备 33010602011771号