postgresql数据库分析工具介绍

pg_stat_statements 与 log

对于做 odoo 开发或是使用 postgresql 数据库的朋友们来说,pg_stat_statements 与 log 可算是两个必备的数据分析工具了;前者用于 sql 性能分析,后者用于全局 sql 审计,我们接下来逐个介绍。

sql性能分析:pg_stat_statements

#1.编辑 postgresql.conf 文件,添加或修改以下参数:
# show config_file 查看postgresql.conf文件所在位置
shared_preload_libraries = 'pg_stat_statements'  #2.重启 postgresql 数据库:

#3.连接到目标数据库并执行:
​CREATE EXTENSION pg_stat_statements;

#4.查询统计:
​SELECT * FROM pg_stat_statements;

#5.基本操作:
CREATE EXTENSION pg_stat_statements;
SELECT * FROM pg_stat_statements;
SELECT pg_stat_statements_reset();
​DROP EXTENSION pg_stat_statements;

接下来对 pg_stat_statements 的主要字段做简要介绍:

  1. userid:执行该查询的用户的OID(可关联 pg_user.usesysid 查看用户名)
  2. dbid:查询所在数据库的OID(可关联 pg_database.oid 查看数据库名)
  3. queryid:查询的哈希值,用于唯一标识一个标准化后的 SQL 查询
  4. query:标准化后的查询文本(字面值被替换为占位符)
  5. calls:执行该查询的总次数
  6. total_time:该查询总共消耗的时间(毫秒)
  7. min_time:单次查询最短耗时(毫秒)
  8. max_time:单次查询最长耗时(毫秒)
  9. mean_time:平均每次查询耗时(毫秒)
  10. stddev_time:查询耗时的标准差(衡量耗时的波动性)
  11. rows:所有执行中返回的总行数。

从以上字段介绍不难看出,pg_stat_statements 就是用来分析 sql 性能的。

sql审计:log

#1.编辑 postgresql.conf 文件,添加或修改以下参数:
logging_collector = on
log_directory = 'log'                    # 日志存放目录
log_filename = 'postgresql-%Y-%m-%d.log' # 日志文件名格式
log_statement = 'all'                    # 记录所有语句(可改为 mod、ddl)
log_line_prefix = '%m [%p] %u@%d '       # 显示时间、用户等信息
#2.重启 postgresql 数据库:

#3.也可以通过sql语句来查看或修改以上配置:
SHOW log_statement;#查看
ALTER SYSTEM SET log_statement = 'value';#将 value 替换为 none、ddl、mod 或 all
SELECT pg_reload_conf();#重新加载配置使更改生效

视频讲解


开发
标签
存档
owl 开发工具简介
owl-devtools 与 owl-vision 你知道吗?