MySQL 通用查询日志与慢查询日志

2023-11-15

MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。

1)通用查询日志:记录建立的客户端连接和执行的语句。
2)慢查询日志:记录所有执行时间超过long_query_time秒的所有查询或者不使用索引的查询

通用查询日志

show variables like '%version%';

上述命令,显示当前数据库中与版本号相关的东西。

show variables like '%general%';

可以查看,当前的通用日志查询是否开启,如果general_log的值为ON则为开启,为OFF则为关闭(默认情况下是关闭的)。

show variables like '%general%';

查看当前通用日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log)

show variables like '%log_output%';

如何开启MySQL通用查询日志,以及如何设置要输出的通用日志输出格式呢?

开启通用日志查询: set global general_log=on;
 
关闭通用日志查询: set global general_log=off;
 
设置通用日志输出为表方式: set global log_output='TABLE';
 
设置通用日志输出为文件方式: set global log_output='FILE';
 
设置通用日志输出为表和文件方式:set global log_output='FILE,TABLE';

(注意:上述命令只对当前生效,当MySQL重启失效,如果要永久生效,需要配置my.cnf)

慢查询日志

MySQL的慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中(日志可以写入文件或者数据库表,如果对性能要求高的话,建议写文件)。默认情况下,MySQL数据库是不开启慢查询日志的,long_query_time的默认值为10(即10秒,通常设置为1秒),即运行10秒以上的语句是慢查询语句。
一般来说,慢查询发生在大表(比如:一个表的数据量有几百万),且查询条件的字段没有建立索引,此时,要匹配查询条件的字段会进行全表扫描,耗时查过long_query_time,
则为慢查询语句。
问题:如何查看当前慢查询日志的开启情况?
在MySQL中输入命令:

show variables like '%quer%';

主要掌握以下的几个参数:
(1)slow_query_log 的值为ON为开启慢查询日志,OFF则为关闭慢查询日志。
(2)slow_query_log_file 的值是记录的慢查询日志到文件中(注意:默认名为主机名.log,慢查询日志是否写入指定文件中,需要指定慢查询的输出日志格式为文件,相关命令为:show variables like ‘%log_output%’;去查看输出的格式)。
(3)long_query_time 指定了慢查询的阈值,即如果执行语句的时间超过该阈值则为慢查询语句,默认值为10秒。
(4)log_queries_not_using_indexes 如果值设置为ON,则会记录所有没有利用索引的查询(注意:如果只是将log_queries_not_using_indexes设置为ON,而将slow_query_log设置为OFF,此时该设置也不会生效,即该设置生效的前提是slow_query_log的值设置为ON),一般在性能调优的时候会暂时开启。

设置 slow_query_log_file输出位置

set slow_query_log_file = '路径.log';

在MySQL中有一个变量专门记录当前慢查询语句的个数:

输入命令:show global status like ‘%slow%’;

这样Mysql的一些简单日志命令就学习结束了,缺乏机器练手的小伙伴可以去 cnaaa 看一看!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 通用查询日志与慢查询日志 的相关文章

  • MSSQL:如何使用代码编写存储过程创建脚本?

    我正在尝试使用一个数据库中存在但另一个数据库中不存在的 information schema routines 查询存储过程定义列表 SELECT t1 Routine Definition FROM server1 MyDatabase
  • 从 SQL Server 中的子查询值或其他聚合函数获取平均值

    我有 SQL 语句 SQL Server SELECT COUNT ActionName AS pageCount FROM tbl 22 Benchmark WHERE DATEPART dw CreationDate gt 1 AND
  • Oracle中如何选择前100行?

    我的要求是获取每个客户的最新订单 然后获取前100条记录 我编写了一个如下查询来获取每个客户的最新订单 内部查询工作正常 但我不知道如何根据结果获得前 100 名 SELECT FROM SELECT id client id ROW NU
  • 如何使用 Alter Table 在 Access 中创建小数字段?

    我想以编程方式在 MS Access 表中创建一个新列 我尝试过很多排列ALTER TABLE MyTable Add MyField DECIMAL 9 4 NULL 并得到 字段定义中的语法错误 我可以轻松创建一个数字字段Double类
  • TSQL:无法对 COUNT(*) 执行聚合函数 AVG 来查找一天中最繁忙的时间

    考虑一个保存日志数据的 SQL Server 表 重要的部分是 CREATE TABLE dbo CustomerLog ID int IDENTITY 1 1 NOT NULL CustID int NOT NULL VisitDate
  • 如何处理PDO异常[重复]

    这个问题在这里已经有答案了 我正在尝试与PDOphp 上的类 但我在找到处理错误的正确方法时遇到了一些麻烦 我编写了以下代码
  • 无法从 Web 主机本身以外的任何地方连接到任何 Web 主机的 MySQL 数据库

    我有 2 个不同的虚拟主机 pagodabox 000webhost 都是免费的 并且我已经设置了localhost与MySQL 我已经在他们三个上安装了 wordpress 它们在自己的域中工作得很好 即 什么时候localhostwor
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 如何在oracle中获取表作为输出参数

    我正在尝试将 Oracle 过程调用的 out 参数强制转换为对象 它不起作用 因为 据我了解 我需要定义一个映射 它告诉方法如何转换它 如果地图为空或未正确填充 则它默认为 STRUCT 类型的对象 在我的情况下这是错误的 我已经构建了一
  • SQL查询获取最后两条记录的DateDiff

    我有一个名为 Event 的表 其中 eventNum 作为主键 日期作为 SQL Server 2008 R2 中的 datetime2 7 我试图获取表中最后两行的日期并以分钟为单位获取差异 这就是我目前所拥有的 Select DATE
  • SQL Like 带有子查询

    我怎样才能做到这一点 SELECT FROM item WHERE item name LIKE SELECT equipment type FROM equipment type GROUP BY equipment type 内部子查询
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • 将我的 Laravel 连接到外部数据库

    如何将 Laravel 连接到外部数据库 示例 我的本地计算机上有一个 Laravel 它在 xampp 上运行 我希望它连接到云服务器数据库 打开 env文件并编辑它 只需设置正确的外部数据库凭据 DB CONNECTION mysql
  • 重用 PDO 语句 var 会使进程崩溃

    我重用一个变量来存储两个不同的 PDO mysql 语句 stmt dbh gt prepare SELECT stmt gt execute stmt dbh gt prepare UPDATE crash here Error in o
  • 尚未为此带有 SQL Server 的 DbContext .NET Core 配置数据库提供程序

    我一直用这个把头撞在墙上 并且一直在谷歌上搜索无济于事 我刚刚开始一个新的 ASP NET Core MVC 项目 我已将这两个包安装 更新为 2 2 0 Microsoft EntityFrameworkCore SqlServer Mi
  • Sql批量复制截断小数

    当我使用批量复制将十进制值从 C DataTable 插入 Sql Server 2005 时 值会被截断而不是四舍五入 DataTable 中的数据类型为 Decimal 数据库中的数据类型为Decimal 19 3 数据表中的值为 1
  • 如何将此本机 SQL 查询转换为 HQL

    所以我有这个很长的复杂的 Native SQLQuery string hql SELECT FROM SELECT a rownum r FROM select f2 filmid f2 realisateurid f2 titre f2
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row
  • 无法将句子插入数据库

    我有一些句子 我必须选择由 6 个以上单词组成的句子 然后它们将被插入到数据库中

随机推荐

  • 外卖项目 - Day01

    外卖 Day01 外卖项目介绍 开发环境搭建 后台登录功能开发 后台退出功能开发 1 项目介绍 在开发外卖这个项目之前 我们需要全方位的来介绍一下当前我们学习的这个项目 接下来 我们将从以下的五个方面 来介绍 外卖这个项目 1 1 项目介绍
  • linux ui 代码,Android自定义UI模板图文详解【附源代码】

    不知道大家在实际开发中有没有自定义过UI模板 今天花时间研究了一下Android中自定义UI模板 与大家分享一下 每个设计良好的App都是自定义标题栏 在自定义标题栏的过程中大部分人可能都是自定义一个标题的xml文件 然后在需要的地方直接通
  • c++ svd实例整理

    矩阵简单封装 下面两个是一样的 http download csdn net download o07sai 2206411 https github com jiaohaitao svd double数组 http download cs
  • Java引用传递问题

    if planSuccessServices contains value service put choose yes successServices add service if planFailServices contains va
  • 在Windows上实现link

    众所周知 在Linux上 link命令很好很强大 可以很方便的为我们创建链接 但是在Windows上却没有对应的功能 之多只能建一个快捷方式 但是远远达不到link的功能 如何才能使Windows上也具备类似Linux上link的功能呢 最
  • 【Spring Boot 源码学习】自动装配流程源码解析(上)

    Spring Boot 源码学习系列 自动装配流程源码解析 上 引言 往期内容 主要内容 1 自动配置开关 2 加载自动配置组件 3 自动配置组件去重 总结 引言 上篇博文 笔者带大家从整体上了解了AutoConfigurationImpo
  • el search模糊查询

    import json from elasticsearch import Elasticsearch es Elasticsearch 192 168 55 90 9200 source arr uri camera deviceId p
  • 如何用多种方式安装jupyter notebook

    目录 注意 安装python的方式 在官网下载python3 安装后需要确保安装Python成功 安装jupyter notebook的三种方式 1 使用终端安装jupyter notebook 2 使用Pycharm控制台安装jupyte
  • javafx+mysql实现学生信息管理系统(连接数据库实现增删改查功能)利用了SceneBuilder

    功能简单介绍 因为是重新学的 花了一天写出来的 界面比较简陋 暂时还没有完善 但是功能都可以正常实现 数据库建表 可以参考格式 可以根据需要对应修改tableview中的column 这个对表没有太多要求 可以自行修改 首先是登陆页面 账号
  • 如何用Python将普通视频变成动漫视频

    文章目录 容我废话一下 一 思路流程 二 图像转动漫 三 视频帧读取与视频帧写入 容我废话一下 最近几个月 毒教材被曝光引发争议 那些编写度教材的人着实可恶 咱程序员也没有手绘插画能力 但咱可以借助强大的深度学习模型将视频转动漫 所以今天的
  • CentOS入门

    1 CentOS 是RHEL的克隆版本 但其更新 如升级 漏洞修复等 要比RHEL慢一点 因其稳定 长期的升级支持 保守性以及大规模使用性能稳定等因素被企业普遍使用 RHEL发行方式有两种 一是发行二进制 二是发行源码 而CentOS就是将
  • Android Studio一课一得

    一 概述 Android Studio是由Google开发的官方集成开发环境 IDE 主要用于Android平台上应用程序 App 及游戏的开发 Android Studio提供了丰富的工具和功能 包括代码编辑器 可视化布局编辑器 调试器和
  • 无限重置IDEA试用期的小脚本

    1 Reset the trial period of IDEA vbs Set wsshell CreateObject WScript Shell Set filesys CreateObject Scripting FileSyste
  • 层次分析法小结

    层次分析法的步骤 建立层次结构模型 构造成对比较矩阵 层次单排序及其一次性检验 层次多排序及其一次性检验 1 建立层次结构模型 层次结构模型一般分为三个部分 目标层 也就是我们最终需要寻找出来的最佳结果 通常为一个 准测层 结果优劣的判断因
  • Spark读取外部数据的几种方式

    一 spark读取csv文件 四种方式 方式一 直接使用csv方法 val sales4 DataFrame spark read option header true option header false csv file D Soft
  • lu分解法解线性方程组 python_一篇文章入门大规模线性方程组求解

    前面介绍过主要的线性方程组求解库 参考附录 求解大规模线性方程组是仿真软件求解器的底层技术 求解器时间基本都消耗在方程组求解上 线性方程组的解法比较成熟 方法也有很多 而且不同的方法对应不同类型方程组 所以在方法选择上实际很讲究 商业软件通
  • linux内核的 等待队列 使用方法,wait_queue_head_t,进程休眠

    当你在用户空间需要读写一大片数据的时候 这个就用上了 以下来自 http www yuanma org data 2006 1207 article 1916 htm 假设我们在 kernel 里产生一个 buffer user 可以经由
  • Linux常用操作指令

    Linux操作系统 linux基础指令 命令 解释 命令 解释 ps ef aux 查看进程 history 查看历史命令 whatis 一句解释 2 把编号为2的历史命令再来一次 man 查看解释 uname hostnam clear
  • H2数据库使用

    H2最完整的资料下载地址 http download csdn net detail yixiaoping 5956595 H2数据库使用 H2数据库介绍 常用的开源数据库 H2 Derby HSQLDB MySQL PostgreSQL
  • MySQL 通用查询日志与慢查询日志

    MySQL中的日志包括 错误日志 二进制日志 通用查询日志 慢查询日志等等 这里主要介绍下比较常用的两个功能 通用查询日志和慢查询日志 1 通用查询日志 记录建立的客户端连接和执行的语句 2 慢查询日志 记录所有执行时间超过long que