postgresql 死锁/进程/主键/常用sql查询

1
2
3
4
-- 查询被锁住的表
(SELECT pid FROM pg_stat_activity where query ~ 'fzqh_3_fzqhjg_1_45947')
-- 中止进程
select pg_terminate_backend((SELECT pid FROM pg_stat_activity where query ~ 'fzqh_3_fzqhjg_1_45947' LIMIT 1));

  

查询被锁的语句

1
2
3
select T.PID, T.STATE, T.QUERY, T.WAIT_EVENT_TYPE, T.WAIT_EVENT, T.QUERY_START
from PG_STAT_ACTIVITY T
where T.DATNAME = 'postgres' and T.WAIT_EVENT_TYPE = 'Lock';

  

删除时终止语句

1
2
select pg_terminate_backend(pid),query from pg_stat_activity
where  query ~* 'tablename' and pid <> pg_backend_pid();

  

 

1
2
3
4
5
6
7
8
9
10
ps -ef |grep postgres |wc -l  -- 进程统计相当于连接数
 
SELECT count(*) FROM pg_stat_activity;  -- 连接数查询
 
-- 根据进程号查询sql
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=205542
ORDER BY lap DESC;

  

表主键查询

1
2
3
4
5
6
7
8
select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename from
pg_constraint  inner join pg_class
on pg_constraint.conrelid = pg_class.oid
inner join pg_attribute on pg_attribute.attrelid = pg_class.oid
and  pg_attribute.attnum = pg_constraint.conkey[1]
inner join pg_type on pg_type.oid = pg_attribute.atttypid
where pg_class.relname = 'pre_country_house_crx_data_country_dl_partition_44'
and pg_constraint.contype='p'

   

大表count查询

1
Select reltuples::bigint as estimate_rows from pg_class where relnamespace = 'public'::regnamespace and relname='zh_ls_4_fzztj_sum'

 空间索引创建

 索引查询

1
2
3
4
5
6
-- 查询
select * from pg_indexes where tablename = 'l_jcsj_view_11_1';
-- 删除
DROP INDEX test_index;
-- 创建空间索引
CREATE INDEX l_zhpg_nzw_jcsj_view_11_1_gis_index ON l_jcsj_view_11_1 USING GIST (geom);

  对已存在的表添加列 和注释

1
2
alter table tableName add COLUMN columnName varchar(50);
comment on column tableName.columnName is '注释';

  对已存在的列设置主键

1
ALTER TABLE tableName ADD CONSTRAINT xxx_xxx_primary_pk PRIMARY KEY (列);

  创建自增

1
2
3
4
5
6
DROP SEQUENCE IF EXISTS {table_name}_nid_seq;
CREATE SEQUENCE {table_name}_nid_seq
START WITH 1
INCREMENT BY 1 NO MINVALUE NO MAXVALUE
CACHE 1;
alter table trans.{table_name} alter column nid set default nextval('{table_name}_nid_seq');

  

posted @   qukaige  阅读(372)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
历史上的今天:
2020-12-01 SpringSecurity 记住我 rememberMe 功能
2020-12-01 SpringSecurity 增加Filter过滤器
2020-12-01 SpringSecurity 登录
点击右上角即可分享
微信分享提示