当前位置: 首页 > news >正文

【体系结构】MySQL 日志文件--慢查询日志

   顾名思义,慢查询日志中记录的是执行时间较长的 query
   可以设一个阀值、将运行时间超过该值的所有SQL语句都记录到慢查询日志文件中
   该阀值可以通过参数long_query_time来设置、默认是10秒
   这里需要一点、对于运行时间正好等于long_query_time的情况、并不会被记录

   因为、在源代码里是判断大于long_query_time、而非大于等于

 

 

mysql> show variables like 'log_slow_queries';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| log_slow_queries | ON    |
+------------------+-------+
1 row in set (0.00 sec)

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)

 

 


   另一个和慢查询日志相关的参数是log_queries_not_using_indexes
   如果运行的SQL没有使用索引、则MySQL同样会将这条语句记录到慢查询日志文件

 

 

mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)


 

   在这里、我没有开启、但有点需要提醒、如果在线修改该参数、虽然没有报错、但是不会生效
   
   
   MySQL 还提供了专门用来分析满查询日志的工具程序 mysqldumpslow、用来帮助MySQL DBA解决可能存在的性能问题
   例子、获得 TOP-5 SQL语句:

 

 

[mysql@localhost bin]$ ./mysqldumpslow -s al -n 5 /home/mysql/mysql/log/slow.log

Reading mysql slow query log from /home/mysql/mysql/log/slow.log
Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=0.0 (0), 0users@0hosts


 

   更多用法、请咨询 ./mysqldumpslow --help
   
   从5.1.6版本开始,慢查询日志即可以是个文件,也可以保存在数据库中的指定表
   参数log_output指定了慢查询输出的格式、默认为file、你也可以将它设为table
   参数log_output是动态的、并且是全局的、我们能够在线进行变更

 

 

mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | FILE  |
+---------------+-------+
1 row in set (0.00 sec)

mysql> set global log_output='TABLE';
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'log_output';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| log_output    | TABLE |
+---------------+-------+
1 row in set (0.00 sec)

mysql> select sleep(15);
+-----------+
| sleep(15) |
+-----------+
|         0 |
+-----------+
1 row in set (15.02 sec)

mysql> select * from mysql.slow_log\G;
*************************** 1. row ***************************
    start_time: 2013-04-14 01:22:29
     user_host: root[root] @ localhost []
    query_time: 00:00:15
     lock_time: 00:00:00
     rows_sent: 1
 rows_examined: 0
            db: test
last_insert_id: 0
     insert_id: 0
     server_id: 1
      sql_text: select sleep(15)
1 row in set (0.00 sec)


 

 

   在这个例子里、我设置了睡眠15秒、那么这句SQL就会被记录到slow_log表
   
   
   需要注意的是,慢查询日志中有可能记录到与用户权限或密码相关的语句,因此慢查询日志文件的保存也要注意安全

 

相关文章:

  • java注解[转]
  • Notepad++使用技法
  • 12月21日 特殊权限与软、硬链接文件
  • jquery.pagination.js分页插件的运用
  • 宋体、变量-Oracle存储过程基本语法-by小雨
  • Allot流量控制系统软件升级过程
  • FTP服务器配置与管理(2) 创建FTP站点
  • 局域网介质访问控制方法
  • javascript中toString跟toLocaleString的区别
  • 【转载】细聊分布式ID生成方法
  • IOS 关键字解读
  • 分布式mongodb搭建-主从搭建
  • PHPExcel 导出 excel
  • 重读杠杆阅读术
  • java 数字枚举
  • 【前端学习】-粗谈选择器
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • chrome扩展demo1-小时钟
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • docker-consul
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Swift 中的尾递归和蹦床
  • Tornado学习笔记(1)
  • 开发基于以太坊智能合约的DApp
  • 嵌入式文件系统
  • 整理一些计算机基础知识!
  • ​flutter 代码混淆
  • #、%和$符号在OGNL表达式中经常出现
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • $refs 、$nextTic、动态组件、name的使用
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (MATLAB)第五章-矩阵运算
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (七)理解angular中的module和injector,即依赖注入
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 按比例显示图片的缩略图
  • .net对接阿里云CSB服务
  • .NET连接MongoDB数据库实例教程
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .Net中间语言BeforeFieldInit
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现
  • [Angular] 笔记 21:@ViewChild
  • [Angularjs]ng-select和ng-options
  • [Assignment] C++1
  • [BUG]vscode插件live server无法自动打开浏览器
  • [C#] 基于 yield 语句的迭代器逻辑懒执行
  • [C#]使用PaddleInference图片旋转四种角度检测
  • [CSS]盒子模型