服务器信号函数
服务器信号函数向其他服务器线程发送控制信号。只有系统管理员有权执行以下函数。
- pg_cancel_backend(pid int)
返回值类型:Boolean
备注:pg_cancel_backend向由pid标识的后端线程发送一个查询取消(SIGINT)信号。一个活动的后端线程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps列出数据库线程。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
- pg_cancel_session(pid bigint, sessionid bigint)
返回值类型:Boolean
备注:pg_cancel_session的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询,可以取消线程池模式下,活跃状态会话正在执行的语句。当入参pid和sessionid相同,且均为线程id时,功能和pg_cancel_backend相同。
- pg_reload_conf()
返回值类型:Boolean
备注:pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器线程重新装载配置文件。
- pg_rotate_logfile()
返回值类型:Boolean
备注:pg_rotate_logfile给日志文件管理器发送信号,使之立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用,否则不会产生日志文件管理器子线程。
- pg_terminate_backend(pid int)
返回值类型:Boolean
备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
该函数可终止非线程池的线程、活跃状态的线程池线程,但无法终止非活跃状态的线程池线程。
示例:
1 2 3 4 5 6 7 8 9 10 11
gaussdb=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816 (1 rows) gaussdb=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t (1 row)
- pg_terminate_session(pid int64, sessionid int64)
返回值类型:Boolean
备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户、会话所连接的数据库的属主、会话的属主、或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。
当入参pid和sessionid相同,且均为线程id时,该函数可终止非线程池的线程、活跃状态的线程池线程。
当入参pid和sessionid不同时,该函数可终止活跃状态的会话,或关闭非活跃状态会话和客户端的socket连接。
- pg_terminate_active_session_socket(pid int64, sessionid int64)
描述:关闭一个活跃session和客户端的socket连接。
返回值类型:Boolean
备注:如果成功,函数返回true,否则返回false。仅限初始化用户才可使用该函数。