Logo
慢查询日志

慢查询日志 #

背景信息 #

慢查询日志功能,用于将执行耗时超过一定时间的 SQL 语句进行记录,便于 DBA 和开发人员识别可能存在问题的 SQL 语句,是数据库和 SQL 管理的重要参考来源。

参数解释 #

  • slow_query_log:是否开启慢查询日志功能,默认值为 true。
  • long_query_time:慢查询时间阈值,执行耗时超过该阈值的 SQL 语句才会被记入慢查询日志中。该配置单位为毫秒(ms),默认值为 5000。

前提条件 #

慢查询日志功能基于 Agent 技术实现,仅适用于 ShardingSphere-Proxy 且启用 Agent 的场景。

配置示例 #

由于慢查询日志是基于 Agent 的功能,因此以下配置位于 agent.yaml 中:

plugins:
  logging:
    BaseLogging:
      props:
        # Whether to enable slow query log.
        slow-query-log: true
        # Long query threshold, in milliseconds.
        long-query-time: 5000
        # Whether to enable general query log.
        # general-query-log: false

其中,slow-query-log 和 long-query-time 配置的是默认值,表示的意思是:

  1. 开启慢查询日志;
  2. 当 SQL 执行耗时超过 5000 毫秒时,记录慢查询日志。

慢查询日志格式 #

慢查询日志格式如下:

timestamp: {time} db: {db database user: {user} host: {host} query_time: {query time}
{sql}
  • timestamp:日志记录产生的时间;
  • db:数据库名称;
  • user:当前连接中使用的用户名称;
  • host:客户端访问地址;
  • query_time:SQL 执行耗时,单位为 ms;
  • sql:出现慢查询时,客户端发送的 SQL 语句。

例如:

timestamp: 2022-07-01 00:00:00.000 db: sharding_db user: root host: 127.0.0.1 query_time: 159
CREATE TABLE `t_order` (
  `order_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `status` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL,
  PRIMARY KEY (`order_id`)
)

相关参考 #

可观察性