2021-10-30
一 查询连接进程
select * from pg_stat_activity where current_query <> '\<IDLE\>';
二 磁盘空间不足
1.vacuum
-- 生成 vacuum ANALYZE命令(或者使用 VACUUM FULL)
select 'VACUUM FULL' || ' gpmg.' || relname || ';' as vacuum_sql from pg_class a,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'gpmg' and a.relkind='r';
-- 脚本执行命令
-- VCOMMAND="VACUUM ANALYZE"
-- psql -tc "select '$VCOMMAND' || ' pg_catalog.' || relname || ';' from pg_class a,pg_namespace b where a.relnamespace=b.oid and b.nspname= 'pg_catalog' and a.relkind='r'" $DBNAME | psql -a $DBNAME
2. 清理日志
-- pg_log目录下并使用约定命名方式:gpdb-YYYY-MM-DD.log
三 查看库 表 索引等空间信息
1.查看所有库大小
select sodddatname,sodddatsize/1024/1024 as db_size_MB from gp_toolkit.gp_size_of_database;
-- 2.查看库下面的所有schema 占用的磁盘空间
select sosdnsp,round(sosdschematablesize/1024/1024,2) schema_tb_size_MB,round(sosdschemaidxsize /1024/1024,2) as schema_idx_size_MB from gp_toolkit.gp_size_of_schema_disk;
-- 3.查看schema下所有表和索引 占用的磁盘空间
SELECT soatioid,soatischemaname,soatitablename,round(soatisize/1024/1024,2) as INDEX_SIZE_MB FROM gp_toolkit.gp_size_of_all_table_indexes
order by INDEX_SIZE_MB desc,soatischemaname,soatitablename ;
-- 4.查看表占用空间
select sotuoid, sotuschemaname,sotutablename,round(cast(sotusize as integer )/1024/1024,2) as table_SIZE_MB from gp_toolkit.gp_size_of_table_uncompressed order by sotuschemaname, table_SIZE_MB desc,sotutablename
--5.查看膨胀表
select * from gp_toolkit.gp_bloat_diag order by bdinspname,(bdirelpages-bdiexppages)desc,bdirelname;
-- 没有统计信息且可能需要ANALYZE的表。
select * from gp_toolkit.gp_stats_missing order by smischema,smicols desc;
四 查询倾斜率表
五 查看空闲磁盘空间
select dfsegment,dfhostname,dfdevice,round(dfspace/1024,2) as free_disk_MB from gp_toolkit.gp_disk_free ORDER BY free_disk_MB DESC ;
-- dfspace 实例所在的文件系统的空闲磁盘空闲空间(千字节为单位)
六 锁
--正被锁定的关系
select
lorlocktype 被锁的关系的类型,
lordatabase 对象标识符_共享对象为0,
lorrelname 关系的名字,
lorrelation 关系的对象标识符,
lortransaction 锁影响到的事务标识符,
lorpid 获取或等待锁的服务器进程号_准备型0,
lormode 锁模式,
lorgranted 锁是T否F,
lorcurrentquery 会话当前的查询
from gp_toolkit.gp_locks_on_relation;
select
lorusename 当前会话用户,
lorrsqname 资源队列,
lorlocktype 锁对象类型,
lorobjid 锁定的事务对象标识符,
lortransaction 锁影响到的事务标识符,
lorpid 锁影响到的事务的服务器进程号,
lormode 锁模式的名字,
lorgranted 锁是True否alse,
lorwaiting 会话是否正在等待
from gp_toolkit.gp_locks_on_resqueue;
七 将查询结果导出到文件
nohup psql -c "show all;" >./test.log &
-- ps -fe | grep test.log
八 kill进程 用函数杀sql
-- 对于查询SQL
select pg_cancel_backend(procpid);
-- 其他SQL
select pg_terminate_backend(procpid);