1、查看当前数据库实例版本。
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、查看数据库启动时间。
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改变配置的装载时间。
postgres=# select pg_conf_load_time();
pg_conf_load_time
------------------------------
2019-08-26 10:53:46.57045+08
(1 row)
4、显示当前数据库时区。
postgres=# show timezone;
TimeZone
----------
PRC
(1 row)
5、显示数据库的时间,有时数据库的时区不是当前操作系统的时区,这时在数据库中看到的时间就与操作系统中看到的时间不一样。
postgres=# select now();
now
-------------------------------
2019-08-26 10:58:36.508472+08
(1 row)
6、查看当前用户名,current_user与user是完全相同的。
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是当前的角色用户。
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标准中的用语。
postgres=# select current_catalog,current_database();
current_database | current_database
------------------+------------------
postgres | postgres
(1 row)
9、查看当前session所在客户端的IP地址及端口(仅限TCP-IP连接,如果是UDP连接的话,查询结果IP与port都显示空)。
postgres=# select inet_client_addr(),inet_client_port();
inet_client_addr | inet_client_port
------------------+------------------
|
(1 row)
10、查询当前数据库服务器的IP地址及端口(仅限TCP-IP连接,如果是UDP连接的话,查询结果IP与port都显示空)。
postgres=# select inet_server_addr(),inet_server_port();
inet_server_addr | inet_server_port
------------------+------------------
192.168.91.5 | 5866
(1 row)
11、查询当前session的后台服务进程的PID。
postgres=# select pg_backend_pid();
pg_backend_pid
----------------
3958
(1 row)
12、查看当前共享内存的大小。
postgres=# show shared_buffers;
shared_buffers
----------------
128MB
(1 row)
13、修改当前session参数配置。
postgres=# set maintenance_work_mem to '128MB';
SET
postgres=# select set_config('maintenance_work_mem','128MB',false);
set_config
------------
128MB
(1 row)
14、查看当前正在写的WAL文件。
postgres=# select pg_xlogfile_name(pg_current_xlog_location());
pg_xlogfile_name
--------------------------
00000001000000000000004B
(1 row)
15、查看当前WAL的buffer中还有多少字节的数据没有写到磁盘中。
postgres=# select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());
pg_xlog_location_diff
-----------------------
0
(1 row)
16、查看数据库实例是否正在做基础备份。
postgres=# select pg_is_in_backup(),pg_backup_start_time(); pg_is_in_backup | pg_backup_start_time
-----------------+----------------------
f |
(1 row)
17、查看当前数据库实例时HOT Standby状态还是正常数据库状态。
postgres=# select pg_is_in_recovery();
pg_is_in_recovery
-------------------
f
(1 row)
18、查看数据库大小,如果数据库中有很多表,使用上述命令将比较慢,可能对当前系统产生不利影响,pg_size_pretty()函数会把数字以MB、GB等格式显示出来。
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、查看表的大小,仅计算表的大小,不包括索引的大小。
postgres=# select pg_size_pretty(pg_relation_size('test')); pg_size_pretty
----------------
0 bytes
(1 row)
20、查看表的大小,pg_total_relation_size()把表上索引的大小也计算入内。
postgres=# select pg_size_pretty(pg_total_relation_size('test'));
pg_size_pretty
----------------
0 bytes
(1 row)
21、查看表上所有索引的大小,pg_indexes_size()函数的参数名是一个表对应的oid(输入表名会自动转换成表的oid),而不是索引的名称。
postgres=# select pg_size_pretty(pg_indexes_size('test'));
pg_size_pretty
----------------
0 bytes
(1 row)
22、查看表空间大小。
postgres=# select pg_size_pretty(pg_tablespace_size('pg_global'));
pg_size_pretty
----------------
477 kB
(1 row)
23、查看表对应的数据文件。
postgres=# select pg_relation_filepath('test');
pg_relation_filepath
----------------------
base/12902/24952
(1 row)