日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PostgreSQL 杀会话

發(fā)布時間:2024/3/13 数据库 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PostgreSQL 杀会话 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

pg_stat_activity 視圖的每一行與每一個服務(wù)器進程一一對應(yīng),顯示與該進程當(dāng)前活動相關(guān)的信息。


pg_cancel_backend和pg_terminate_backend服務(wù)器信號函數(shù)
pg_cancel_backend(pid ? int): 取消一個后端的當(dāng)前查詢。如果調(diào)用角色是被取消后端的擁有者角色的成員或者調(diào)用角色已經(jīng)被授予pg_signal_backend,這也是允許的,不過只有超級用戶才能取消超級用戶的后端。?
pg_terminate_backend(pid int):
中止一個后端。如果調(diào)用角色是被取消后端的擁有者角色的成員或者調(diào)用角色已經(jīng)被授予pg_signal_backend,這也是允許的,不過只有超級用戶才能取消超級用戶的后端。
這兩個函數(shù)的區(qū)別在于:pg_cancel_backend 只是取消當(dāng)前某一個進程的查詢操作,但不能釋放數(shù)據(jù)庫連接。但pg_terminate_backend 可以在pg的后臺殺死這個進程,從而釋放出寶貴的連接資源。
?

-- 1) 當(dāng)前會話

postgres=# SELECT COUNT(*) FROM pg_stat_activity;count -------12 (1 row)postgres=# SELECT datname,pid,state,backend_type FROM pg_stat_activity;datname | pid | state | backend_type -----------+-------+--------+------------------------------| 23635 | | logical replication launcher| 23633 | | autovacuum launcherpostgres | 63810 | active | client backendpostgres | 60710 | idle | client backendpostgres | 59702 | idle | client backendzoo | 59736 | idle | client backendsample_db | 59772 | idle | client backendzoo | 59972 | idle | client backendzoo | 60011 | idle | client backend| 23631 | | background writer| 23630 | | checkpointer

-- 2) 用pg_cancel_backend函數(shù)殺會話(其中的pid為60011和59972)
?

postgres=# SELECT pg_cancel_backend(60011);pg_cancel_backend -------------------t (1 row)postgres=# SELECT pg_terminate_backend(59972);pg_terminate_backend ----------------------t (1 row)postgres=# SELECT datname,pid,state,backend_type FROM pg_stat_activity;datname | pid | state | backend_type -----------+-------+--------+------------------------------| 23635 | | logical replication launcher| 23633 | | autovacuum launcherpostgres | 63810 | active | client backendpostgres | 60710 | idle | client backendpostgres | 59702 | idle | client backendzoo | 59736 | idle | client backendsample_db | 59772 | idle | client backendzoo | 60011 | idle | client backend| 23631 | | background writer| 23630 | | checkpointer| 23632 | | walwriter (11 rows)---- 發(fā)現(xiàn)pid59972會話殺掉了但pid60011沒有殺掉,再執(zhí)行一遍,發(fā)現(xiàn)還是沒殺掉該會話 postgres=# SELECT pg_cancel_backend(60011);pg_cancel_backend -------------------t (1 row)postgres=# SELECT datname,pid,state,backend_type FROM pg_stat_activity;datname | pid | state | backend_type -----------+-------+--------+------------------------------| 23635 | | logical replication launcher| 23633 | | autovacuum launcherpostgres | 63810 | active | client backendpostgres | 60710 | idle | client backendpostgres | 59702 | idle | client backendzoo | 59736 | idle | client backendsample_db | 59772 | idle | client backendzoo | 60011 | idle | client backend| 23631 | | background writer| 23630 | | checkpointer| 23632 | | walwriter (11 rows)-- 對應(yīng)進程信息 [root@dmpg1 12661]# ps -ef |grep 60011 postgres 60011 23627 0 17:07 ? 00:00:00 postgres: postgres zoo 192.168.131.1(65478) idle root 64115 42950 0 18:24 pts/2 00:00:00 grep --color=auto 60011

-- 3) 用pg_terminate_backend函數(shù)殺掉會話,能殺掉

postgres=# SELECT datname,pid,state,backend_type FROM pg_stat_activity;datname | pid | state | backend_type -----------+-------+--------+------------------------------| 23635 | | logical replication launcher| 23633 | | autovacuum launcherpostgres | 63810 | active | client backendpostgres | 60710 | idle | client backendpostgres | 59702 | idle | client backendzoo | 59736 | idle | client backendsample_db | 59772 | idle | client backendzoo | 60011 | idle | client backend| 23631 | | background writer| 23630 | | checkpointer| 23632 | | walwriter (11 rows)postgres=# SELECT pg_terminate_backend(60011);pg_terminate_backend ----------------------t (1 row)postgres=# SELECT datname,pid,state,backend_type FROM pg_stat_activity;datname | pid | state | backend_type -----------+-------+--------+------------------------------| 23635 | | logical replication launcher| 23633 | | autovacuum launcherpostgres | 63810 | active | client backendpostgres | 60710 | idle | client backendpostgres | 59702 | idle | client backendzoo | 59736 | idle | client backendsample_db | 59772 | idle | client backend| 23631 | | background writer| 23630 | | checkpointer| 23632 | | walwriter (10 rows)

----生成殺會話的語句

postgres=# SELECT 'SELECT pg_terminate_backend(' || PID || ');' KILL_PID, DATID, DATNAME, PID, USESYSID, USENAME, APPLICATION_NAME, CLIENT_ADDR, CLIENT_PORT, STATE, QUERY FROM PG_STAT_ACTIVITY WHERE state='idle' limit 1;kill_pid | datid | datname | pid | usesysid | usename | application_name | client_addr | client_port | state | query -------------------------------------+-------+---------+-------+----------+----------+--------------------------+---------------+-------------+-------+----------------------------------------------------------------------------------------------------------------------- ------------------------------------SELECT pg_terminate_backend(72715); | 16387 | zoo | 72715 | 10 | postgres | pgAdmin 4 - CONN:4188715 | 192.168.131.1 | 49588 | idle | SELECT oid, pg_catalog.format_type(oid, NULL) AS typname FROM pg_catalog.pg_type WHERE oid IN (25, 26, 19, 23, 26, 19,25, 869, 23, 25, 25) ORDER BY oid; (1 row)

總結(jié)

以上是生活随笔為你收集整理的PostgreSQL 杀会话的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。