文章目录
- 1、原题
- 1.1、英文原题
- 1.2、中文翻译
- 1.3、答案
- 2、题目解析
- 2.1、题干解析
- 2.2、选项解析
- 3、知识点
- 3.1、知识点1:mysqldumpslow - 总结缓慢的查询日志文件
- 4、实验
- 4.1、实验1
- 4.1.1、实验目的
- 4.1.2、实验前准备
- 4.1.3、实验步骤
- 4.1.4、实验结论
- 5、总结
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、选项解析
- 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、实验步骤
- 先查看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 |
- 为方便观察,先删除慢查询日志,再用flush logs生成新的慢查询日志:
$ rm /home/mysql/localhost-slow.log
mysql> FLUSH LOGS;
- 运行如下语句,因为有一个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 |
- 运行如下语句查看慢查询日志:
$ 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
-
跟之前的查询语句一对比,就知道N代表的是查询语句中的数字,而S代表的是查询语句中的字符串。
-
如果不希望将字符串替换为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、总结
- MySQL的慢查询日志可以通过mysqldumpslow来查看,使用mysqldumpslow+默认选项时,显示出来的日志会把SQL中的数值替换为N,字符串替换为s。
- 如果不希望将字符串替换为S,数字替换为N,只要在mysqldumpslow后面加上-a选项即可。