Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)

史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)

作者头像
数据和云
发布于 2019-12-24 07:26:52
发布于 2019-12-24 07:26:52
10.7K01
代码可运行
举报
文章被收录于专栏:数据和云数据和云
运行总次数:1
代码可运行

查看帮助命令本周六,在北京将迎来一年一度的 ACOUG年会,在本次年会上,我们将对社区过去一年的工作进行回顾和梳理,并展望和探讨下一年工作的内容,同时,本次年会也开放了直播通道,名额不多,报名从速哦~

编者的话:PostgreSQL连续两年被评为年度数据库,备受很多DBA的青睐,本文我们一起来了解学习PostgreSQL常用的查询语句有哪些?

查看帮助命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# help --总的帮助
DB=# \h --SQL commands级的帮助
DB=# \? --psql commands级的帮助

按列显示,类似MySQL的\G

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \x
Expanded display is on.

查看DB安装目录(最好root用户执行)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
find / -name initdb

查看有多少DB实例在运行(最好root用户执行)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
find / -name postgresql.conf

查看DB版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat $PGDATA/PG_VERSION

psql --version

DB=# show server_version;

DB=# select version();

查看DB实例运行状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pg_ctl status

查看所有数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
psql –l --查看5432端口下面有多少个DB

psql –p XX –l --查看XX端口下面有多少个DB

DB=# \l

DB=# select * from pg_database;

创建数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
createdb database_name

DB=# \h create database --创建数据库的帮助命令

DB=# create database database_name

进入某个数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
psql –d dbname

DB=# \c dbname

查看当前数据库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \c

DB=# select current_database();

查看数据库文件目录

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# show data_directory;

cat $PGDATA/postgresql.conf |grep data_directory

cat /etc/init.d/postgresql|grep PGDATA=

lsof |grep 得出第二列的PID号再ps –ef|grep PID

查看表空间

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from pg_tablespace;

查看语言

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from pg_language;

查询所有schema,必须到指定的数据库下执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from information_schema.schemata;

SELECT nspname FROM pg_namespace;

\dnS

查看表名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \dt --只能查看到当前数据库下public的表名

DB=# SELECT tablename FROM pg_tables WHERE tablename NOT LIKE 'pg%' AND tablename NOT LIKE 'sql_%' ORDER BY tablename;

DB=# SELECT * FROM information_schema.tables WHERE table_name='ff_v3_ff_basic_af';

查看表结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \d tablename

DB=# select * from information_schema.columns where table_schema='public' and table_name='XX';

查看索引

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \di

DB=# select * from pg_index;

查看视图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \dv

DB=# select * from pg_views where schemaname = 'public';

DB=# select * from information_schema.views where table_schema = 'public';

查看触发器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# select * from information_schema.triggers;

查看序列

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# select * from information_schema.sequences where sequence_schema = 'public';

查看约束

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# select * from pg_constraint where contype = 'p'

DB=# select a.relname as table_name,b.conname as constraint_name,b.contype as constraint_type from pg_class a,pg_constraint b where a.oid = b.conrelid and a.relname = 'cc';

查看XX数据库的大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT pg_size_pretty(pg_database_size('XX')) As fulldbsize;

查看所有数据库的大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select pg_database.datname, pg_size_pretty (pg_database_size(pg_database.datname)) AS size from pg_database;

查看各数据库数据创建时间:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select datname,(pg_stat_file(format('%s/%s/PG_VERSION',case when spcname='pg_default' then 'base' else 'pg_tblspc/'||t2.oid||'/PG_11_201804061/' end, t1.oid))).* from pg_database t1,pg_tablespace t2 where t1.dattablespace=t2.oid;

按占空间大小,顺序查看所有表的大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables where schemaname='public' order by pg_relation_size(relid) desc;

按占空间大小,顺序查看索引大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select indexrelname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_indexes where schemaname='public' order by pg_relation_size(relid) desc;

查看参数文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# show config_file;
DB=# show hba_file;
DB=# show ident_file;

查看当前会话的参数值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# show all;

查看参数值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from pg_file_settings

查看某个参数值,比如参数work_mem

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# show work_mem

修改某个参数值,比如参数work_mem

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# alter system set work_mem='8MB'

--使用alter system命令将修改postgresql.auto.conf文件,而不是postgresql.conf,这样可以很好的保护postgresql.conf文件,加入你使用很多alter system命令后搞的一团糟,那么你只需要删除postgresql.auto.conf,再执行pg_ctl reload加载postgresql.conf文件即可实现参数的重新加载。

查看是否归档

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# show archive_mode;

查看运行日志的相关配置,运行日志包括Error信息,定位慢查询SQL,数据库的启动关闭信息,checkpoint过于频繁等的告警信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show logging_collector;--启动日志收集
show log_directory;--日志输出路径
show log_filename;--日志文件名
show log_truncate_on_rotation;--当生成新的文件时如果文件名已存在,是否覆盖同名旧文件名
show log_statement;--设置日志记录内容
show log_min_duration_statement;--运行XX毫秒的语句会被记录到日志中,-1表示禁用这个功能,0表示记录所有语句,类似mysql的慢查询配置

查看wal日志的配置,wal日志就是redo重做日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
存放在data_directory/pg_wal目录

查看当前用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \c
DB=# select current_user;

查看所有用户

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# select * from pg_user;
DB=# select * from pg_shadow;

查看所有角色

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \du
DB=# select * from pg_roles;

查询用户XX的权限,必须到指定的数据库下执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from information_schema.table_privileges where grantee='XX';

创建用户XX,并授予超级管理员权限

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create user XXX SUPERUSER PASSWORD '123456'

创建角色,赋予了login权限,则相当于创建了用户,在pg_user可以看到这个角色

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
create role "user1" superuser;--pg_roles有user1,pg_user和pg_shadow没有user1

alter role "user1" login;--pg_user和pg_shadow也有user1了

授权

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DB=# \h grant

GRANT ALL PRIVILEGES ON schema schemaname TO dbuser;

grant ALL PRIVILEGES on all tables in schema fds to dbuser;

GRANT ALL ON tablename TO user;

GRANT ALL PRIVILEGES ON DATABASE dbname TO dbuser;

grant select on all tables in schema public to dbuser;--给用户读取public这个schema下的所有表

GRANT create ON schema schemaname TO dbuser;--给用户授予在schema上的create权限,比如create table、create view等

GRANT USAGE ON schema schemaname TO dbuser;

grant select on schema public to dbuser;--报错ERROR: invalid privilege type SELECT for schema

--USAGE:对于程序语言来说,允许使用指定的程序语言创建函数;对于Schema来说,允许查找该Schema下的对象;对于序列来说,允许使用currval和nextval函数;对于外部封装器来说,允许使用外部封装器来创建外部服务器;对于外部服务器来说,允许创建外部表。

查看表上存在哪些索引以及大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select relname,n.amname as index_type from pg_class m,pg_am n where m.relam = n.oid and m.oid in

(select b.indexrelid from pg_class a,pg_index b where a.oid = b.indrelid and a.relname = 'cc');

SELECT c.relname,c2.relname, c2.relpages* as size_kb FROM pg_class c, pg_class c2, pg_index i

WHERE c.relname ='cc' AND c.oid =i.indrelid AND c2.oid =i.indexrelid ORDER BY c2.relname;

查看索引定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select b.indexrelid from pg_class a,pg_index b where a.oid = b.indrelid and a.relname = 'cc';

select pg_get_indexdef(b.indexrelid);

查看过程函数定义

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select oid,* from pg_proc where proname = 'insert_platform_action_exist'; --oid = 24610

select * from pg_get_functiondef();

查看表大小(不含索引等信息)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select pg_relation_size('cc'); --368640 byte

select pg_size_pretty(pg_relation_size('cc')) --360 kB

查看表所对应的数据文件路径与大小

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT pg_relation_filepath(oid), relpages FROM pg_class WHERE relname = 'empsalary';

posegresql查询当前lsn

1、用到哪些方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apple=# select proname from pg_proc where proname like 'pg_%_lsn';

proname

---------------------------------

pg_current_wal_flush_lsn

pg_current_wal_insert_lsn

pg_current_wal_lsn

pg_last_wal_receive_lsn

pg_last_wal_replay_lsn

2、查询当前的lsn值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apple=# select pg_current_wal_lsn();

pg_current_wal_lsn

--------------------------

0/45000098

3、查询当前lsn对应的日志文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select pg_walfile_name('0/1732DE8');

4、查询当前lsn在日志文件中的偏移量

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT * FROM pg_walfile_name_offset(pg_current_wal_lsn());

切换pg_wal日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select pg_switch_wal();

清理pg_wal日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pg_archivecleanup /postgresql/pgsql/data/pg_wal 000000010000000000000005

表示删除000000010000000000000005之前的所有日志

--pg_wal日志没有设置保留周期的参数,即没有类似mysql的参数expire_logs_days,pg_wal日志永久保留,除非shell脚步删除几天前或pg-rman备份时候设置保留策略

查询有哪些slot,任意一个数据库下都可以查,查询的结果都一样

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from pg_replication_slots;

原创:廖学强

出处:http://blog.itpub.net/30126024/viewspace-2655205/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据和云 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MOP 系列|MOP 三种主流数据库常用 SQL(三)PG篇
MOP 不用多说,指的就是 MySQL、Oracle、PostgreSQL 三种目前最主流的数据库,MOP 系列打算更新 MOP 三种数据库的索引知识、高可用架构及常用 SQL 语句等等,上面已经更新了 MOP 索引相关的文章,今天打算整理一下这三种数据库的常用 SQL 知识,由于文章过长,今天更新中间的一篇之 MySQL 篇。第一篇 Oracle 相关的详见下方链接:MOP 系列|MOP 三种主流数据库常用 SQL(一)。第二篇 MySQL 常用 SQL详见下方链接:MOP 系列|MOP 三种主流数据库常用 SQL(二)。
JiekeXu之路
2024/05/28
1490
MOP 系列|MOP 三种主流数据库常用 SQL(三)PG篇
Postgresql system Catalog 中的系统表能告诉你什么 (二)?
接上期,postgresql 的system catalog 中包含了不少系统表,
AustinDatabases
2021/04/01
6680
PostgreSQL集群篇——常用的运维SQL
本文主要是我日常使用的一些运维SQL和整理于互联网上的SQL,为了方便日常的使用,特把其汇总起来,遇到常用的时将会进行补充该文,欢迎大家在评论区进行提出一些常用的SQL。
cn華少
2021/11/24
1.2K0
PostgreSQL 如何对索引进行分析和处理
最近有人私信问POSTGRESQL 怎么比MYSQL的索引大,这个问题升级上我个人觉得从这几点考虑
AustinDatabases
2023/09/06
2870
PostgreSQL 如何对索引进行分析和处理
PostgreSql Postgresql 监控你说了不算,谁说了算 ? (5 整理的一些脚本)
一写就写到了第五期,有点写连续剧的味道,可能会有第六期,我想是,今天的内容并不是某些工具,其实工具也是根据数据库的原理,通过各种方式获得数据。那怎么通过PG中的系统表来获得数据就是这期的重点。
AustinDatabases
2020/07/16
7150
PostgreSql  Postgresql 监控你说了不算,谁说了算 ? (5  整理的一些脚本)
Greenplum 元数据信息
Greenplum 元数据信息 Greenplum 元数据信息 1、 获取集群中数据库信息 1.1 集群中的创建的数据库信息 1.2 查看每个数据库的储存大小 1.3 查看集群中hostname 1.4 查看集群数据库的版本信息 1.5 查看集群master与segment安装的信息 2、 查看数据库下schema信息 2.1 查看数据库下创建的schema信息 2.2 查看数据库下每个schema的大小 3、 查看schema下表的信息 3.1 查看schema下的表的清单
小徐
2020/07/02
1.4K0
Greenplum 元数据信息
Postgresql INDEX HOT 原理与更好的 “玩转” INDEX
好长时间不进行研究了,最近被突发的问题想到了INDEX 的问题,随机想到数据和INDEX 存储在一起会怎样,我们将索引和数据进行分离后,会不会对数据库的性能有优化的可能。
AustinDatabases
2023/02/26
1.1K0
Postgresql  INDEX  HOT 原理与更好的 “玩转”  INDEX
MogDB/openGauss 故障排查思路
当我们收到反馈说数据库响应慢或者压测过程中数据库有报错,第一步先收集数据库服务器资源使用情况,这一步是处理所有故障的前提。
数据和云
2021/10/13
1.1K0
Greenplum 元数据常用查询语句
1、获取集群中数据库信息 1.1 集群中的创建的数据库信息 select datname from pg_database where datname not in ('template1','template0','postgres'); 1.2 查看每个数据库的储存大小 select pg_size_pretty(pg_database_size('databases')) as databasesize, 'databases' as databasename databases : 数据库信息 2
小徐
2020/01/14
3.1K0
Greenplum 元数据常用查询语句
30个实用SQL语句,玩转PostgreSQL
PostgreSQL是一款功能非常强大的开源关系型数据库,它支持哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN等多种索引模式,同时可安装功能丰富的扩展包。相较于Mysql,PostgreSQ支持通过PostGIS扩展支持地理空间数据、支持嵌套循环,哈希连接,排序合并三种表连接方式等一系列的强化功能。本文主要整理总结了30个实用SQL,方便大家可以高效利用PostgreSQL。
慕枫技术笔记
2023/03/20
7510
30个实用SQL语句,玩转PostgreSQL
PostgreSql 怎么获取数据库中关键系统信息(一)
如何通过SQL 的方式获得数据库中的一些关键信息,是一个DB最正常的工作,如何通过一些SQL来获得PG的一些关键的参数和信息或者是数据库中的一些信息是需要知道的一件事情。以下是部分 1
AustinDatabases
2020/09/27
1.2K0
Greenplum数据库巡检报告
4.2.4 查看所有segment是否可达,确保QD(query dispatching)正常 16
小徐
2020/04/20
2.6K0
Greenplum数据库巡检报告
综合指南:postgresql shared buffers
本文主要针对下面问题详述PG的共享内存:PG中需要给共享内存分配多少内存?为什么?
yzsDBA
2021/01/05
1.6K0
综合指南:postgresql shared buffers
PostgreSQL 常用SQL语句
PostgreSQL 可以说是目前功能最强大、特性最丰富和结构最复杂的开源数据库管理系统,其中有些特性甚至连商业数据库都不具备。这个起源于加州大学伯克利分校的数据库,现已成为一项国际开发项目,并且拥有广泛的用户群,尤其是在海外,目前国内使用者也越来越多。
YP小站
2020/06/04
1.1K0
Greenplum 操作锦囊
本文描述问题及解决方法基于 腾讯云数据仓库 TCHouse-P( Tencent Cloud House-P,TCHouse-P )。
岳涛
2023/11/08
1.5K1
Greenplum 操作锦囊
PostgreSQL 扫盲贴 常用的监控分析脚本
我一直有一个错觉,大家的POSTGRESQL的技术都非常了得,在年前实际上对我有几次的感触。
AustinDatabases
2025/03/03
680
PostgreSQL 扫盲贴 常用的监控分析脚本
史上最全PostgreSQL体系结构
墨墨导读:本文主要从日志文件、参数文件、控制文件、数据文件、redo日志(WAL)、后台进程这六个方面来讨论PostgreSQL的结构。
数据和云
2019/07/22
4.1K0
史上最全PostgreSQL体系结构
PostgreSQL 常用的命令
最近在学习PostgreSQL 技术体系,前面几篇文章介绍了 认识 PostgreSQL 基础权限体系,PostgreSQL 相关系统日志参数,今天学习一下常用的命令。
用户1278550
2022/04/01
9890
PostgreSQL 常用的命令
笔记分享(4) Tbase/PostgreSQL 常用命令
分享一下之前用到的tbase/pg命令, 主要是和mysql/oracle差别太大了. 做个记录, 方便后面看.
大大刺猬
2021/05/17
3.3K0
A Comprehensive Guide: PostgreSQL Shared Buffers(译)
与MySQL设置innodb_buffer_pool_size = 80%左右的系统内存相比,也就是将操作系统大部分内存分配给Innodb的buffer pool的缓存管理机制不同,Postgresql采用数据库采用实例buffer和操作系统buffer双缓存(effective_cache_size)的工作模式,这一点两者还是有着比较本质上的差异的。
数据库架构之美
2020/12/01
8550
A Comprehensive Guide: PostgreSQL Shared Buffers(译)
相关推荐
MOP 系列|MOP 三种主流数据库常用 SQL(三)PG篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验