postgresql 常用SQL语句小结

 更新时间:2022年11月15日 22:51:12   投稿:mdxy-dxy  
postgresql使用过程中常用到的一些sql语句,方便我们快速使用查询一些操作特整理一下,方便需要的朋友

1、查询链接数

SELECT sum(numbackends) FROM pg_stat_database;

2、查看死锁状态

select pid,
       usename,
       pg_blocking_pids(pid) as blocked_by,
       query as blocked_query
from pg_stat_activity
where cardinality(pg_blocking_pids(pid)) > 0;

3、删除死锁进程

SELECT pg_cancel_backend(__pid__);
SELECT pg_terminate_backend(__pid__);

4、备份数据库

# sql文件
pg_dump dangerousdb > db.sql
# tar文件
pg_dump -U postgres -F c dangerousdb > dangerousdb.tar
# gz文件
pg_dump -U postgres dangerousdb | gzip > dangerousdb.gz

5、还原数据库

# 已经存在数据库
pg_restore -U postgres -Ft -d dbcooper < dbcooper.tar
# 创建新数据库
pg_restore -U postgres -Ft -C -d dbcooper < dbcooper.tar
#   

6、插入数据

插入单条数据

INSERT INTO TABLE_1
(
column_1,
column_2,
column_3
)
values(
column_1,
column_2,
column_3
)

插入多条数据

INSERT INTO TABLE_1
(
column_1,
column_2,
column_3
)
values(
column_1,
column_2,
column_3
),(
column_1,
column_2,
column_3
)...

从一张表查询到的数据插入到另一张表

INSERT INTO TABLE_1
(
column_1,
column_2,
column_3
)
SELECT
column_1,
column_2,
column_3
FROM
TABLE_2
where TABLE_2条件;

7 、查询pg中单张表的大小(不包含索引)

select
    pg_size_pretty(pg_relation_size('schema.table_name'));

8、查询数据库中所有表的大小

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

9、按顺序查看索引

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

10 、查询数据库的大小

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

11、查询被锁定的表

select
    pg_class.relname as table,
    pg_database.datname as database,
    pid,
    mode,
    granted
from
    pg_locks,
    pg_class,
    pg_database
where
    pg_locks.relation = pg_class.oid
    and pg_locks.database = pg_database.oid;

12 、查询一个Schema下面的所有表的总大小(单位MB,包括索引和数据)

select
    schemaname ,
    round(sum(pg_total_relation_size(schemaname || '.' || tablename))/ 1024 / 1024) "Size_MB"
from
    pg_tables
where
    schemaname = '<schemaname>'
group by
    1;

13 、查询所有表的大小并排序(包含索引)

select
    table_schema || '.' || table_name as table_full_name,
    pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) as size
from
    information_schema.tables
order by
    pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') desc
limit 20;

14 、查询表大小按大小排序并分离data与index

select
    table_name,
    pg_size_pretty(table_size) as table_size,
    pg_size_pretty(indexes_size) as indexes_size,
    pg_size_pretty(total_size) as total_size
from
    (
    select
        table_name,
        pg_table_size(table_name) as table_size,
        pg_indexes_size(table_name) as indexes_size,
        pg_total_relation_size(table_name) as total_size
    from
        (
        select
            ('"' || table_schema || '"."' || table_name || '"') as table_name
        from
            information_schema.tables) as all_tables
    order by
        total_size desc) as pretty_sizes;

或者

select
    table_name,
    pg_size_pretty(table_size) as table_size,
    pg_size_pretty(indexes_size) as indexes_size,
    pg_size_pretty(total_size) as total_size
from
    (
    select
        table_name,
        pg_table_size(table_name) as table_size,
        pg_indexes_size(table_name) as indexes_size,
        pg_total_relation_size(table_name) as total_size
    from
        (
        select
            ('' || table_schema || '.' || table_name || '') as table_name
        from
            information_schema.tables) as all_tables
    order by
        total_size desc) as pretty_sizes;

到此这篇关于postgresql 常用SQL语句小结的文章就介绍到这了,更多相关postgresql 常用SQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PostgreSQL常用优化技巧示例介绍

    PostgreSQL常用优化技巧示例介绍

    PostgreSQL的SQL优化技巧其实和大多数使用CBO优化器的数据库类似,因此一些常用的SQL优化改写技巧在PostgreSQL也是能够使用的。当然也会有一些不同的地方,今天我们来看看一些在PostgreSQL常用的SQL优化改写技巧
    2022-09-09
  • PostgreSQL数据库的基本查询操作

    PostgreSQL数据库的基本查询操作

    这篇文章采用详细的代码示例为大家介绍了PostgreSQL数据库的基本查询操作使用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • postgresql合并string_agg函数的实例

    postgresql合并string_agg函数的实例

    这篇文章主要介绍了postgresql合并string_agg函数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 如何查看PostgreSQL数据库的版本(3种方法)

    如何查看PostgreSQL数据库的版本(3种方法)

    这篇文章主要给大家介绍了关于如何查看PostgreSQL数据库的版本,查看PostgreSQL 数据库的版本号,可用方法很多,文中介绍了三种方法,对大家的学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-06-06
  • CentOS PostgreSQL 12 主从复制(主从切换)操作

    CentOS PostgreSQL 12 主从复制(主从切换)操作

    这篇文章主要介绍了CentOS PostgreSQL 12 主从复制(主从切换)操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSql触发器创建、使用以及删除示例详解

    PostgreSql触发器创建、使用以及删除示例详解

    在PostgreSQL中触发器函数是一个没有参数并且返回trigger类型的函数,这篇文章主要给大家介绍了关于PostgreSql触发器创建、使用以及删除的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • psql 执行文件 permission denied的解决

    psql 执行文件 permission denied的解决

    这篇文章主要介绍了psql 执行文件 permission denied的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 使用python-slim镜像遇到无法使用PostgreSQL的问题及解决方法

    使用python-slim镜像遇到无法使用PostgreSQL的问题及解决方法

    这篇文章主要介绍了使用python-slim镜像遇到无法使用PostgreSQL的问题及解决方法,本文给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • PostgreSQL教程(七):函数和操作符详解(3)

    PostgreSQL教程(七):函数和操作符详解(3)

    这篇文章主要介绍了PostgreSQL教程(七):函数和操作符详解(3),本文讲解了序列操作函数、条件表达式、数组函数和操作符、系统信息函数、系统管理函数等内容,需要的朋友可以参考下
    2015-05-05
  • PostgreSQL教程(九):事物隔离介绍

    PostgreSQL教程(九):事物隔离介绍

    这篇文章主要介绍了PostgreSQL教程(九):事物隔离介绍,本文主要针对读已提交和可串行化事物隔离级别进行说明和比较,需要的朋友可以参考下
    2015-05-05

最新评论