瀚高数据库(HGDB 3.1.4)常用管理命令

本文介绍了瀚高数据库(HGDB 3.1.4)中的一些常用管理命令,包括查看数据库版本等操作。

一、数据库常用命令

1、查看数据库版本

highgo=# select kernel_version();    
                                                 kernel_version                                                 
----------------------------------------------------------------------------------------------------------------
 PostgreSQL 9.4.11 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17), 64-bit
(1 row)

highgo=# select version();
              version               
------------------------------------
 HighGo Database 3.1.4 Linux 64-bit
(1 row)


2、查看数据库启动时间
highgo=# select pg_postmaster_start_time();
   pg_postmaster_start_time    
-------------------------------
 2017-07-19 08:50:48.399154+08
(1 row)

3、查看最后load配置文件的时间
highgo=# select pg_conf_load_time();
       pg_conf_load_time       
-------------------------------
 2017-07-19 08:50:48.297432+08
(1 row)

使用pg_ctl reload改变配置的装载时间,如下:
[highgo@sourcedb ~]$ pg_ctl reload
server signaled
[highgo@sourcedb ~]$ psql
psql (3.1.4)
Type "help" for help.
highgo=# select pg_conf_load_time();
       pg_conf_load_time       
-------------------------------
 2017-07-19 13:52:44.025067+08
(1 row)

4、显示当前数据库时区
highgo=# show timezone;
 TimeZone 
----------
 PRC
(1 row)

当数据库中的时区和操作系统的时区不一致时,在数据库中查看到的时间和操作系统的时间是不一样的。
date和select now()的结果不一致。

5、查看当前用户名
highgo=# select user;
 current_user 
--------------
 highgo
(1 row)

highgo=# select current_user;
 current_user 
--------------
 highgo
(1 row)

highgo=# select session_user;
 session_user 
--------------
 highgo
(1 row)

highgo=# set role test;
SET
highgo=> select session_user;
 session_user 
--------------
 highgo
(1 row)

highgo=> select current_user;
 current_user 
--------------
 test
(1 row)

6、查看当前连接的数据库名称
highgo=> select current_catalog,current_database();
 current_database | current_database 
------------------+------------------
 highgo           | highgo
(1 row)

highgo=> \conninfo
You are connected to database "highgo" as user "highgo" via socket in "/tmp" at port "5866".

7、查案当前session所在客户端的IP地址和端口,本机查询不显示
highgo=> select inet_client_addr(),inet_client_port();
 inet_client_addr | inet_client_port 
------------------+------------------
                  |                 

(1 row)


查案当前session所在服务器的IP地址和端口,本机查询不显示
highgo=> select inet_server_addr(),inet_server_port();
 inet_server_addr | inet_server_port 
------------------+------------------
                  |                 
(1 row)

8、查看当前session的后台服务进程的pid
highgo=> select pg_backend_pid();
 pg_backend_pid 
----------------
          12644
(1 row)

9、查看当前正在写的WAL文件,命令如下 
highgo=> select pg_xlogfile_name(pg_current_xlog_location());
     pg_xlogfile_name     
--------------------------
 00000002000000000000005D
(1 row)

查看当前WAL的buffer中还有多少字节的数据没有写到磁盘中,命令如下:
highgo=> select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());
 pg_xlog_location_diff 
-----------------------
                     0
(1 row)

查看数据库实例是否正在做基础备份:
highgo=> select pg_is_in_backup(),pg_backup_start_time();
 pg_is_in_backup | pg_backup_start_time 
-----------------+----------------------
 f               | 
(1 row)

查看当前数据库时Hot Standby状态还是正常数据库状态:
highgo=> select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 f
(1 row)

10、查看数据库的大小
highgo=> select pg_database_size('highgo'),pg_size_pretty(pg_database_size('highgo'));
 pg_database_size | pg_size_pretty 
------------------+----------------
          7788184 | 7606 kB
(1 row)
如果数据库中得标很多,也可能对当前系统产生不利的影响。上面命令中,pg_size_pretty会把数字以MB、GB的格式显示出来,
这样会更直观。


查看表的大小:
highgo=> select pg_size_pretty(pg_relation_size('test'));
 pg_size_pretty 
----------------
 8192 bytes
(1 row)

highgo=> select pg_size_pretty(pg_total_relation_size('test'));
 pg_size_pretty 
----------------
 24 kB
(1 row)
pg_relation_size()仅计算表的大小,不包含索引的大小;pg_total_relation_size()将表上索引的大小也计算进来。

查看表上所有索引的大小:
highgo=> select pg_size_pretty(pg_indexes_size('test'));
 pg_size_pretty 
----------------
 16 kB
(1 row)
注意:pg_indexes_size()函数的参数名时一个表对应的oid(输入表名会自动换换成表的oid),而不是索引的名称。

11、查看表空间的大小
highgo=# select pg_size_pretty(pg_tablespace_size('pg_global'));
 pg_size_pretty 
----------------
 461 kB
(1 row)

12、查看表对应的数据文件
highgo=# select pg_relation_filepath('test');
 pg_relation_filepath 
----------------------
 base/13010/24824
(1 row)


二、系统维护常用命令
1、修改psotgresql.conf后,让参数生效的方法

[highgo@sourcedb ~]$ pg_ctl reload
或者
highgo=# select  pg_reload_conf();
 pg_reload_conf 
----------------
 t
(1 row)
注意:如果需要重启数据库服务的配置项,修改后用上面的防范并不能使之生效。能生效的配置项都不需要重启数据库服务的。

2、切换log日志到下一个文件
highgo=# select pg_rotate_logfile();
 pg_rotate_logfile 
-------------------
 t
(1 row)

3、切换WAL日志文件
highgo=# select pg_switch_xlog();
 pg_switch_xlog 
----------------
 0/5D003810
(1 row)

4、手工生成一次检查点
highgo=# checkpoint;
CHECKPOINT

5、取消一个正常长时间执行的sql 的方法
有两个函数可以完成这个功能:
(1)pg_cancel_backend(pid):取消一个正在执行的SQL
(2)pg_terminate_backend(pid):终止一个后台服务进程,同时释放此后台服务进程的资源。
这两个函数的区别:pg_cancel_backend()实际上是给正在执行的SQL任务配置一个取消标志,正在执行的任务在合适的时候检测到此标志后会主动退出;
但如果这个任务没有主动检测到这个标志,则该任务就无法正常退出,这时需要使用pg_terminate_backend()命令来终止SQL的执行。
通常是先查询pg_stat_activity,视图找出长时间运行的SQL,命令如下:
highgo=# select pid,usename,query_start,query from pg_stat_activity;
  pid  | usename |          query_start          |                            query                            
-------+---------+-------------------------------+-------------------------------------------------------------
 12722 | highgo  | 2017-07-19 14:26:41.427112+08 | select pid,usename,query_start,query from pg_stat_activity;
(1 row)
然后再使用pg_cancel_backend()取消这个SQL,如果pg_cancel_backend取消不了,再使用pg_terminate_backend()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值