PG数据库日志分析

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

PG数据库日志分析

一 日志文件目录

/cosmic/postgres/pg_data/log



二 CSV日志文件内容




如上是日志文件postgresql-20.csv的部分内容。日志文件的可读性较差,可以通过下面方法将CSV日志导入到数据库的表里。

三 将CSV日志导入数据库表里

postgresql.conf参数文件里检查参数

log_destination = 'csvlog'

logging_collector = on

创建日志记录表

CREATE TABLE postgres_log

(

log_time timestamp(3) with time zone,

user_name text,

database_name text,

process_id integer,

connection_from text,

session_id text,

session_line_num bigint,

command_tag text,

session_start_time timestamp with time zone,

virtual_transaction_id text,

transaction_id bigint,

error_severity text,

sql_state_code text,

message text,

detail text,

hint text,

internal_query text,

internal_query_pos integer,

context text,

query text,

query_pos integer,

location text,

application_name text,

PRIMARY KEY (session_id, session_line_num)

);

备注:创建日志表 postgres_log用来保存 CSV日志数据。

导入日志信息

COPY postgres_log FROM '/cosmic/postgres/pg_data/log/postgresql-20.csv' WITH csv;

四 sql语句分析

运行时间最长的sql

select cast(split_part(split_part(message, ':',2),'ms',1) as numeric) as duration,session_start_time,message,detail,query, * 

from postgres_log

where message ~'duration'

and session_start_time>''

order by 1  desc

同类型运行高频的慢sql

select cast(split_part(split_part(message, ':',2),'ms',1) as numeric) as duration,split_part(message, '*/',2),session_start_time,message,detail,query, *

from postgres_log

where message ~'duration'

and session_start_time>''

order by 2  desc

非sql语句操作日志

select * from postgres_log where command_tag not in ('SELECT','UPDATE','DELETE','INSERT')

五 总结

当数据库出现异常需要详细分析日志文件时,上面的方法提供了一个非常有效的方式。将数据库日志导入到表里,能够更准确方便地分析数据库的日志。





PG数据库日志分析

一 日志文件目录/cosmic/postgres/pg_data/log二 CSV日志文件内容如上是日志文件postgresql-20.csv的部分内容。日志文件的可读性较差,可...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息