013.PGSQL-查看sql正在运行的进程、查看表是否被锁、解锁表

摘要:
1.PGSQL-查看sql正在运行的进程SELECTdatname,pid,state,queryFROMpg_stat_activitywherestate='active'SELECTprocpid,START,now()-STARTASlap,current_queryFROM(SELECTbackendid,pg_stat_get_backend_pid(S.backendid)ASpro

1.PGSQL-查看sql正在运行的进程

SELECT datname,pid,state,query FROM pg_stat_activity where state='active'

SELECTprocpid,
    START,
    now() - START ASlap,
    current_query
FROM(
        SELECTbackendid,
            pg_stat_get_backend_pid (S.backendid) ASprocpid,
            pg_stat_get_backend_activity_start (S.backendid) ASSTART,
            pg_stat_get_backend_activity (S.backendid) AScurrent_query
        FROM(
                SELECTpg_stat_get_backend_idset () ASbackendid
            ) ASS
    ) ASS
WHEREcurrent_query <> '<IDLE>'
ORDER BYlap DESC;

procpid:进程id
start:进程开始时间
lap:经过时间
current_query:执行中的sql
怎样停止正在执行的sql
SELECT pg_cancel_backend(进程id);
或者用系统函数
kill -9进程id;

2.查看表是否被锁,解锁表

select oid from pg_class where relname='m_ss_kjcx_tech_inovate_talent' 
select pid from pg_locks where relation='4384913' 
--如果查询到了结果,表示该表被锁 则需要释放锁定 
select pg_cancel_backend(140650678843136)
--PGSQL
select oid from pg_class where relname='m_ss_kjcx_tech_inovate_talent' 
select pid from pg_locks where relation='4384913' 
--如果查询到了结果,表示该表被锁 则需要释放锁定 
select pg_cancel_backend(140650678843136)
--- 来查看有哪些SQL正在执行。 waiting='t'

select pid,backend_start,application_name,query_start,waiting,state ,query from pg_stat_activity
where query <>''
order by query_start asc

通过命令: 
=# selectpg_cancel_backend(线程id); 
来kill掉指定的SQL语句。(这个函数只能 kill Select 查询,而updae,deleteDML不生效)
使用可以kill 各种DML(SELECT,UPDATE,DELETE,DROP)操作= 
=# select pg_terminate_backend(pid int)

免责声明:文章转载自《013.PGSQL-查看sql正在运行的进程、查看表是否被锁、解锁表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇VS2019启用Docker支持的坑h5+App——分享是怎么实现的?下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server 数据库资源占用分析

1.1查看数据库当前用户连接数和最耗时的查询 USEmaster GO --看一下当前的数据库用户连接有多少--如果要指定数据库就把注释去掉 SELECT * FROM sys.[sysprocesses] WHERE [spid]>50 --AND DB_NAME([dbid])='gposdb' SELECT * FROM [sys].[dm_...

SQL 行转列

行转列,列转行是我们在开发过程中经常碰到的问题。 1、行转列一般通过CASE WHEN 语句来实现 2、也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。 用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单、更具可读性。下面...

百万条数据快速查询优化技巧

百万条数据快速查询优化技巧 1.应尽量避免在where子句中使用!=或<>操作符 2.应尽量避免在where子句中使用or来连接条件 如:select Id from t where num=10 or num=20 可以这样查询 Select id from t where num=10 Union all Select id from t...

详谈 oracle 索引 (笔记)

1、oracle索引空值问题   当在有空值得列上建立单列索引时,如果搜索条件为 is null 在解释计划中可以看到,对于此列oracle并没有使用索引查询;   但是当建立的是多列索引是,就会按照索引来进行查询。 2、B-树索引   示意图:    在B-树索引中,将会按照从上到下的顺序进行索引。如果列的选择度不低的话,索引扫描就会很慢。原因就在于要遍...

js获取select下拉框的value值和text文本值

介绍一种取下拉框值以及绑定下拉框数据的方法    这里用到的jquery-ui-multiselect插件  1、前台html代码 <span class="ModuleFormFieldLabel" style="float: left; padding-top: 3px;">品类:</span> <asp:Hidde...

mysql 随机函数生成某个范围内的整数

根据官方文档,rand()的取值范围为[0,1) 若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1))例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机整数, 可使用以下语句:SELECT FLOOR(7 + (RAND() * 6)); 用到了2个函数 1、f...