HGDB如何查询慢SQL

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HGDB如何查询慢SQL相关的知识,希望对你有一定的参考价值。

目录
环境
文档用途
详细信息

环境
系统平台:N/A
版本:5.6.5,5.6.4,5.6.3,5.6.1,4.3.4.8,4.3.4.7,4.3.4.6,4.3.4.5,4.3.4.4,4.3.4.3,4.3.4.2,4.3.4,4.7.8,4.7.7,4.7.6,4.7.5,4.3.2,4.1.1
文档用途
本文档用于适用于仅通过数据库日志获取慢SQL的情况。

详细信息
1、设置数据库获取所有的SQL语句

修改配置文件postgresql.conf,设置以下参数

#开启日志记录

logging_collector = on

#设置日志输出格式,格式有stderr(默认), csvlog , syslog

log_destination = 'csvlog’

#设置日志存放位置,下面设置表示日志存放在$PGDATA下hgdb_log日志中

log_directory = 'hgdb_log’

#设置日志截断

log_truncate_on_rotation = on

#设置日志的名称

log_filename = 'highgodb_%d.log’

#设置跟踪的SQL语句级别,级别包含none(默认,只记录出错信息), ddl, mod, all

log_statement = all

#记录执行超过以下时间的SQL语句,单位毫秒

log_min_duration_statement = 5000

2、创建存储日志的表

使用psql或其他数据库客户端连接到瀚高数据库,执行以下建表语句。

CREATE TABLE hgdb_log

( log_timetimestamp(3) with time zone,

user_nametext,

database_nametext,

process_idinteger,

connection_fromtext,

session_idtext,

session_line_num bigint,

command_tagtext,

session_start_timetimestamp with time zone,

virtual_transaction_idtext,

transaction_id bigint,

error_severitytext,

sql_state_codetext,

message text,

detail text,

hint text,

internal_querytext,

internal_query_posinteger,

context text,

query text,

query_posinteger,

location text,

application_nametext,

PRIMARY KEY (session_id, session_line_num)

);
3、将日志导入到表中

使用psql或其他数据库客户端连接到瀚高数据库,执行以下语句导入日志到表中。

–黑色字体部分修改为日志文件的绝对路径

COPY hgdb_log FROM ‘/opt/HighGo4.3.4.7-see/data/hgdb_log/highgodb_20.csv’ WITH csv;

4、查询慢SQL

导入表中后,由于SQL语句的执行时间、SQL语句等信息均存放在message列中,在编写分析SQL时,需要使用字符处理函数分离相关信息,以下示例为按SQL执行时间由长到短进行排列。

–按执行时间由长到短排序
select log_time,database_name,user_name,application_name,substr(message, 7,8),message from hgdblog where message like ‘%执行时间%’ order by substr(message, 7,8) desc

更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContent/708c057302aabf89

以上是关于HGDB如何查询慢SQL的主要内容,如果未能解决你的问题,请参考以下文章

如何查找MySQL中查询慢的SQL语句

mysql如何找出慢sql

MySQL如何定位并优化慢查询sql

如何开启MySQL慢查询日志

mysql慢查询

MySQL优化--02----慢SQL定位慢查询日志