查看服务进程:

select pid,usename,client_addr,client_port from pg_stat_activity;
 
查看当前数据库实例的版本:
 select version(); 
 
查看数据库的启动时间:
select pg_postmaster_start_time();
 
查看最后load配置文件的时间:
select pg_conf_load_time();
 
显示当前数据库时区:
show timezone;
 
postgres=# show timezone;
 TimeZone 
----------
 PRC
(1 row)
 
postgres=# select now();
              now              
-------------------------------
 2015-07-10 16:27:59.692621+08
(1 row)
 
显示实例中有哪些数据库:
postgres=# \l   或者 [postgre@pg-1 ~]$ psql -l
 
查看当前用户名:
select user;
或者
select current_user;
 
查看session用户:
 select session_user;
 
查询当前连接的数据库名称:
postgres=# select current_catalog,current_database();
 current_database | current_database 
------------------+------------------
 postgres         | postgres
(1 row)
 
查询当前session所在客户端的IP地址及端口:
 select inet_client_addr(),inet_client_port();
 
查询到当前数据库服务器的IP地址及端口:
 select inet_server_addr(),inet_server_port();
 
查询当前session的后台服务进程的pid:
postgres=# select pg_backend_pid();
 pg_backend_pid 
----------------
          12504
(1 row)
通过操作系统命令看下此后台进程:
[root@pg-1 postgresql-9.4.4]# ps -ef |grep  12504 |grep -v grep
postgre  12504  1590  0 16:34 ?        00:00:00 postgres: postgre postgres [local] idle
 
查看当前正在写的WAL文件:
postgres=# select pg_xlogfile_name(pg_current_xlog_location());
     pg_xlogfile_name     
--------------------------
 000000010000000000000001
(1 row)
 
查看当前WAL的buffer中还有多少字节的数据没有写到磁盘中:
postgres=# select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());
 pg_xlog_location_diff 
-----------------------
                     0
(1 row)
 
查看数据库实例是否在做基础备份:
postgres=# select pg_is_in_backup(),pg_backup_start_time();
 pg_is_in_backup | pg_backup_start_time 
-----------------+----------------------
 f               | 
(1 row)
 
查看当前数据库实例是Hot Standby状态还是正常数据库状态:
postgres=# select pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 f
(1 row)
 
查看数据库大小:
postgres=# select pg_database_size('pgtest'),pg_size_pretty(pg_database_size('pgtest'));
 pg_database_size | pg_size_pretty 
------------------+----------------
          6998688 | 6835 kB
(1 row)
注:如果数据库中有很多表,使用上述命令将比较慢,也可能对当前系统产生不利的影响。pg_size_pretty()函数会把数字以MB、GB等格式显示出来,这样会更直观。
 
查看表的大小:
pgtest=# select pg_size_pretty(pg_relation_size('test01'));
 pg_size_pretty 
----------------
 8192 bytes
(1 row)
注:仅计算表的大小,不包括索引的大小;
 
pgtest=# select pg_size_pretty(pg_total_relation_size('test01'));
 pg_size_pretty 
----------------
 24 kB
(1 row)
 
注:包括索引大小
 
查看表上所有索引的大小:
pgtest=# select pg_size_pretty(pg_indexes_size('test01'));
 pg_size_pretty 
----------------
 16 kB
(1 row)
 
查看表空间的大小:
pgtest=# select pg_size_pretty(pg_tablespace_size('pg_global'));
 pg_size_pretty 
----------------
 437 kB
(1 row)
 
查看表对应的数据文件:
pgtest=# select pg_relation_filepath('test01');
 pg_relation_filepath 
----------------------
 base/16403/16410
(1 row)
 
修改postgresql.conf后,让修改生效的方法有两种:
1)在操作系统下使用:pg_ctl   reload
2) 在psql中使用:select pg_reload_conf();
pgtest=# select pg_reload_conf();
 pg_reload_conf 
----------------
 t
(1 row)
 
pgtest=# select pg_conf_load_time();
       pg_conf_load_time       
-------------------------------
 2015-07-10 17:44:45.620045+08
(1 row)
 
注:如果需要重启数据库服务的配置项,修改后使用上面的方法并不能使之生效。
 
切换log日志到下一个的命令:
postgres=# select pg_rotate_logfile();
 pg_rotate_logfile 
-------------------
 t
(1 row)
 
切换WAL日志文件:
postgres=# select pg_switch_xlog();
 pg_switch_xlog 
----------------
 0/17AF678 
(1 row)
 
收工生成一次checkpoint:
postgres=# checkpoint;
CHECKPOINT
 
 
取消一个正在长时间执行的SQL方法:
有两个函数可以完成这个功能:
1)pg_cancel_backend(pid):取消一个正在执行的SQL;
2)pg_terminate_backend(pid):终止一个后台服务进程,同时释放此后台服务进程的资源。
这两个函数的区别是:pg_cancel_backend()函数实际上是给正在执行的SQL任务配置一个取消标志,正在执行的任务是在合适的时候检测到此标志后主动退出;但如果这个任务没有主动检测到这个标志,则该任务就无法正常退出,这时需要使用pg_terminate_backend()命令在终止SQL的执行。
通常是先查询pg_stat_activity,试图找出长时间运行的SQL:
postgres=# select pid,usename,query_start,query from pg_stat_activity ;
 pid  | usename |          query_start          |                            query                             
------+---------+-------------------------------+--------------------------------------------------------------
 1651 | postgre | 2015-07-11 15:35:39.745907+08 | select pid,usename,query_start,query from pg_stat_activity ;
 1722 | postgre | 2015-07-11 15:35:17.114117+08 | select pg_sleep(100);
(2 rows)
 
然后在使用pg_cancel_backend()取消这个SQL,如果pg_cancel_backend()取消不了,再使用pg_terminate_backend():
 
  postgres=# select pid,usename,query_start,query from pg_stat_activity ;
 pid  | usename |          query_start          |                            query                             
------+---------+-------------------------------+--------------------------------------------------------------
 1651 | postgre | 2015-07-11 15:40:11.085173+08 | select pid,usename,query_start,query from pg_stat_activity ;
 1747 | postgre | 2015-07-11 15:40:04.277972+08 | select pg_sleep(100);
(2 rows)
 
postgres=# select pg_cancel_backend(1747);
 pg_cancel_backend 
-------------------
 t
(1 row)
 
postgres=# select pid,usename,query_start,query from pg_stat_activity ;
 pid  | usename |          query_start          |                            query                             
------+---------+-------------------------------+--------------------------------------------------------------
 1651 | postgre | 2015-07-11 15:40:26.885772+08 | select pid,usename,query_start,query from pg_stat_activity ;
 1747 | postgre | 2015-07-11 15:40:04.277972+08 | select pg_sleep(100);
(2 rows)
 
 
 
 postgres=# select pg_terminate_backend(1747);
 pg_terminate_backend 
----------------------
 t
(1 row)
 
postgres=# select pid,usename,query_start,query from pg_stat_activity ;
 pid  | usename |          query_start          |                            query                             
------+---------+-------------------------------+--------------------------------------------------------------
 1651 | postgre | 2015-07-11 15:41:09.413959+08 | select pid,usename,query_start,query from pg_stat_activity ;
(1 row)
 
 
[postgre@pg-1 pg_log]$ pg_basebackup   -D backup     -Ft -z -P  
pg_basebackup: could not connect to server: FATAL:  number of requested standby connections exceeds max_wal_senders (currently 0)
由于没有设置max_wal_senders参数,修改postgresql.conf
max_wal_senders = 2
wal_level = hot_standby 

postgresql 日常sql的更多相关文章

  1. PostgreSQL 日常SQL记录

    平时用的比较多的SQL语句,有时候会忘掉一点点,在这里记录一下: 1.创建表的同时,插入数据: create table test as select generate_series(1, 10000 ...

  2. 关于PostgreSQL的SQL注入必知必会

    一.postgresql简介 postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派. 二.postgresql的SQL注入:(注 ...

  3. PostgreSQL 日常数据库维护工作

    日常数据库维护工作定期备份,定期”清理“数据库,周期性的日志文件管理check_postgres可用于检测数据库的健康并报告异常情况 1. 日常清理 PostgreSQL数据库要求周期性的清理维护.对 ...

  4. PostgreSQL、SQL Server数据库中的数据类型的映射关系

    PostgreSQL 8.1 轰动发布,我也打算将原来使用 SQL Server 的一些应用迁移到 PostgreSQL 上,首先需要迁移的是表,那么这就必须要先搞清楚这两个数据库中的数据类型的映射关 ...

  5. PostgreSQL的SQL语句中的双引号引发的问题

    最近开发一个WEB的ETL工具需要用到不同的数据源.第一次用POSTGRESQL发现一个双引号引发的问题: 标准的SQL是不区分大小写的.但是PostgreSQL对于数据库中对象的名字允许使用支持大小 ...

  6. postgreSQL PL/SQL编程学习笔记(六)——杂七杂八

    1 PL/pgSQL Under the Hood This part discusses some implementation details that are frequently import ...

  7. postgreSQL PL/SQL编程学习笔记(二)

    Control Structures of PL/SQL Control structures are probably the most useful (and important) part of ...

  8. Postgresql Useful SQL/Commands

    Update records ' and a.subscriber_id=b.subscriber_id; Connections select count(*) from pg_stat_activ ...

  9. postgresql slow sql report 慢查询报告

    其实也不完全算PostgreSQL的技巧,应该算是SHELL技巧. 首先要配置好postgresql.conf,让PG记录下慢查询,并且日志固定格式,如下: log_destination = 'cs ...

随机推荐

  1. 【aardio】回车换行符

    回车换行符 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字 ...

  2. E:could not get lock /var/lib/dpkg/lock -ope

    最近研究ubuntu,用apt-get命令安装一些软件包时,总报错:E:could not get lock /var/lib/dpkg/lock -open等 出现这个问题的原因可能是有另外一个程序 ...

  3. list对象中根据两个参数过滤数据

    list对象中根据两个参数过滤数据 List<demo> list = new List<demo>() { ,b=,c=,d= }, ,b=,c=,d= }, ,b=,c=, ...

  4. IIS Express(7.0) HTTP 错误 500.22 - Internal Server Error(vs2013)

    1.错误如下: HTTP 错误 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置. 解决的方法: 首先,找到本地appcmd.x ...

  5. 【机器学习】K均值算法(I)

    K均值算法是一类非监督学习类,其可以通过观察样本的离散性来对样本进行分类. 例如,在对如下图所示的样本中进行聚类,则执行如下步骤 1:随机选取3个点作为聚类中心. 2:簇分配:遍历所有样本然后依据每个 ...

  6. squid 透明代理配置

    阿铭在教程中已经介绍过squid的安装和配置,http://study.lishiming.net/chapter22.html 教程中只介绍了初级的正向代理和反向代理,这篇文档将要介绍透明代理如何配 ...

  7. opencv的安装

    网上搜了好多文章安装opencv3.2.0都未能成功,写的也个不相同,后来找到了opencv官网的教程,看了后才发现,这上面才是最详细的. 于是按照opencv官网教程安装,安装的一半就中断了.经过苦 ...

  8. final,static,abstract

    一.final 1.可以修饰属性,表示常量,其值在运行期间不允许改变.常量必须赋初始值,初始值可以在声明出,构造方法的任意一个地方赋 优点:增强程序的可读性,可维护性 2.可以修饰方法,表示该方法不能 ...

  9. Mybatis第二天

    Mybatis第二天   框架课程 1. 课程计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Fore ...

  10. Unity跳转场景

    Unity中如何加载场景 1.首先需要将场景添加到 Build Settings中,如下图: 2.引用using UnityEngine.SceneManagement; 同步加载:如果场景很大,有可 ...