暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

PostgreSQL自己的ASH图形工具

原创 孙莹 2024-08-25
439

Designer.jpeg

前言

看到灿老师上周推荐PostgreSQL的ASH工具文章。于是就自己动手尝试了一下,把整个操作步骤记录下来给大家提供参考。

配置JAVA环境

由于PostgreSQL ASH Viewer软件是JAVA写的,首先在数据库服务器上配置JAVA8,到官网下载jdk-8u421-linux-x64.tar.gz文件,上传到数据库服务器上,解压设置/etc/profile环境变量

[root@centos7 ~]# tar -zxf jdk-8u421-linux-x64.tar.gz -C /usr/local/ [root@centos7 ~]# chown -R root:root /usr/local/jdk1.8.0_421/ [root@centos7 ~]# cat >> /etc/profile << "EOF" > > export JAVA_HOME=/usr/local/jdk1.8.0_421 > export JRE_HOME=$JAVA_HOME/jre > export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib > export PATH=$JAVA_HOME/bin:$PATH > > EOF [root@centos7 ~]# source /etc/profile [root@centos7 ~]# java -version java version "1.8.0_421" Java(TM) SE Runtime Environment (build 1.8.0_421-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.421-b09, mixed mode) [root@centos7 ~]#

安装PASH-Viewer

官网下载PASH-Viewer-0.4.2.tar最新版本程序上传到数据库服务器postgres用户下

[postgres@centos7 ~]$ ll total 34888 drwxrwxr-x 2 postgres postgres 6 Aug 25 17:48 data -rw-r--r-- 1 postgres postgres 6400000 Aug 25 17:52 PASH-Viewer-0.4.2.tar drwxrwxr-x 6 postgres postgres 4096 Aug 25 17:13 postgresql-14.13 -rw-r--r-- 1 postgres postgres 29317064 Aug 25 17:04 postgresql-14.13.tar.gz [postgres@centos7 ~]$ tar xf PASH-Viewer-0.4.2.tar [postgres@centos7 ~]$ cd PASH-Viewer-0.4.2/ [postgres@centos7 PASH-Viewer-0.4.2]$ cd bin [postgres@centos7 bin]$ pwd /home/postgres/PASH-Viewer-0.4.2/bin [postgres@centos7 bin]$

运行PASH-Viewer

开启图形界面直接运行

注意运行程序需要预计1G内存给出余量

[postgres@centos7 bin]$ ./PASH-Viewer

出现配置登录界面

pashviewer1.png

点击New Connection出现,输入连接本地服务器数据库的信息,点击ok

pashviewer2.png

选择testpg14,连接数据库,点击ok

pashviewer3.png

注意我们这里需要点击Settings,选择Select Mode 为Auto 1min,选择Explain Frequency 10sec

pashviewer4.png

pashviewer5.png

就会显示窗口下面的Top SQL SQL text SQL plan

pashviewer6.png

pgbench模拟测试

开启另一个窗口我们创建一个叫testdb的数据库,用pgbench测试一下。看看效果

[postgres@centos7 data]$ psql
Password for user postgres:
psql (14.13)
Type "help" for help.

postgres=# create database testdb;
CREATE DATABASE
postgres=# quit
[postgres@centos7 data]$ pgbench -i testdb
Password:
dropping old tables...
NOTICE:  table "pgbench_accounts" does not exist, skipping
NOTICE:  table "pgbench_branches" does not exist, skipping
NOTICE:  table "pgbench_history" does not exist, skipping
NOTICE:  table "pgbench_tellers" does not exist, skipping
creating tables...
generating data (client-side)...
100000 of 100000 tuples (100%) done (elapsed 0.04 s, remaining 0.00 s)
vacuuming...
creating primary keys...
done in 0.10 s (drop tables 0.00 s, create tables 0.00 s, client-side generate 0.05 s, vacuum 0.03 s, primary keys 0.02 s).
[postgres@centos7 data]$ pgbench -h localhost -U postgres -b simple-update -c 30 -T600 -R 3000 testdb
Password:
pgbench (14.13)
starting vacuum...end.

切换到PASH-Viewer程序,我们可以看到数据库整体的ASH运行情况

pashviewer7.png

总结

PostgreSQL ASH Viewer小程序是PostgreSQL数据库中活动会话历史数据的图形工具。安装快速,无需依赖插件,可以帮我们快速定位生产环境数据库中有问题的session和SQL语句。但因为程序本身没有一个表记录ash,如果要定位查询历史问题的话,建议使用pgsentinel插件,用于记录活动会话(pg_stat_activity)历史记录并将活动与查询统计信息 (pg_stat_statements) 链接起来并保存到pg_stat_statements_history这个视图里。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论