1、查看数据库大小

select pg_database_size('log_analysis');
postgres=# select pg_database_size('postExpress');
pg_database_size
------------------
4417902485676
(1 row)
SELECT pg_size_pretty(pg_database_size('postExpress'));
postExpress=# SELECT pg_size_pretty(pg_database_size('postExpress'));
pg_size_pretty
----------------
4115 GB
(1 row)

2、按顺序查询数据库大小

select pg_database.datname, pg_size_pretty (pg_database_size(pg_database.datname)) AS size from pg_database;

3、按顺序查看索引

select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc;

4、查看所有表的大小

select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname='public' order by pg_relation_size(relid) desc;

5、检查临时文件

SELECT datname, temp_files AS "Temporary files",temp_bytes AS "Size of temporary files" FROM pg_stat_database ;

临时文件是按后端或会话连接存储的文件,它们可用作资源池或缓冲区。这些文件与共享资源空间分开存储。

重要提示:视图 pg_stat_database 中的 temp_files 和 temp_bytes 列收集聚合中的统计信息(累积值)。这是设计使然,因为这些重置计数器只能在服务器启动时通过恢复进行重置,例如当服务器刚关闭时、服务器崩溃以及时间点恢复 (PITR)。因此,最好的做法是监控这些文件的数量和大小的增长,而不是仅查看输出。

6、查询并确认复制槽存在及其大小:

PostgreSQL v9

select slot_name, pg_size_pretty(pg_xlog_location_diff(pg_current_xlog_location(),restart_lsn)) as
replicationSlotLag, active from pg_replication_slots ;

PostgreSQL v10 and v11

select slot_name, pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(),restart_lsn)) as replicationSlotLag,
active from pg_replication_slots ;

7、在确定目前未使用的复制槽(有效状态为 False)后,查询删除该复制槽

select pg_drop_replication_slot('Your_slotname_name');

8、该pg_replication_slots视图提供了数据库集群上当前存在的所有复制插槽及其当前状态的列表

select * from pg_replication_slots;

跨区域只读副本

如果您使用跨区域只读副本,则在主实例上创建一个物理复制槽。如果跨区域只读副本失败,则主数据库实例上的存储空间可能会受影响,因为 WAL 文件未复制到只读副本。您可以使用 CloudWatch 指标“最旧复制槽延迟”和“事务日志磁盘使用”来确定关于接收的 WAL 数据的最滞后副本以及有有多少存储空间用于 WAL 数据。

9、查询连接数

select count(1) from pg_stat_activity;

查询连接详情

select pid,datname,usename,client_addr,client_port, application_name from pg_stat_activity;

杀死所有连接进程

select pg_terminate_backend(pid) from pg_stat_activity where usename='admin';  -- 杀死admin账户的当前连接(我这里业务账号用的是admin)

10、查询最大连接数

show max_connections;

11、导出数据到csv文件

copy (select * from test) to '/data/test.csv' with csv header;

12、查询最消耗CPU的sql语句

先获取进程的PID,顺序排列最消耗cpu的进程

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
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 IN (17637,123,321) --加入查找到的进程ID
order by
lap desc;

13、停止正在执行的sql

kill select查询,对update、delete 及DML不生效)
SELECT pg_cancel_backend(PID); kill掉各种操作(select、update、delete、drop等)
SELECT pg_terminate_backend(PID);

14、使用“explain your_statements”的方式来查看SQL语句的执行计划

explain delete from p_table ;

这里,需要注意的是,explain analyze 会分析SQL语句的执行计划,并真正执行SQL语句。而,默认情况下,PostgreSQL数据库的事务是自动开启、提交的。那么,对于DML语句来说,如果要使用explain analyze来查看其执行计划的话,就得格外注意了

explain analyze delete from p_table ;

explain analyze delete from p_table ;查看一条删除操作SQL的执行计划,其结果就是,真正的把表里的数据删除了,且提交了。
对于所有的DML操作,如果只是想通过explain analyze来查看其执行计划的话,需要在执行之前,显示开启事务,然后查看执行计划,最后回滚事务。 

postgres=# begin;
BEGIN
postgres=# explain analyze xxxxxxxxx;
postgres=# rollback;
ROLLBACK
postgres=#

15、查询索引使用记录

select * from pg_stat_all_indexes where schemaname = 'postgres' and relname = '表/索引/视图名称';

  

参考材料:https://aws.amazon.com/cn/premiumsupport/knowledge-center/diskfull-error-rds-postgresql/

https://www.postgresql.org/docs/current/index.html

http://www.oracleonlinux.cn/2018/08/differences-between-explain-and-explain-analyze/

postgres常用运维sql的更多相关文章

  1. SQLServer常用运维SQL整理

    今天线上SQLServer数据库的CPU被打爆了,紧急情况下,分析了数据库阻塞.连接分布.最耗CPU的TOP10 SQL.查询SQL并行度配置.查询SQL 重编译的原因等等 整理了一些常用的SQL 1 ...

  2. SQLServer常用运维SQL整理(转)

    转载地址:https://www.cnblogs.com/tianqing/p/11152799.html 今天线上SQLServer数据库的CPU被打爆了,紧急情况下,分析了数据库阻塞.连接分布.最 ...

  3. oracle常用运维sql语句

    1.查询dblink语句 col owner for a20col db_link for a30col username for a20col host for a30set linesize 12 ...

  4. sqlserver常用运维sql

    1. sqlserver 检测sql SELECT top 10 (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapse ...

  5. DB2常用运维命令

    DB2是IBM公司推出关系型数据库管理系统.主要应用于银行.医院等大型机构.现今DB2主要包含以下三个系列:DB2 for Linux, UNIX and Windows(LUW) . DB2在Lin ...

  6. linux基本语法和常用运维命令

    linux上的操作一般是命令行操作,看起来很高大上,让人畏而远之. Help!Help! 忽然间闯入的linux黑黑的世界,怎么办,不要慌.赶紧敲出一个help命令,然后回车,黑色的窗口就会展示一些常 ...

  7. 转:python常用运维脚本实例

    python常用运维脚本实例 转载  file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函 ...

  8. python常用运维脚本实例【转】

    file是一个类,使用file('file_name', 'r+')这种方式打开文件,返回一个file对象,以写模式打开文件不存在则会被创建.但是更推荐使用内置函数open()来打开一个文件 . 首先 ...

  9. Liunx常用运维命令整理记录

    前言 作为后端开发者,掌握一些常用的运维命令也是很有必要的,本文记录常用Liunx运维命令 基本命令 目录切换 cd base-admin/ 切换到当前目录下的base-admin目录 cd .. 切 ...

随机推荐

  1. mysql全量+增量备份脚本

    cat xtrabackup_mysql.sh #!/bin/bash #title :xtrabackup_mysql.sh #description :backup mysql by using ...

  2. 在ensp上配置RIPv2的认证

    原理 实验模拟 实验拓扑 测试连通性 搭建rip网络 查看路由表 R3模拟攻击首先把在自己的的ip通告网段 配置完成后查看一下路由表 可以看到已经非法获取R1R2的网段信息,那么现在我们R3可以向两个 ...

  3. 《ucore lab1 exercise5》实验报告

    资源 ucore在线实验指导书 我的ucore实验代码 题目:实现函数调用堆栈跟踪函数 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_s ...

  4. Angular 使用 ng2-file-upload 上传文件遇到的问题

    Angular 上传文件 可参考Angular2使用ng2-file-upload上传文件 这里记录在开发过程中遇到的问题: 删除选择的文件后,不能再选择上次选择的相同的文件 在 firefox 浏览 ...

  5. Linux查看CPU信息计算CPU核数量

    1. 物理CPU的个数: cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l 2. 每个物理CPU的核心数量: ...

  6. 【实战经验】--Xilinx--Chipscope使用

    1)在工程右键点击New Source 新建Chioscope,在File name 填写名称: 2)新建完成后,工程里会出现你建立的chipscope文件(如下图chip_ddr3.cdc)双击打开 ...

  7. [cf 585 E] Marbles

    (一道Div2E不会,我太难了) 题意: 给你一个长度为$n$的颜色序列$A$,每次操作可以选择两个相邻元素交换,求把序列交换成“相同颜色挨在一起”所需的最少操作数. 按颜色排序:设颜色$col$在序 ...

  8. powerful number求积性函数前缀和

    算法原理 本文参考了 zzq's blog . \(\text{powerful number}\) 的定义是每个质因子次数都 \(\ge 2\) 的数,有个结论是 \(\ge n\) 的 \(\te ...

  9. IDEA debug断点调试技巧

    Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化.通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方 ...

  10. (1)SQL Server内存浅探

    1.前言 对于数据库引擎来说,内存是一个性能提升的重要解决手段.把数据缓存起来,可以避免在查询或更新数据时花费多余的时间,而这时间通常是从磁盘获取数据时用来等待磁盘寻址的.把执行计划缓存起来,可以避免 ...