慢日志

本文介绍了MySQL慢查询日志的作用,如何开启慢查询,包括设置`log-slow-queries`日志路径和`long_query_time`参数,并提供了一个在不重启MySQL服务的情况下设置毫秒级别慢查询的方法。通过示例演示了如何测试SQL是否会被记录到慢查询日志中。

MYSQL慢查询配置

1. 慢查询有什么用?

它能记录下所有执行超过long_query_time时间的SQL语句, 帮你找到执行慢的SQL, 方便我们对这些SQL进行优化.

2. 如何开启慢查询?

首先我们先查看MYSQL服务器的慢查询状态是否开启.执行如下命令:

show variables like '%quer%';

我们可以看到当前log_slow_queries状态为OFF, 说明当前并没有开启慢查询.

开启慢查询非常简单, 操作如下:

直接去my.conf中查看。

my.conf中的配置(放在[mysqld]下的下方加入)

[mysqld]

log-slow-queries = /usr/local/mysql/var/slowquery.log
long_query_time = 1  #单位是秒
log-queries-not-using-indexes


log-slow-queries: 代表MYSQL慢查询的日志存储目录, 此目录文件一定要有写权限;

Windows下需要写绝对路径,如:log-slow-queries="C:/Program Files/MySQL/MySQL Server 5.5/log/mysql-slow.log"

long_query_time: 最长执行时间. (如图, MSYQL将记录下所有执行时间超过2条的SQL语句, 此处为测试时间, 时间不应太小最好在5-10秒之内, 当然可以根据自己的标准而定);

log-queries-not-using-indexes    :没有使用到索引的查询也将被记录在日志中

配置好以后重新启动一个MYSQL服务


使用sql语句来修改:不能按照my.conf中的项来修改的。修改通过"show VARIABLES like "%slow%" "
语句列出来的变量,运行如下sql:

set global log_slow_queries = ON;
set global slow_query_log = ON;
set global long_query_time=0.1; #设置大于0.1s的sql语句记录下来




慢查询日志文件的信息格式:

# Time: 130905 14:15:59         时间是2013年9月5日 14:15:59(前面部分容易看错哦,乍看以为是时间戳)
# User@Host: root[root] @  [183.239.28.174]  请求mysql服务器的客户端ip
# Query_time: 0.735883  Lock_time: 0.000078 Rows_sent: 262  Rows_examined: 262 这里表示执行用时多少秒,0.735883秒,1秒等于1000毫秒

SET timestamp=1378361759;  这目前我还不知道干嘛用的
show tables from `test_db`; 这个就是关键信息,指明了当时执行的是这条语句




设置毫秒级别与mysql版本的关系


很多网上资料显示,5.21之前的版本,在my.conf中的long_query_time最小只能设置为1(也就是最小1秒)。我自己歪打误撞,发现我通过其他方式可以实现。


"long_query_time = 0.1"这种方式我没试,因为数据库服务器在跑。需要重启。所以没试。我是通过全局变量设置实现慢日志查询记录的。

可以通过全局变量设置方式实现毫秒级别记录:

set global long_query_time = 0.01

我服务器上mysql版本为:5.1.60-log

我试过这种方式有效。

怎么测试自己的查询是否会被记录下来呢?
运行语句
select sleep(0.13);


我故意设置0.13秒延迟,然后这条语句按照预期(因为之前设置超过0.1秒)会被记录到日志文件中去。




<think>好的,用户想了解如何在达梦数据库中启用查询日志的配置方法。首先,我需要回忆一下达梦数据库的相关文档和之前学过的知识。记得达梦的慢日志功能需要修改参数,可能涉及到SP_SET_PARA_VALUE或者直接修改配置文件。 首先,用户的问题是关于启用查询日志,所以需要确认达梦数据库是否支持这个功能。根据引用[3]提到的内容,达梦确实有慢日志功能,并且需要配置参数。比如,SVR_LOG和SQL_TRACE_MASK这些参数可能相关。需要检查这些参数是否已经正确设置。 接下来,步骤应该包括几个部分:开启SQL日志、设置查询阈值、配置日志参数,然后重启实例或者刷新配置。可能需要使用系统过程SP_SET_PARA_VALUE来动态修改参数,或者直接修改dm.ini文件。需要注意的是,有些参数可能需要重启数据库才能生效,而有些可以动态调整。 然后,需要具体说明每个步骤的操作方法,例如设置SVR_LOG为1开启SQL日志,设置SQL_TRACE_MASK为全部记录,然后调整查询的时间阈值,比如SLOW_SQL_TIME为1000毫秒。这样,执行时间超过这个值的SQL会被记录到日志中。 还要考虑到日志文件的路径,引用[3]提到日志生成在/home/dmdba/dmdbms/log目录下,但实际路径可能因安装不同而变化,所以需要提醒用户根据实际情况查找。 另外,可能涉及到的其他参数如SVR_LOG_FILE_NUM控制日志文件数量,SVR_LOG_FILE_SIZE控制单个文件大小,这些也需要配置以避免日志文件过大。 最后,验证步骤也是必要的,比如执行一个长时间查询后检查日志文件,确认是否有记录。同时,需要告知用户如何查看日志路径,可以通过V$DM_INI视图查询参数的实际值。 需要确保回答的结构清晰,分步骤说明,并且引用相关的参考资料,比如引用[3]关于慢日志的配置路径。同时,注意使用中文,避免专业术语错误,保持语言自然易懂。可能还需要检查是否有遗漏的步骤或者参数,确保用户能够正确配置。</think>### 达梦数据库启用查询日志的配置方法 #### **1. 开启SQL日志功能** 查询日志依赖SQL日志功能,需先启用全局SQL日志记录: ```sql -- 开启SQL日志(动态参数,立即生效) SP_SET_PARA_VALUE(1, 'SVR_LOG', 1); -- 设置SQL跟踪类型(默认记录全部SQL) SP_SET_PARA_VALUE(1, 'SQL_TRACE_MASK', 'ALL'); ``` - `SVR_LOG=1`:启用SQL日志记录[^3] - `SQL_TRACE_MASK`:定义记录SQL类型(如SELECT/INSERT/UPDATE) --- #### **2. 配置查询阈值** 通过调整参数`SLOW_SQL_TIME`定义查询时间阈值(单位:毫秒): ```sql -- 设置执行超过1000ms的SQL为查询(默认3000ms) SP_SET_PARA_VALUE(1, 'SLOW_SQL_TIME', 1000); ``` - 该参数支持动态修改,无需重启数据库 --- #### **3. 配置日志存储参数** 通过以下参数控制日志文件管理: ```sql -- 设置单个日志文件大小(默认1024MB) SP_SET_PARA_VALUE(1, 'SVR_LOG_FILE_SIZE', 512); -- 设置保留的日志文件数量(默认50个) SP_SET_PARA_VALUE(1, 'SVR_LOG_FILE_NUM', 30); ``` --- #### **4. 验证配置结果** ```sql -- 查询当前参数配置 SELECT * FROM V$DM_INI WHERE PARA_NAME IN ('SVR_LOG','SLOW_SQL_TIME'); ``` 执行测试SQL后,查询日志默认生成路径为: `/home/dmdba/dmdbms/log/sqllog_实例名_日期.log` --- #### **5. 日志分析建议** - 通过`dmlog`工具或文本编辑器查看日志 - 日志包含SQL文本、执行时间、执行计划等关键信息[^1] ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值