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

HGDB如何查询慢SQL

瀚高PG实验室 2021-08-03
363

目录

环境

文档用途

详细信息

环境

系统平台: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,8desc

                      (左右滑动查看完整内容)

                      文章转载自瀚高PG实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论