慢查询日志 #
背景信息 #
慢查询日志功能,用于将执行耗时超过一定时间的 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 配置的是默认值,表示的意思是:
- 开启慢查询日志;
- 当 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`)
)