• PostgreSQL 常用管理命令


    1.1 查看系统信息的常用命令

    1.1.1查看当前数据库实例的版本信息,命令如下:

    1. [maxwell@MaxwellDBA ~]$ psql -d maxwelldb
    2. psql (12.9)
    3. Type "help" for help.
    4. maxwelldb=# select version();
    5. version
    6. ------------------------------------------------------------------------------------------------------------
    7. PostgreSQL 12.9 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4), 64-bit
    8. (1 row)
    9. maxwelldb=#

    1.1.2查看数据库的启动时间,命令如下:

    1. maxwelldb=# select pg_postmaster_start_time();
    2. pg_postmaster_start_time
    3. -------------------------------
    4. 2022-08-30 13:09:57.389012+08
    5. (1 row)
    6. maxwelldb=#

    1.1.3 查看最后load配置文件的时间,命令如下:

    1. maxwelldb=# select pg_conf_load_time();
    2. pg_conf_load_time
    3. -------------------------------
    4. 2022-08-30 13:09:57.371297+08
    5. (1 row)
    6. maxwelldb=#

    1.1.4 使用pg_ctl reload后会改变配置的装载时间,命令如下:

    1. osdba@db01:~$ pg_ctl reload
    2. server signaled osdba@db01:~$ psql
    3. psql (9.3.2) Type "help" for help.
    4. osdba=# select pg_conf_load_time();
    5. pg_conf_load_time
    6. -------------------------------
    7. 2014-07-19 09:36:06.292696+00
    8. (1 row)

    1.1.5 显示当前数据库时区,命令如下:

    1. maxwelldb=# show timezone;
    2. TimeZone
    3. ---------------
    4. Asia/Shanghai
    5. (1 row)
    6. maxwelldb=#

    注意,数据库的时区有时并不是当前操作系统的时区,此时在数据库中看到的时间就与在操作系统中看到的不一致,示例如下:

    1. maxwelldb=# select now();
    2. now
    3. -------------------------------
    4. 2022-08-30 14:58:29.949507+08
    5. (1 row)
    6. maxwelldb=#

    1.1.6 查看当前实例中有哪些数据库,命令如下:

    1. [maxwell@MaxwellDBA ~]$ psql -l
    2. List of databases
    3. Name | Owner | Encoding | Collate | Ctype | Access privileges
    4. -----------+----------+----------+-------------+-------------+-----------------------
    5. maxwell | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    6. maxwelldb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    7. postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    8. template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
    9. | | | | | postgres=CTc/postgres
    10. template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
    11. | | | | | postgres=CTc/postgres
    12. (5 rows)
    13. [maxwell@MaxwellDBA ~]$ psql -d maxwelldb
    14. psql (12.9)
    15. Type "help" for help.
    16. maxwelldb=# \
    17. invalid command \
    18. Try \? for help.
    19. maxwelldb=#
    20. maxwelldb=# \l
    21. List of databases
    22. Name | Owner | Encoding | Collate | Ctype | Access privileges
    23. -----------+----------+----------+-------------+-------------+-----------------------
    24. maxwell | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    25. maxwelldb | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    26. postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 |
    27. template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
    28. | | | | | postgres=CTc/postgres
    29. template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres +
    30. | | | | | postgres=CTc/postgres
    31. (5 rows)
    32. maxwelldb=#

    1.1.7 查看当前用户名,命令如下:

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

    上例中使用current_user与使用user的结果是完全相同的。

    1.1.8 查看session用户,命令如下:

    1. maxwelldb=# select session_user;
    2. session_user
    3. --------------
    4. maxwell
    5. (1 row)
    6. maxwelldb=#

    注意,通常情况下“session_user”与“user”是相同的。但当用命令“SET ROLE”改变用户的角色时,这两者就不同了,示例如下:

    1. maxwelldb=# set role postgres;
    2. SET
    3. maxwelldb=# select session_user;
    4. session_user
    5. --------------
    6. maxwell
    7. (1 row)
    8. maxwelldb=# select user;
    9. user
    10. ----------
    11. postgres
    12. (1 row)
    13. maxwelldb=#

    1.1.9 查询当前连接的数据库名称,命令如下:

    1. maxwelldb=# select current_catalog,current_database();
    2. current_catalog | current_database
    3. -----------------+------------------
    4. maxwelldb | maxwelldb
    5. (1 row)
    6. maxwelldb=#

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

    1.1.10 查询当前session所在客户端的IP地址及端口,命令如下:

    1. maxwelldb=# select inet_client_addr(),inet_client_port();
    2. inet_client_addr | inet_client_port
    3. ------------------+------------------
    4. |
    5. (1 row)
    6. maxwelldb=#

    1.1.11 查询当前数据库服务器的IP地址及端口,命令如下:

    1. maxwelldb=# select inet_server_addr(),inet_server_port();
    2. inet_server_addr | inet_server_port
    3. ------------------+------------------
    4. |
    5. (1 row)
    6. maxwelldb=#

    1.1.12 查询当前session的后台服务进程的PID,命令如下:

    1. maxwelldb=# select pg_backend_pid();
    2. pg_backend_pid
    3. ----------------
    4. 341331
    5. (1 row)
    6. maxwelldb=#

    1.1.13 通过操作系统命令查看此后台服务进程,命令如下:

    1. [maxwell@MaxwellDBA ~]$ ps -ef|grep 340540 | grep -v grep
    2. postgres 340540 1 0 13:09 ? 00:00:00 /usr/bin/postmaster -D /var/lib/pgsql/data
    3. postgres 340541 340540 0 13:09 ? 00:00:00 postgres: logger
    4. postgres 340543 340540 0 13:09 ? 00:00:00 postgres: checkpointer
    5. postgres 340544 340540 0 13:09 ? 00:00:00 postgres: background writer
    6. postgres 340545 340540 0 13:09 ? 00:00:00 postgres: walwriter
    7. postgres 340546 340540 0 13:09 ? 00:00:00 postgres: autovacuum launcher
    8. postgres 340547 340540 0 13:09 ? 00:00:00 postgres: stats collector
    9. postgres 340548 340540 0 13:09 ? 00:00:00 postgres: logical replication launcher
    10. [maxwell@MaxwellDBA ~]$

    1.1.14 查看当前参数配置情况,命令如下:

    1. [maxwell@MaxwellDBA ~]$ psql -d maxwelldb
    2. psql (12.9)
    3. Type "help" for help.
    4. maxwelldb=# show shared_buffers;
    5. shared_buffers
    6. ----------------
    7. 128MB
    8. (1 row)
    9. maxwelldb=# select current_setting('shared_buffers');
    10. current_setting
    11. -----------------
    12. 128MB
    13. (1 row)
    14. maxwelldb=#

    1.1.15 修改当前session的参数配置,命令如下:

    1. maxwelldb=# select set_config('maintenance_work_mem','128MB',false);
    2. set_config
    3. ------------
    4. 128MB
    5. (1 row)
    6. maxwelldb=# set maintenance_work_mem to '128MB';
    7. SET
    8. maxwelldb=# select set_config('maintenance_work_mem','128MB',false);
    9. set_config
    10. ------------
    11. 128MB
    12. (1 row)
    13. maxwelldb=#

    1.1.16 查看当前正在写的WAL文件,命令如下:

    1.1.17  查看当前WAL文件的buffer中还有多少字节的数据没有写入磁盘中,命令如下:

     1.1.18 查看数据库实例是否正在做基础备份,命令如下:

    1. maxwelldb=# select pg_is_in_backup(),pg_backup_start_time();
    2. pg_is_in_backup | pg_backup_start_time
    3. -----------------+----------------------
    4. f |
    5. (1 row)
    6. maxwelldb=#

    1.1.19 查看当前数据库实例处于Hot Standby状态还是正常数据库状态,命令如下:

    1. maxwelldb=# select pg_is_in_recovery();
    2. pg_is_in_recovery
    3. -------------------
    4. f
    5. (1 row)
    6. maxwelldb=#

    1.1.20 查看数据库的大小,命令如下:

    1. maxwelldb=# select pg_database_size('maxwelldb'),pg_size_pretty(pg_database_size('maxwelldb'));
    2. pg_database_size | pg_size_pretty
    3. ------------------+----------------
    4. 8242031 | 8049 kB
    5. (1 row)
    6. maxwelldb=#

    上面的命令用于查看数据库“maxwelldb”的大小。注意,如果数据库中有很多表,使用上述命令查询将比较慢,也可能对当前系统产生不利的影响。在上面的命令中,pg_size_pretty()函数会把数字以MB、GB等格式显示出来,这样的结果更加直观。

    1.1.21 查看表的大小,命令如下:

    1. maxwelldb=# select pg_size_pretty(pg_relation_size('playground'));
    2. pg_size_pretty
    3. ----------------
    4. 8192 bytes
    5. (1 row)
    6. maxwelldb=# select pg_size_pretty(pg_total_relation_size('playground'));
    7. pg_size_pretty
    8. ----------------
    9. 24 kB
    10. (1 row)
    11. maxwelldb=#

    上例中,pg_relation_size()仅计算表的大小,不包括索引的大小,而pg_total_relation_size()则会把表上索引的大小也计算进来。

    1.1.22 查看表上所有索引的大小,命令如下:

    1. maxwelldb=# select pg_size_pretty(pg_indexes_size('playground'));
    2. pg_size_pretty
    3. ----------------
    4. 16 kB
    5. (1 row)
    6. maxwelldb=#

    注意,pg_indexes_size()函数的参数名是一个表对应的OID(输入表名会自动转换成表的OID),而不是索引的名称。

    1.1.23 查看表空间的大小,命令如下:

    1. maxwelldb=# select pg_size_pretty(pg_tablespace_size('pg_global'));
    2. pg_size_pretty
    3. ----------------
    4. 623 kB
    5. (1 row)
    6. maxwelldb=#
    1. maxwelldb=# select pg_size_pretty(pg_tablespace_size('pg_default'));
    2. pg_size_pretty
    3. ----------------
    4. 39 MB
    5. (1 row)
    6. maxwelldb=#

      上面的示例中查看了全局表空间“pg_global”默认表空间“pg_default”的大小。

    1.1.24 查看表对应的数据文件,命令如下:

    1. maxwelldb=# select pg_relation_filepath('playground');
    2. pg_relation_filepath
    3. ----------------------
    4. base/16385/16389
    5. (1 row)
    6. maxwelldb=#
  • 相关阅读:
    API接口开发规范
    2022年世界大学声誉排名(完整版)
    *Django中的Ajax 纯js的书写样式1
    js基础,元素获取,事件触发,随机点名
    GO 中优雅编码和降低圈复杂度
    Apache Flink 1.12.0 on Yarn(3.1.1) 所遇到的問題
    Android NDK 中有导出 sp智能指针吗?如果没有,可以用什么方法代替 android::sp 智能指针
    2022年11月 Ubuntu 18.04 ROS Melodic 安装教程
    【BERT-多标签文本分类实战】之二——BERT的地位与名词术语解释
    Linux 【gdb】
  • 原文地址:https://blog.csdn.net/u011868279/article/details/126603987