MySQL OCP888题解048-letter N in slow query log(慢查询日志里的字母N)

文章介绍了mysqldumpslow工具在分析MySQL慢查询日志时,如何将SQL中的数值用N表示,字符串用s表示。N代表执行次数,s代表字符串内容。通过实验验证了这一行为,并提到了使用-a选项可以保持原始数值和字符串不变。
摘要由CSDN通过智能技术生成

1、原题

1.1、英文原题

You are using the mysqldumpslow utility to view the contents of the slow query log.
You notice the letter N and the character string ‘s’ in a number of locations in the output. What does the N indicate?
A、An abstracted substitution for numbers included in WHERE clauses
B、The name of the user issuing the statement
C、An abbreviation for NULL in a statement
D、The number of times the statement was executed

1.2、中文翻译

您正在使用mysqldumpslow实用程序查看慢速查询日志的内容。您注意到输出中的许多位置都有字母N和字符串“s”。N表示什么?
A、 WHERE子句中包含的数字的抽象替换
B、 发出声明的用户的名称
C、 语句中NULL的缩写
D、 语句的执行次数

1.3、答案

A

2、题目解析

2.1、题干解析

本题考察慢查询日志的格式。

2.2、选项解析

  1. MySQL的慢查询日志可以通过mysqldumpslow来查看,使用mysqldumpslow+默认选项时,显示出来的日志会把SQL中的数值替换为N,字符串替换为s。所以选项A正确,其他选项错误。

3、知识点

3.1、知识点1:mysqldumpslow - 总结缓慢的查询日志文件

通常mysqldumpslow将数字和字符串 "抽象 "为N和’S’。要修改数值抽象的行为,请使用-a和-n选项。
调用mysqldumpslow的语法:mysqldumpslow [options] [log_file …]
mysqldumpslow支持如下选项:

官方参考文档

4、实验

4.1、实验1

4.1.1、实验目的

确认慢查询日志中的N和S的含义。

4.1.2、实验前准备

已安装并运行的MySQL5.7

4.1.3、实验步骤

  1. 先查看MySQL是否打开了慢查询日志,慢查询的阈值是多少,日志位置在哪:可以看到慢查询日志已打开,阈值为0.5秒,位置在/home/mysql/localhost-slow.log
mysql> SHOW VARIABLES LIKE 'slow_query_log%';
+---------------------+--------------------------------+
| Variable_name       | Value                          |
+---------------------+--------------------------------+
| slow_query_log      | ON                             |
| slow_query_log_file | /home/mysql/localhost-slow.log |
mysql> SHOW VARIABLES LIKE 'long_query_time';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 0.500000 |
  1. 为方便观察,先删除慢查询日志,再用flush logs生成新的慢查询日志:
$ rm  /home/mysql/localhost-slow.log
mysql> FLUSH LOGS; 
  1. 运行如下语句,因为有一个sleep(1),所以运行一定超过1秒,会被记录慢查询日志:
mysql> SELECT sleep(1),a.* FROM employees.titles a WHERE a.title like '%Engineer%' AND a.emp_no>499998 ;
+----------+--------+----------+------------+------------+
| sleep(1) | emp_no | title    | from_date  | to_date    |
+----------+--------+----------+------------+------------+
|        0 | 499999 | Engineer | 1997-11-30 | 9999-01-01 |
  1. 运行如下语句查看慢查询日志:
$ mysqldumpslow /home/mysql/localhost-slow.log 
Reading mysql slow query log from /home/mysql/localhost-slow.log
Count: 1  Time=1.00s (1s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
  SELECT sleep(N),a.* FROM employees.titles a WHERE a.title like 'S' AND a.emp_no>N
  1. 跟之前的查询语句一对比,就知道N代表的是查询语句中的数字,而S代表的是查询语句中的字符串。

  2. 如果不希望将字符串替换为S,数字替换为N,只要在mysqldumpslow后面加上-a选项即可,如下所示:

$ mysqldumpslow -a  /home/mysql/localhost-slow.log 
Reading mysql slow query log from /home/mysql/localhost-slow.log
Count: 1  Time=1.00s (1s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
  SELECT sleep(1),a.* FROM employees.titles a WHERE a.title like '%Engineer%' AND a.emp_no>499998

4.1.4、实验结论

慢查询日志中的N是替换慢SQL中的数值,s是替换慢SQL中的字符串。

5、总结

  1. MySQL的慢查询日志可以通过mysqldumpslow来查看,使用mysqldumpslow+默认选项时,显示出来的日志会把SQL中的数值替换为N,字符串替换为s。
  2. 如果不希望将字符串替换为S,数字替换为N,只要在mysqldumpslow后面加上-a选项即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值