安装pg_stat_statments插件

这个安装基础是POSTGRESQL数据库已经安装好,想使用Pg_stat_statments插件,以下是测试环境安装的步骤,后续查看慢SQL持续更新中:

1.进入到安装包的里面make &&make install

[root@d2-apptest203 extension]# cd /u01/postgresql-15.3/contrib/pg_stat_statements/
[root@d2-apptest203 pg_stat_statements]# ll
total 244
drwxrwxrwx 2 postgre postgre    74 May  9  2023 expected
-rw-r--r-- 1 postgre postgre  1212 May  9  2023 Makefile
-rw-r--r-- 1 postgre postgre  1246 May  9  2023 pg_stat_statements--1.0--1.1.sql
-rw-r--r-- 1 postgre postgre  1336 May  9  2023 pg_stat_statements--1.1--1.2.sql
-rw-r--r-- 1 postgre postgre  1454 May  9  2023 pg_stat_statements--1.2--1.3.sql
-rw-r--r-- 1 postgre postgre   345 May  9  2023 pg_stat_statements--1.3--1.4.sql
-rw-r--r-- 1 postgre postgre   305 May  9  2023 pg_stat_statements--1.4--1.5.sql
-rw-r--r-- 1 postgre postgre  1427 May  9  2023 pg_stat_statements--1.4.sql
-rw-r--r-- 1 postgre postgre   376 May  9  2023 pg_stat_statements--1.5--1.6.sql
-rw-r--r-- 1 postgre postgre   806 May  9  2023 pg_stat_statements--1.6--1.7.sql
-rw-r--r-- 1 postgre postgre  1744 May  9  2023 pg_stat_statements--1.7--1.8.sql
-rw-r--r-- 1 postgre postgre  2128 May  9  2023 pg_stat_statements--1.8--1.9.sql
-rw-r--r-- 1 postgre postgre  2114 May  9  2023 pg_stat_statements--1.9--1.10.sql
-rw-r--r-- 1 postgre postgre 85071 May  9  2023 pg_stat_statements.c
-rw-r--r-- 1 postgre postgre    48 May  9  2023 pg_stat_statements.conf
-rw-r--r-- 1 postgre postgre   205 May  9  2023 pg_stat_statements.control
-rw-r----- 1 postgre postgre 51512 Sep  9 18:50 pg_stat_statements.o
-rwxr-x--- 1 postgre postgre 49232 Sep  9 18:50 pg_stat_statements.so
drwxrwxrwx 2 postgre postgre    74 May  9  2023 sql

[root@d2-apptest203 pg_stat_statements]#** make && make install**

make -C ../../src/backend generated-headers
make[1]: Entering directory '/u01/postgresql-15.3/src/backend'
make -C catalog distprep generated-header-symlinks
make[2]: Entering directory '/u01/postgresql-15.3/src/backend/catalog'
make[2]: Nothing to be done for 'distprep'.
make[2]: Nothing to be done for 'generated-header-symlinks'.
make[2]: Leaving directory '/u01/postgresql-15.3/src/backend/catalog'
make -C utils distprep generated-header-symlinks
make[2]: Entering directory '/u01/postgresql-15.3/src/backend/utils'
make[2]: Nothing to be done for 'distprep'.
make[2]: Nothing to be done for 'generated-header-symlinks'.
make[2]: Leaving directory '/u01/postgresql-15.3/src/backend/utils'
make[1]: Leaving directory '/u01/postgresql-15.3/src/backend'
make -C ../../src/backend generated-headers
make[1]: Entering directory '/u01/postgresql-15.3/src/backend'
make -C catalog distprep generated-header-symlinks
make[2]: Entering directory '/u01/postgresql-15.3/src/backend/catalog'
make[2]: Nothing to be done for 'distprep'.
make[2]: Nothing to be done for 'generated-header-symlinks'.
make[2]: Leaving directory '/u01/postgresql-15.3/src/backend/catalog'
make -C utils distprep generated-header-symlinks
make[2]: Entering directory '/u01/postgresql-15.3/src/backend/utils'
make[2]: Nothing to be done for 'distprep'.
make[2]: Nothing to be done for 'generated-header-symlinks'.
make[2]: Leaving directory '/u01/postgresql-15.3/src/backend/utils'
make[1]: Leaving directory '/u01/postgresql-15.3/src/backend'
/bin/mkdir -p '/u01/postgre/lib/postgresql'
/bin/mkdir -p '/u01/postgre/share/postgresql/extension'
/bin/mkdir -p '/u01/postgre/share/postgresql/extension'
/bin/install -c -m 755  pg_stat_statements.so '/u01/postgre/lib/postgresql/pg_stat_statements.so'
/bin/install -c -m 644 ./pg_stat_statements.control '/u01/postgre/share/postgresql/extension/'
/bin/install -c -m 644 ./pg_stat_statements--1.4.sql ./pg_stat_statements--1.9--1.10.sql ./pg_stat_statements--1.8--1.9.sql ./pg_stat_statements--1.7--1.8.sql ./pg_stat_statements--1.6--1.7.sql ./pg_stat_statements--1.5--1.6.sql ./pg_stat_statements--1.4--1.5.sql ./pg_stat_statements--1.3--1.4.sql ./pg_stat_statements--1.2--1.3.sql ./pg_stat_statements--1.1--1.2.sql ./pg_stat_statements--1.0--1.1.sql  '/u01/postgre/share/postgresql/extension/'

2.修改编译后文件的权限
[root@d2-apptest203 pg_stat_statements]# cd /u01/postgre/share/postgresql/extension
[root@d2-apptest203 pg_stat_statements]# chown -R postgre.postgre *

3.切换到postgre用户下,安装插件
[root@d2-apptest203 extension]# su - postgre
Last login: Mon Sep  9 19:04:32 CST 2024 on pts/1
[postgre@d2-apptest203 ~]$ psql postgres
psql (15.3)
Type "help" for help.

postgres=# CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
CREATE EXTENSION

4.查看插件是否安装成功
select * from pg_extension;

postgres=# select * from pg_extension;
  oid  |      extname       | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition
-------+--------------------+----------+--------------+----------------+------------+-----------+--------------
 13756 | plpgsql            |       10 |           11 | f              | 1.0        |           |
 16393 | pg_stat_statements |       10 |         2200 | t              | 1.10       |           |
(2 rows)


5.查看数据库插件的配置
postgres=# select * from pg_settings  where name='shared_preload_libraries' and setting ='pg_stat_statements';
 name | setting | unit | category | short_desc | extra_desc | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart
------+---------+------+----------+------------+------------+---------+---------+--------+---------+---------+----------+----------+-----------+------------+------------+-----------------
(0 rows)

6.修改postgresql.conf配置信息; 配置文件中进行一些配置来使用 pg_stat_statements, shared_preload_libraries:需要将 pg_stat_statements 添加到这个参数中,以便在 PostgreSQL 启动时加载该扩展。修改配置后,你需要重启 PostgreSQL 服务。
shared_preload_libraries = 'pg_stat_statements'

7.查看数据库扩展的配置
postgres=# select * from pg_settings  where name='shared_preload_libraries' and setting ='pg_stat_statements';
           name           |      setting       | unit |                        category                        |                   short_desc                   | extra_desc |  context   |
vartype |       source       | min_val | max_val | enumvals | boot_val |     reset_val      |            sourcefile             | sourceline | pending_restart
--------------------------+--------------------+------+--------------------------------------------------------+------------------------------------------------+------------+------------+-
--------+--------------------+---------+---------+----------+----------+--------------------+-----------------------------------+------------+-----------------
 shared_preload_libraries | pg_stat_statements |      | Client Connection Defaults / Shared Library Preloading | Lists shared libraries to preload into server. |            | postmaster |
string  | configuration file |         |         |          |          | pg_stat_statements | /u01/postgre/data/postgresql.conf |        740 | f
(1 row)

8.查看SQL效率的表
select * from pg_stat_statments;

postgres=# select * from pg_stat_statements;
 userid | dbid | toplevel |       queryid       |                          query                           | plans | total_plan_time | min_plan_time | max_plan_time | mean_plan_time | stdd
ev_plan_time | calls |  total_exec_time   |   min_exec_time    |   max_exec_time    |   mean_exec_time   | stddev_exec_time | rows | shared_blks_hit | shared_blks_read | shared_blks_dirtie
d | shared_blks_written | local_blks_hit | local_blks_read | local_blks_dirtied | local_blks_written | temp_blks_read | temp_blks_written | blk_read_time | blk_write_time | temp_blk_read_t
ime | temp_blk_write_time | wal_records | wal_fpi | wal_bytes | jit_functions | jit_generation_time | jit_inlining_count | jit_inlining_time | jit_optimization_count | jit_optimization_tim
e | jit_emission_count | jit_emission_time
--------+------+----------+---------------------+----------------------------------------------------------+-------+-----------------+---------------+---------------+----------------+-----
-------------+-------+--------------------+--------------------+--------------------+--------------------+------------------+------+-----------------+------------------+-------------------
--+---------------------+----------------+-----------------+--------------------+--------------------+----------------+-------------------+---------------+----------------+----------------
----+---------------------+-------------+---------+-----------+---------------+---------------------+--------------------+-------------------+------------------------+---------------------
--+--------------------+-------------------
     10 |    5 | t        | 5833584272004145926 | select * from pg_settings  where name=$1 and setting =$2 |     0 |               0 |             0 |             0 |              0 |
           0 |     1 | 0.9313220000000001 | 0.9313220000000001 | 0.9313220000000001 | 0.9313220000000001 |                0 |    1 |               0 |                0 |
0 |                   0 |              0 |               0 |                  0 |                  0 |              0 |                 0 |             0 |              0 |
  0 |                   0 |           0 |       0 |         0 |             0 |                   0 |                  0 |                 0 |                      0 |
0 |                  0 |                 0
(1 row)

9.查看缓存的命中率
postgres=# SELECT query, calls, total_exec_time, rows, 100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
postgres-# FROM pg_stat_statements ORDER BY total_exec_time DESC;
                          query                           | calls |  total_exec_time   | rows | hit_percent
----------------------------------------------------------+-------+--------------------+------+-------------
 select * from pg_settings  where name=$1 and setting =$2 |     1 | 0.9313220000000001 |    1 |
 select * from pg_stat_statements                         |     1 |           0.184435 |    1 |
(2 rows)

10.清理过多的统计数据
pg_stat_statements_reset(userid Oid, dbid Oid, queryid bigint) returns void

重置ps_stat_statements表
select pg_stat_statements_reset();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值