XIKEW.COM - 公读宝典 - PostgreSQL 日常维护指令记录 - 公读宝典,freeswitch,postgreSQL,TSQL - freeswitch接触最多的就是PostgreSQL,记录一下日常维护的指令

PostgreSQL 日常维护指令记录
POSTGRE FREESWITCH 12/21/2022 10:33:44 PM 阅读:19

freeswitch接触最多的就是PostgreSQL,记录一下日常维护的指令 关键字:freeswitch,postgreSQL,TSQL

配置修改生效

修改配置文件postgresql.conf后,让修改生效的方法有两种: 方法一:在操作系统使用如下命令

pg_ctl reload

方法二:在psql中使用如下命令

select pg_reload_conf();

上述方法仅限于不需要重启数据库服务的参数

常用指令

# 查看等待事件
SELECT pid, wait_event_type, wait_event FROM pg_stat_activity WHERE wait_event is NOT NULL;

# 查看数据库对应的base下的目录:
select oid,datname from pg_database ;

# 看是否为备库:
select pg_is_in_recovery();

# 查看备库流复制信息。
select pid,state,client_addr,sync_priority,sync_state from pg_stat_replication;

# 查看备库落后主库多少字节。
select pg_xlog_location_diff(pg_current_xlog_location(),replay_location) from pg_stat_replication;
 
# 查询表中存在的锁
select a.locktype,a.database,a.pid,a.mode,a.relation,b.relname
from pg_locks a
join pg_class b on a.relation = b.oid
where upper(b.relname) = 'TABLE_NAME';

# 查看数据库实例的版本
select version();
 
# 查看数据库的启动时间:
select pg_postmaster_start_time();
 
# 查看最后load配置文件的时间:
select pg_conf_load_time();
 
# 使用pg_ctl reload 改变配置的装载时间:
pg_ctl reload
select pg_conf_load_time();
 
# 显示当前数据库时区:
show timezone;

# 查看当前用户名
select user;
select current_user;
 
# 查看session用户
select session_user;
 
# 查询当前session所在客户端的IP地址及端口:
select inet_client_addr(),inet_client_port();
 
# 查询当前数据库服务器的IP地址及端口:
select inet_server_addr(),inet_server_port();
 
# 查询当前session的后台服务进程的pid
select pg_backend_pid();
 
#查看当前的一些参数配置情况
show shared_buffers;
select current_setting('shared_buffers');

# 修改当前session的参数配置
set maintenance_work_mem to '128MB';
select set_config('maintenance_work_mem','128MB',false);
 
# 查看当前正在写的WAL文件
select pg_xlogfile_name(pg_current_xlog_location());
 
# 查看当前WAL的buffer中还有多少字节的数据没有写到磁盘中
select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());
 
# 查看数据库实例是否正在做基础备份
select pg_is_in_backup(),pg_backup_start_time();
 
# 查看数据库实例是Hot Standy 状态还算是正常数据库状态
select pg_is_in_recovery();
 
# 查看所有数据库的大小。
select pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size from pg_database;

# 查看表的大小
select pg_relation_size('a');

# 以kb、mb、gb的形式显示表的大小
select pg_size_pretty(pg_relation_size('a'));

# 表的总大小,包括索引的大小
select pg_size_pretty(pg_total_relation_size('a'));

# 查看索引大小
select pg_size_pretty(pg_relation_size('a_index'));

# 查看表空间的大小
select pg_size_pretty(pg_tablespace_size('pg_default'));
select pg_tablespace_size('pg_default')/1024/1024 as "SIZE M";  

# 查看表对应的数据文件:
select pg_relation_filepath ('tablename');

# 切换log日志文件到下一个的命令
select pg_rotate_logfile();

# 切换WAL日志文件的命令
select pg_switch_xlog();

# 查询长时间运行的SQL
select pid,usename,query_start,query from pg_stat_activity;
 
# 取消SQL
select pg_cancel_backend(pid);

# 如果取消不了
select pg_terminate_backend(pid);