首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL高级--性能优化之慢日志查询

MySQL高级--性能优化之慢日志查询

原创
作者头像
Java学术趴
发布于 2022-11-16 05:52:31
发布于 2022-11-16 05:52:31
57400
代码可运行
举报
文章被收录于专栏:Java全栈·Java全栈·
运行总次数:0
代码可运行

👨‍🎓作者:Java学术趴 🏦仓库:GithubGitee ✏️博客:CSDN掘金InfoQ云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。

☠️每日毒鸡汤:一件事你犹豫去不去做,那就是该立即动身做的。

1 慢查询日志

1.1 慢查询日志定义
  • MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中。
  • 具体指运行时间超过 long_query_time值的SQL,则会记录到慢查询日志中。 long_query_time的默认值为10,意思是运行10秒以上的语句。
  • 由他来查看哪些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒,我们就算慢SQL,希望能收集超过5秒的SQL,集合之前explain进行全面分析。
1.2 慢查询
  • 默认情况下,MySQL数据库是没有开启慢查询日志, 需要我们手动来设置这个参数。
  • 如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。

查看慢查询的状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like '%slow_query_log%';
复制代码

默认情况下 slow_query_name = OFF,表示慢查询日志是禁用的。

默认情况下会给一个缺省的文件host_name-slow.log,当我们指定路径之后就会覆盖这个默认的缺省文件路径

开启/关闭慢查询日志

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 开启
set global slow_query_log = 1;
// 关闭
set global slow_query_log = 0;
复制代码

slow_query_log = NO,此时代表慢查询日志开启。

以上这种配置方式只是临时生效,如果想要永久生效,就必须修改配置文件 my.cnf(其他系统变量也是如此)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
修改my.cnf文件,在[mysqld]下增加或修改参数
slow_query_log = 1
slow_query_log_file = 慢查询日志文件存储地址
复制代码

查看等待时间阈值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like '%long_query_time%'l
复制代码

这个是由参数long_query_time控制的,默认情况下long_query_time的值为10秒。

假设运行时间正好等于 long_query_time 的情况,并不会被记录下来。也就是说:在MySQL源码里是 判断大于 long_query_time,而非大于等于。

设置等待时间阈值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set global long_query_time = 3;
复制代码
  • 即使我们修改了阈值之后,再次查询发现阈值没有发生变化,其实已经变化了并且已经生效了,此时需要重启MySQL服务。
  • 修改完等待阈值,如果不想重启服务器查询等待阈值,可以使用全局命令查看。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show global variables like '%long_query_time%';
复制代码

4.6 Show Profile

4.6.1 show profile定义
  • show profile提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于SQL的调优测量。
  • 默认情况下,参数处于关闭状态,并保存最近15次的运行结果。
4.6.2 show profile 分析步骤
  1. 是否支持,查看当前版本的MySQL是否支持show profile 功能。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show variables like 'profiling';
复制代码

当前版本的MySQL支持show profile 功能并且是关闭状态。

  1. 开启功能,默认是关闭,使用前需要开启。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 开启
set profiling = ON;
// 关闭
set profiling = OFF;
复制代码
  1. 运行SQL。

以下运行的SQL都会在show profile 中进行记录。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 第一个SQL
select * from whale_fall;
// 第二个SQL
select * from whale_fall;
// 第三个SQL
select sleep(4);
复制代码
  1. 查看结果。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show profiles;
复制代码
  1. 诊断SQL。

查询不同的性能参数

  • ALL :显示所有的开销信息。
  • BLOCK IO : 显示块IO相关开销。
  • CONTEXT SWITCHES : 上下文切换相关开销。
  • CPU : 显示CPU相关开销信息。
  • IPC : 显示发送和接收相关开销信息。
  • MEMORY : 显示内存相关开销信息。
  • PAGE FAULTS : 显示页面错误相关开销信息。
  • SOURCE:显示和Source_function,Source_file,Souce_line相关的开销信息。
  • SWAPS:显示交换次数相关开销信息。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show profile cpu,block io for query 3;
复制代码
  1. 日常开发需要注意的结论。

我们可以通过上述查询出来的状态分析此时SQL出现异常的原因

  • converting HEAP to MyISAM : 查询结果太大,内存都不够用了往磁盘上搬。
  • Creating tmp table : 创建临时表。
  • Copying to tmp table on disk : 把内存中临时表复制到磁盘,危险!!!
  • locked : 锁。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
原 荐 Spark框架核心概念
Spark框架核心概念     首先介绍Spark中的核心名词概念,然后再逐一详细说明。 RDD:弹性分布式数据集,是Spark最核心的数据结构。有分区机制,所以可以分布式进行处理。有容错机制,通过RDD之间的依赖关系来恢复数据。 依赖关系:RDD的依赖关系是通过各种Transformation(变换)来得到的。父RDD和子RDD之间的依赖关系分两种:①窄依赖②宽依赖。     ①窄依赖:父RDD的分区和子RDD的分区关系是:一对一。     窄依赖不会发生Shuffle,执行效率高,spark框架底层
云飞扬
2018/05/17
1.5K0
Spark RDD 操作详解——Transformations
Spark RDD 支持2种类型的操作: transformations 和 actions。transformations: 从已经存在的数据集中创建一个新的数据集,如 map。actions: 数据集上进行计算之后返回一个值,如 reduce。
李振
2021/11/26
8490
Spark核心RDD、什么是RDD、RDD的属性、创建RDD、RDD的依赖以及缓存、
1:什么是Spark的RDD??? RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。 2:RDD的属性: a、一组分片(Partition),即数据集的基本组成单位。对于RDD来说,每个分片都会被一个计算任务处理,
别先生
2018/04/02
1.3K0
Spark核心RDD、什么是RDD、RDD的属性、创建RDD、RDD的依赖以及缓存、
上万字详解Spark Core(好文建议收藏)
Spark 产生之前,已经有MapReduce这类非常成熟的计算系统存在了,并提供了高层次的API(map/reduce),把计算运行在集群中并提供容错能力,从而实现分布式计算。
五分钟学大数据
2021/04/02
8090
SparkCore快速入门系列(5)
铁铁们,博主前段时间在做一些项目加上找工作所以到现在才更新,(__) 嘻嘻…… 博主现在已经工作啦,后期会给你们更新一些关于数据库以及报表开发的文章哦! 接下来言归正传!!!!!!
刘浩的BigDataPath
2021/04/13
4360
SparkCore快速入门系列(5)
[大数据之Spark]——Transformations转换入门经典实例
Spark相比于Mapreduce的一大优势就是提供了很多的方法,可以直接使用;另一个优势就是执行速度快,这要得益于DAG的调度,想要理解这个调度规则,还要理解函数之间的依赖关系。 本篇就着重描述
用户1154259
2018/01/17
1.3K0
[大数据之Spark]——Transformations转换入门经典实例
大数据技术之_19_Spark学习_02_Spark Core 应用解析+ RDD 概念 + RDD 编程 + 键值对 RDD + 数据读取与保存主要方式 + RDD 编程进阶 + Spark Cor
  我们需要一个效率非常快,且能够支持迭代计算和有效数据共享的模型,Spark 应运而生。RDD 是基于工作集的工作模式,更多的是面向工作流。   但是无论是 MR 还是 RDD 都应该具有类似位置感知、容错和负载均衡等特性。
黑泽君
2019/05/10
2.7K0
大数据技术之_19_Spark学习_02_Spark Core 应用解析+ RDD 概念 + RDD 编程 + 键值对 RDD + 数据读取与保存主要方式 + RDD 编程进阶 + Spark Cor
惊了!10万字的Spark全文!
Hello,大家好,这里是857技术社区,我是社区创始人之一,以后会持续给大家更新大数据各组件的合集内容,路过给个关注吧!!!
刘浩的BigDataPath
2022/11/30
1.6K0
Spark之【RDD编程】详细讲解(No3)——《Action行动算子》
本篇博客是Spark之【RDD编程】系列第三篇,为大家带来的是Action的内容。
大数据梦想家
2021/01/27
3870
Spark之【RDD编程】详细讲解(No3)——《Action行动算子》
Spark常用Actions算子
介绍以下Actions算子: foreach foreachPatition reduce collect count first take takeSample top takeOrdered saveAsTextFile saveAsSequenceFile saveAsObjectFile countByKey countByValue aggregate
CoderJed
2018/09/13
5360
Spark Core快速入门系列(4) | <Action> 行动算子转换算子
  返回一个由RDD的前n个元素组成的数组   take 的数据也会拉到 driver 端, 应该只对小数据集使用
不温卜火
2020/10/28
5700
Spark开发指南
总的来说,每一个Spark的应用,都是由一个驱动程序(driver program)构成,它运行用户的main函数,在一个集群上执行各种各样的并行操作。Spark提出的最主要抽象概念是弹性分布式数据集 (resilient distributed dataset,RDD),它是元素的集合,划分到集群的各个节点上,可以被并行操作。RDDs的创建可以从HDFS(或者任意其他支持Hadoop文件系统) 上的一个文件开始,或者通过转换驱动程序(driver program)中已存在的Scala集合而来。用户也可以让Spark保留一个RDD在内存中,使其能在并行操作中被有效的重复使用。最后,RDD能自动从节点故障中恢复。
幽鸿
2020/04/02
2.1K0
Spark常用的算子以及Scala函数总结
上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习 快速带你晋级 阅读全文 > 正文共11264个字,7张图,预计阅读时间28分钟。 Spark与Scala 首先,介绍一
用户1332428
2018/04/17
2K0
Spark常用的算子以及Scala函数总结
Spark Core快速入门系列(3) | <Transformation>转换算子
  从一个已知的 RDD 中创建出来一个新的 RDD 例如: map就是一个transformation.
不温卜火
2020/10/28
2K0
Spark Core快速入门系列(3) | <Transformation>转换算子
Spark Core快速入门系列(2) | Spark Core中编程模型的理解与RDD的创建
  在 Spark 中,RDD 被表示为对象,通过对象上的方法调用来对 RDD 进行转换。   经过一系列的transformations定义 RDD 之后,就可以调用 actions 触发 RDD 的计算   action可以是向应用程序返回结果(count, collect等),或者是向存储系统保存数据(saveAsTextFile等)。   在Spark中,只有遇到action,才会执行 RDD 的计算(即延迟计算),这样在运行时可以通过管道的方式传输多个转换。   要使用 Spark,开发者需要编写一个 Driver 程序,它被提交到集群以调度运行 Worker   Driver 中定义了一个或多个 RDD,并调用 RDD 上的 action,Worker 则执行 RDD 分区计算任务。
不温卜火
2020/10/28
7310
Spark Core快速入门系列(2) | Spark Core中编程模型的理解与RDD的创建
Spark之【RDD编程】详细讲解(No2)——《Transformation转换算子》
本篇博客是Spark之【RDD编程】系列第二篇,为大家带来的是RDD的转换的内容。
大数据梦想家
2021/01/27
2.1K0
Spark之【RDD编程】详细讲解(No2)——《Transformation转换算子》
Spark——RDD
全称为Resilient Distributed Datasets,弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可并行计算的集合。RDD在逻辑上是一个数据集,在物理上则可以分块分布在不同的机器上并发运行。RDD允许用户在执行多个查询时显示的将工作缓存在内存中,后续的查询能够重用工作集,这极大的提升了查询速度。 在Spark 中,对数据的所有操作不外乎创建RDD,转换已有RDD以及调用RDD操作进行求值,每个RDD都被分为多个分区,这些分区运行在集群的不同节点上,RDD可以包含Python,Java,Scala中任意类型的对象,甚至可以是用户自定义对象。 RDD是Spark的核心,也是整个Spark的架构基础。它的特性可以总结如下:
羊羽shine
2019/08/08
7640
Spark的常用算子大总结
作用:返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成 2. 需求:创建一个1-10数组的RDD,将所有元素2形成新的RDD (1)创建 scala> var source = sc.parallelize(1 to 10) source: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[8] at parallelize at :24 (2)打印 scala> source.collect() res7: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) (3)将所有元素2 scala> val mapadd = source.map(_ * 2) mapadd: org.apache.spark.rdd.RDD[Int] = MapPartitionsRDD[9] at map at :26 (4)打印最终结果 scala> mapadd.collect() res8: Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
Maynor
2021/12/07
5460
BigData--大数据分析引擎Spark
(1)zeroValue:给每一个分区中的每一个key一个初始值; (2)seqOp:函数用于在每一个分区中用初始值逐步迭代value; (3)combOp:函数用于合并每个分区中的结果。
MiChong
2020/09/24
1.1K0
BigData--大数据分析引擎Spark
Spark Core 学习笔记
1:Spark Core:内核,也是Spark中最重要的部分,相当于Mapreduce                 SparkCore 和 Mapreduce都是进行离线数据分析                 SparkCore的核心:RDD(弹性分布式数据集),由分区组成 2:Spark Sql:相当于Hive                 支持Sql和DSL语句 -》Spark任务(RDD)-》运行
曼路
2018/10/18
2.2K0
推荐阅读
相关推荐
原 荐 Spark框架核心概念
更多 >
LV.1
这个人很懒,什么都没有留下~
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档