PostgreSQL实时查看数据库实例正在执行的SQL语句实例详解

 更新时间:2023年01月13日 10:02:23   作者:技术很渣  
在任何数据库中,分析和优化SQL的执行,最重要的工作就是执行计划的解读,而说到执行计划得先了解postgresql的查询执行过程,下面这篇文章主要给大家介绍了关于PostgreSQL实时查看数据库实例正在执行的SQL语句的相关资料,需要的朋友可以参考下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

一、查询当前正在执行所有SQL语句

SELECT
	pid,
	datname,
	usename,
	client_addr,
	application_name,
	STATE,
	backend_start,
	xact_start,
	xact_stay,
	query_start,
	query_stay,
	REPLACE ( query, chr( 10 ), ' ' ) AS query 
FROM
	(
	SELECT
		pgsa.pid AS pid,
		pgsa.datname AS datname,
		pgsa.usename AS usename,
		pgsa.client_addr client_addr,
		pgsa.application_name AS application_name,
		pgsa.STATE AS STATE,
		pgsa.backend_start AS backend_start,
		pgsa.xact_start AS xact_start,
		EXTRACT ( epoch FROM ( now( ) - pgsa.xact_start ) ) AS xact_stay,
		pgsa.query_start AS query_start,
		EXTRACT ( epoch FROM ( now( ) - pgsa.query_start ) ) AS query_stay,
		pgsa.query AS query 
	FROM
		pg_stat_activity AS pgsa 
	WHERE
		pgsa.STATE != 'idle' 
		AND pgsa.STATE != 'idle in transaction' 
		AND pgsa.STATE != 'idle in transaction (aborted)' 
	) idleconnections 
ORDER BY
	query_stay DESC

二、判断是否存在慢查询语句

字段解释
PID数据库查询进程ID
query_stay查询时长秒
query查询SQL语句

三、按查询进程,杀掉慢查询释放资源

SELECT pg_terminate_backend(PID);
SELECT pg_terminate_backend(6289);

四、扩展query的显示长度能展示出全部语句

vi /var/lib/pgsql/12/data/postgresql.conf  

修改track_activity_query_size的值重启数据库服务

五、杀掉某个数据库的所有数据库连接

SELECT pg_terminate_backend(pg_stat_activity.pid)FROM pg_stat_activity WHERE datname='数据库名称' AND pid<>pg_backend_pid();

六、导出数据库某个表

pg_dump -t 某个表名  "host=192.168.16.31  port=18921 user=postgres password=数据库密码  dbname=数据库"  -f /app/zjfbeifen/1.sql

七、shell脚本自动导入按表

touch insert_sql.sh

#!/bin/bash
. /etc/profile
. ~/.bash_profile
export PATH=/usr/pgsql-12/bin:/usr/bin;
export PGPASSWORD=数据库密码;psql -U postgres -d 数据库名称    < /mnt/nas/bak-06/1.sql;

指定postgres用户执行导入某个表的语句,免密执行shell脚本
touch nasen_insert.sql

#!/bin/sh
source /etc/profile
PATH=/usr/local/bin:$PATH
echo 'task_start'
runuser - postgres -g postgres -c "sh /data/test/insert_sql.sh"
echo 'task_finish'

定时器配置

00 10 * * * /usr/bin/sh /data/test/insert_nasen.sh >>/data/test/insert_nasen.log

八、shell脚本执行postgre的sql语句

touch drop01.sql

#删除某个表SQL语句

DROP TABLE IF EXISTS public.test;

touch drop.sh

#!/bin/bash
. /etc/profile
. ~/.bash_profile
export PATH=/usr/pgsql-12/bin:/usr/bin;
#su postgres
export PGPASSWORD=123456;psql -U postgres -d 数据库名称   < /data/test/drop01.sql;

touch nasen_drop.sh

#!/bin/bash
source /etc/profile
PATH=/usr/local/bin:$PATH

echo 'task_start'
runuser - postgres -g postgres -c "sh /data/test/drop.sh"
echo 'task_finish'

定时器调用

00 9 * * * /usr/bin/sh /data/test/drop_nasen.sh >>/data/test/drop_nasen.log

九、导出导入整个数据库

备份导出整个数据库

pg_dump -h localhost  -U postgres  -d riskDataCheck -Fc -f /soft/backup/20220321/test-0321.dump

导入某个数据库

pg_restore -h localhost -U postgres -d risk_agcloud_430000_1 /soft/backup/test-0321.dump

十、切换数据库存储路径迁移data目录

步骤1:创建新data目录

sudo mkdir /home/data
sudo chown -R postgres:postgres data
sudo chmod 700 data

步骤2:关闭数据库服务

systemctl stop postgresql-12

步骤3:执行复制

cp -rf /var/lib/pgsql/12/data/* /home/data              #这个路径是默认的在线安装postgresql12.11默认路径
sudo chown -R postgres:postgres data                #加这句是因为复制过来有的时候归属是ROOT用户,应该是postgres用户才对!

步骤4:修改服务配置文件

cd /usr/lib/systemd/system
vi postgresql-12.service                                         #默认的在线安装postgresql12.11服务名称
Environment=PGDATA=/home/data

步骤5:重新加载服务配置

systemctl daemon-reload

步骤6:重启数据库服务

systemctl start postgresql-12

步骤7:查看变更状态

 systemctl status postgresql-12

十一、安装PostGIS插件

步骤1:安装postgis的依赖包

rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

步骤2:安装postgis

yum install postgis31_12.x86_64                                        #这个对版本有一些对应关系注意,这个命令对应的是12.X

步骤3:安装完毕后切换为postgres用户,开启扩展初始化操作

// 开启插件

# su postgres  
# psql  
// 开启pgsql的插件  
postgres=# create extension postgis;  
postgres=# create extension postgis_topology;  
postgres=# create extension fuzzystrmatch;  
postgres=# create extension address_standardizer;  
postgres=# create extension address_standardizer_data_us;  
postgres=# create extension postgis_tiger_geocoder; 
//查看版本,验证安装是否成功
postgres=# SELECT PostGIS_full_version();

步骤4:安装pgRouting

yum install pgrouting_12   #针对12.X版本   

步骤5:检查插件是否完成

十二、安装uuid-ossp插件

postgres=# create extension “uuid-ossp”;
ERROR: could not open extension control file “/opt/pgsql12.2/share/extension/uuid-ossp.control”: No such file or directory

步骤1:安装uuid依赖包

 [root@Location-01 ~]# yum -y install e2fsprogs-devel uuid uuid-devel libuuid-devel 

## 步骤2:执行编译配置

[root@Location-01 ~]# cd /usr/local/src/postgresql-12.2/
[root@Location-01 postgresql-12.2]# pwd
/usr/local/src/postgresql-12.2
[root@Location-01 postgresql-12.2]# ./configure --prefix=/opt/pgsql12.2 --with-uuid=ossp

步骤3:编译安装uuid-ossp

[root@Location-01 ~]# cd /usr/local/src/postgresql-12.2/contrib/uuid-ossp/
[root@Location-01 uuid-ossp]# pwd
/usr/local/src/postgresql-12.2/contrib/uuid-ossp
[root@Location-01 uuid-ossp]# make && make install

步骤4:检测是否成功

postgres=# create extension "uuid-ossp";
CREATE EXTENSION
postgres=# select * from pg_available_extensions;
    name    | default_version | installed_version |                     comment                     
------------+-----------------+-------------------+-------------------------------------------------
 plpgsql    | 1.0             | 1.0               | PL/pgSQL procedural language
 plperl     | 1.0             |                   | PL/Perl procedural language
 plperlu    | 1.0             |                   | PL/PerlU untrusted procedural language
 plpython2u | 1.0             |                   | PL/Python2U untrusted procedural language
 plpythonu  | 1.0             |                   | PL/PythonU untrusted procedural language
 uuid-ossp  | 1.1             |                   | generate universally unique identifiers (UUIDs)
(6 rows)

总结

到此这篇关于PostgreSQL实时查看数据库实例正在执行的SQL语句的文章就介绍到这了,更多相关PostgreSQL查看正在执行SQL语句 内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 教你如何在Centos8-stream安装PostgreSQL13

    教你如何在Centos8-stream安装PostgreSQL13

    这篇文章主要介绍了Centos8-stream安装PostgreSQL13,初始化PostgreSQL需要先创建postgresql储存目录,启动postgresql数据库,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-02-02
  • postgresql 实现数据的导入导出

    postgresql 实现数据的导入导出

    这篇文章主要介绍了postgresql 实现数据的导入导出,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Postgresql 查看SQL语句执行效率的操作

    Postgresql 查看SQL语句执行效率的操作

    这篇文章主要介绍了Postgresql 查看SQL语句执行效率的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • PostgreSQL 角色与用户管理介绍

    PostgreSQL 角色与用户管理介绍

    这篇文章主要介绍PostgreSQL 角色与用户管理相关知识,需要的朋友可以参考下
    2013-08-08
  • 解决postgresql 自增id作为key重复的问题

    解决postgresql 自增id作为key重复的问题

    这篇文章主要介绍了解决postgresql 自增id作为key重复的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • postgresql 中的to_char()常用操作

    postgresql 中的to_char()常用操作

    这篇文章主要介绍了postgresql 中的to_char()常用操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Windows上PostgreSQL安装配置教程

    Windows上PostgreSQL安装配置教程

    这篇文章主要为大家详细介绍了Windows上PostgreSQL安装配置教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • PostgreSQL 字符串拆分与合并案例

    PostgreSQL 字符串拆分与合并案例

    这篇文章主要介绍了PostgreSQL 字符串拆分与合并案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 使用psql操作PostgreSQL数据库命令详解

    使用psql操作PostgreSQL数据库命令详解

    这篇文章主要为大家介绍了使用psql操作PostgreSQL数据库命令详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • postgresql表死锁问题的排查方式

    postgresql表死锁问题的排查方式

    这篇文章主要介绍了postgresql表死锁问题的排查方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01

最新评论

?


http://www.vxiaotou.com