服务器之家

服务器之家 > 正文

查看postgresql系统信息的常用命令操作

时间:2021-03-09 20:24     来源/作者:Yunis_Du

1、查看当前数据库实例版本。

?
1
2
3
4
5
postgres=# select version();
     version    
-----------------------------------------------------------------------------------------------------------
 PostgreSQL 9.3.0 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23), 64-bit
(1 row)

2、查看数据库启动时间。

?
1
2
3
4
5
postgres=# select pg_postmaster_start_time();
 pg_postmaster_start_time 
-------------------------------
 2019-08-26 10:53:47.328699+08
(1 row)

3、查看最后load配置文件的时间,可以使用pg_ctl reload改变配置的装载时间。

?
1
2
3
4
5
postgres=# select pg_conf_load_time();
  pg_conf_load_time 
------------------------------
 2019-08-26 10:53:46.57045+08
(1 row)

4、显示当前数据库时区。

?
1
2
3
4
5
postgres=# show timezone;
 TimeZone
----------
 PRC
(1 row)

5、显示数据库的时间,有时数据库的时区不是当前操作系统的时区,这时在数据库中看到的时间就与操作系统中看到的时间不一样。

?
1
2
3
4
5
postgres=# select now();
    now   
-------------------------------
 2019-08-26 10:58:36.508472+08
(1 row)

6、查看当前用户名,current_user与user是完全相同的。

?
1
2
3
4
5
6
7
8
9
10
11
postgres=# select user;
 current_user
--------------
 postgres
(1 row)
 
postgres=# select current_user;
 current_user
--------------
 postgres
(1 row)

7、查看session用户,通常情况下,session_user与user是相同的。但使用set role改变用户角色时,session_user始终是那个原始用户,而user是当前的角色用户。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
postgres=# select session_user;
 session_user
--------------
 postgres
(1 row)
 
postgres=# set role=aaa;
SET
 
postgres=> select session_user;
 session_user
--------------
 postgres
(1 row)
 
postgres=> select user;
 current_user
--------------
 aaa
(1 row)

8、查询当前连接的数据库名称,使用current_catalog和current_database()都显示当前连接的数据库名称,这两者功能完全相同,只不过catalog是SQL标准中的用语。

?
1
2
3
4
5
postgres=# select current_catalog,current_database();
 current_database | current_database
------------------+------------------
 postgres   | postgres
(1 row)

9、查看当前session所在客户端的IP地址及端口(仅限TCP-IP连接,如果是UDP连接的话,查询结果IP与port都显示空)。

?
1
2
3
4
5
postgres=# select inet_client_addr(),inet_client_port();
 inet_client_addr | inet_client_port
------------------+------------------
     |    
(1 row)

10、查询当前数据库服务器的IP地址及端口(仅限TCP-IP连接,如果是UDP连接的话,查询结果IP与port都显示空)。

?
1
2
3
4
5
postgres=# select inet_server_addr(),inet_server_port();
 inet_server_addr | inet_server_port
------------------+------------------
 192.168.91.5  | 5866 
(1 row)

11、查询当前session的后台服务进程的PID。

?
1
2
3
4
5
postgres=# select pg_backend_pid();
 pg_backend_pid
----------------
   3958
(1 row)

12、查看当前共享内存的大小。

?
1
2
3
4
5
postgres=# show shared_buffers;
 shared_buffers
----------------
 128MB
(1 row)

13、修改当前session参数配置。

?
1
2
3
4
5
6
7
8
postgres=# set maintenance_work_mem to '128MB';
SET
 
postgres=# select set_config('maintenance_work_mem','128MB',false);
 set_config
------------
 128MB
(1 row)

14、查看当前正在写的WAL文件。

?
1
2
3
4
5
postgres=# select pg_xlogfile_name(pg_current_xlog_location());
  pg_xlogfile_name 
--------------------------
 00000001000000000000004B
(1 row)

15、查看当前WAL的buffer中还有多少字节的数据没有写到磁盘中。

?
1
2
3
4
5
postgres=# select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());
 pg_xlog_location_diff
-----------------------
      0
(1 row)

16、查看数据库实例是否正在做基础备份。

?
1
2
3
4
postgres=# select pg_is_in_backup(),pg_backup_start_time(); pg_is_in_backup | pg_backup_start_time
-----------------+----------------------
 f    |
(1 row)

17、查看当前数据库实例时HOT Standby状态还是正常数据库状态。

?
1
2
3
4
5
postgres=# select pg_is_in_recovery();
 pg_is_in_recovery
-------------------
 f
(1 row)

18、查看数据库大小,如果数据库中有很多表,使用上述命令将比较慢,可能对当前系统产生不利影响,pg_size_pretty()函数会把数字以MB、GB等格式显示出来。

?
1
2
3
4
5
postgres=# select pg_database_size('postgres'),pg_size_pretty(pg_database_size('postgres'));
 pg_database_size | pg_size_pretty
------------------+----------------
   67922104 | 65 MB
(1 row)

19、查看表的大小,仅计算表的大小,不包括索引的大小。

?
1
2
3
4
postgres=# select pg_size_pretty(pg_relation_size('test')); pg_size_pretty
----------------
 0 bytes
(1 row)

20、查看表的大小,pg_total_relation_size()把表上索引的大小也计算入内。

?
1
2
3
4
5
postgres=# select pg_size_pretty(pg_total_relation_size('test'));
 pg_size_pretty
----------------
 0 bytes
(1 row)

21、查看表上所有索引的大小,pg_indexes_size()函数的参数名是一个表对应的oid(输入表名会自动转换成表的oid),而不是索引的名称。

?
1
2
3
4
5
postgres=# select pg_size_pretty(pg_indexes_size('test'));
 pg_size_pretty
----------------
 0 bytes
(1 row)

22、查看表空间大小。

?
1
2
3
4
5
postgres=# select pg_size_pretty(pg_tablespace_size('pg_global'));
 pg_size_pretty
----------------
 477 kB
(1 row)

23、查看表对应的数据文件。

?
1
2
3
4
5
postgres=# select pg_relation_filepath('test');
 pg_relation_filepath
----------------------
 base/12902/24952
(1 row)

补充:PostgreSQL命令行常用命令psql

PostgreSQL命令行常用命令(psql)

一般我们使用 psql来和数据库交互,方括号中为可选项参数,不带任何参数表示连接本机

?
1
psql [option…] [dbname [username]]

登录数据库

?
1
psql -h 127.0.0.1 -p 5432 -d database -U postgres

-h 数据库ip

-p 端口号

-d 数据库名

-U 登录用户名

导入SQL脚本

示例:

?
1
psql -U postgres -d database -f sqlScript.sql

将sqlScript.sql导入到名为database的数据库中

常用命令

展示数据库

\l 或者 \list

支持正则匹配,例如展示包含post字符的数据库

?
1
\l '*post*'

查看postgresql系统信息的常用命令操作

切换数据库(创建新的数据库连接)

?
1
\c 可选参数 dbname [ username ] [ host ] [ port ]

eg:

?
1
2
3
\c postgres
或者
\c postgres username localhost 5432

展示当前数据库下所有关系(table、view、sequence等)

\d 展示当前所有表

查看postgresql系统信息的常用命令操作

\d “Account” 展示Account表字段信息

查看postgresql系统信息的常用命令操作

展示当前数据库下所有schema信息

\dn

查看postgresql系统信息的常用命令操作

显示当前使用的schema

?
1
SHOW search_path;

当前schema为public

?
1
2
3
search_path 
----------------
 "$user",public

切换当前schema

?
1
2
3
4
5
6
SET search_path TO myschema;
# set search_path to auth;
# SHOW search_path;
 search_path
-------------
 auth

断开数据库连接

\q

以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/yunis_du/article/details/103983649

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部