mysql中监视到慢查询语句即存入到表slow_log中_云数据库RDS MySQL版实例中实时查询慢日志slow_log的方法...

概述

本文主要介绍在使用云数据库RDS MySQL版实例时,实时查询慢日志slow_log的方法。

用户告知

本文仅阐述实时查询slow_log的方法,文中的操作示例未通过where语句进行条件过滤,因此属于全表查询。建议您在操作时,通过where语句增加条件过滤,避免慢查询结果太多导致查询时间长等情况。

云数据库RDS MySQL v5.5版实例不支持直接查询慢日志slow_log。您可以通过管理控制台查询慢日志,详情请参见查看慢日志明细中通过控制台查询慢日志的章节。

详细信息

云数据库RDS MySQL版实例的版本不同,对应的查询方式不同,详情如下。

RDS MySQL v5.6版本

实时查询慢日志slow_log的步骤如下:

登录您的MySQL实例。关于如何登录MySQL实例,请参见连接MySQL实例。

执行以下SQL语句,直接查询慢日志slow_log。

SELECT * FROM mysql.slow_log;

RDS MySQL v5.7版本和RDS MySQL v8.0版本

RDS MySQL v5.7版本和RDS MySQL v8.0版本中,慢日志slow_log表的sql_text列是blob类型。在查询时需要进行转换,操作方法有以下两种。

查询时通过CONVERT方法转换sql_text列的类型

查询慢日志slow_log时,通过CONVERT方法转换sql_text列为UTF-8字符集,操作步骤如下:

登录您的MySQL实例。关于如何登录MySQL实例,请参见连接MySQL实例。

执行以下SQL语句,查询慢日志slow_log。

SELECT start_time,

user_host,

query_time,

lock_time,

rows_sent,

rows_examined,

db,

CONVERT(sql_text USING utf8)

FROM mysql.slow_log;

通过中间表导入slow_log表的数据

创建一个UTF-8字符集的slow_log_tmp表,并设定sql_text列为varchar类型,导入slow_log表数据后进行查询。

说明:此方法等同于备份slow_log表,RDS不会自动清理新创建的slow_log_tmp表。因此,此方法会占用RDS实例的存储空间。

登录您的MySQL实例。关于如何登录MySQL实例,请参见连接MySQL实例。

执行以下SQL语句,在其他数据库下创建一个UTF-8字符集的slow_log_tmp表。创建该表时,设定sql_text列为varchar类型,其他列与slow_log表一致。

CREATE TABLE `test`.`slow_log_tmp` (

`start_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),

`user_host` mediumtext NOT NULL,

`query_time` time(6) NOT NULL,

`lock_time` time(6) NOT NULL,

`rows_sent` int(11) NOT NULL,

`rows_examined` int(11) NOT NULL,

`db` varchar(512) NOT NULL,

`last_insert_id` int(11) NOT NULL,

`insert_id` int(11) NOT NULL,

`server_id` int(10) unsigned NOT NULL,

`sql_text` varchar(2000) NOT NULL,

`thread_id` bigint(21) unsigned NOT NULL

) ENGINE=CSV DEFAULT CHARSET=utf8 COMMENT='Slow log tmp';

说明:本文在test数据库新建名为slow_log_tmp为例。您可以根据现场实际情况调整该表的名称和所在数据库。

执行以下SQL语句,将slow_log表的数据导入slow_log_tmp表。

INSERT INTO test.slow_log_tmp SELECT * FROM mysql.slow_log;

执行以下SQL语句,在新建的slow_log_tmp表查询慢日志slow_log。

SELECT * FROM test.slow_log_tmp;

适用于

云数据库RDS MySQL版

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值