PG_SETTING :配置参数视图

Context类型:

  • Internal:只读参数postgres写死或者初始化设置。
  • Postmaster:需要重启postgres进程
  • Sighup:修改postgresql.conf需要重新reload
  • Backend:修改postgresql.conf需要重新reload,配置项只会在新链接生效
  • Superuser:只能有超户set生效,同时只会影响自身session。
  • User:普通用户set生效其余同superuser

 

查看数据库启动时间

Select pg_postmaster_start_time();

查看最后load配置文件时间:

Select pg_conf_load_time();

查看当前连接用户:

Select current_user();

查看当前数据库:

Select current_database();

查看数据库当前参数:

如shared_buffers;

Show shared_buffers;
select current_setting(‘shared_buffers’);

修改当前session的参数配置:

Set maintenance_work_mem to ‘128MB’;

查看数据库对象大小:

查看表数据大小:

select pg_size_pretty(pg_table_size('bdmap.cfz18'));

select pg_table_size('bdmap.cfz18');--单位B

查看表中所有索引大小:

select pg_size_pretty(pg_indexes_size('bdmap.cfz18')) /1024/1024 MB;

SELECT pg_indexes_size('bdmap.cfz18') /1024/1024 MB;

查看表单个索引大小:

select pg_size_pretty(pg_relation_size('bdmap.index_cfz18')) ;

select pg_relation_size('bdmap.index_cfz18') /1024/1024 MB;

查看表总大小:

select pg_size_pretty(pg_total_relation_size('bdmap.cfz18')) /1024/1024 MB;

SELECT pg_total_relation_size('bdmap.cfz18')/1024/1024 MB;

查看schema下各表数据量:

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

查看表数据量:

select reltuples::bigint from pg_catalog.pg_class where relname ='nb_tab_http_102199';

查看数据库启动时间

select * from pg_postmaster_start_time();

查看数据库最近配置装载时间:

select * from pg_conf_load_time();

查看当前session-PID

select pg_backend_pid();

获取正在写的wal日志:

Select pg_walfile_name(pg_current_wal_lsn());

获取wal的buffer中还有多少字节没写入到磁盘:

select pg_wal_lsn_diff(pg_current_wal_insert_lsn(),pg_current_wal_lsn());

查看PG是否在在基础备份,以及开始时间:

select pg_is_in_backup(),pg_backup_start_time();

查看当前数据库实例是hot standby还是正常数据库状态:

select pg_is_in_recovery();

查看表对应的数据文件:

select pg_relation_filepath('all_result');

切换服务器的日志文件

Select pg_rotate_logfile();

切换WAL日志

select pg_switch_wal();

手动checkpoint

Checkpoint;

取消一个长时间执行的SQL:

 

pg_cancel_backend(pid int);##取消正在执行的sql

pg_terminate_backend(pid int); ##终止一个后台服务进程,同时释放后台服务进程资源

区别:前者是给正在执行的SQL配置一个取消标志,正在执行的任务在合适的时候检查到就主动退出,如果没有检测到该任务无法正常退出,这时需要用后者来执行。