- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章详细聊聊MySQL中慢SQL优化的方向由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
影响一个系统的运行速度的原因有很多,是多方面的,甚至可能是偶然性的,或前端,或后端,或数据库,或中间件,或服务器,或网络等等等等,真正的去定位一个问题需要对系统有一定的认知,可以根据自身的判断去缩小问题范围.
今天不说其他的优化,单独把数据库的优化拿出来说几个优化方向.
跟系统的优化方向一样,数据库的优化,同样也是多方面的,其中涵盖着SQL语句的执行情况,数据库自身的情况等等,下面我们就来说一下MySQL数据库中的慢SQL语句优化方向,希望也能给到大家一些优化思路.
SQL语句的优化,有很多文章说起,也有很多在SQL编写上的指导;但是那种只能支持基本开发,如果要排查问题,那就不能单单的只是停留在SQL编写上了,而是有一个整体的发现问题的流程.
本次优化方向,大概分为发现慢查询SQL,查看并解析SQL执行计划,SQL编写上的优化,索引优化等几个方面.
MySQL中记录慢查询SQL是可以利用MySQL内部配置来实现的,这个配置就是slow_query_log配置.
可利用show variables like '%query%';查询出以下三个相关结果.
1
2
3
|
long_query_time | 1.00000
slow_query_log |
off
slow_query_log_file | /data/mysql/mysql_slow.log
|
解释一下这三个参数, 。
有两个方法.
其一:修改my.ini或者是my.cnf文件,将此三项配置进行一个配置.
其二:直接在sqlplus中,使用set语法来修改参数,但是重启mysql数据库后就会失效,sql如下:
1
2
3
4
5
|
set
global
long_query_time = 10;
set
global
slow_query_log =
on
;
set
global
slow_query_log_file = /data/mysql/mysql_slow.log;
|
因为这个方法会重启失效,所以还是建议使用第一种方式.
如何查询慢查询日志呢,如果量很小的情况下,其实是不需要使用工具的,完全可以直接打开即可.
如果量比较大,就需要mysqldumpslow工具查询会更方便.
mysqldumpslow是和mysqld相同类型的执行脚本,可以直接在命令行中执行,具体的使用方法如下:
mysqldumpslow参数:
-s,是order的顺序 -----al 平均锁定时间 -----ar 平均返回记录时间 -----at 平均查询时间(默认) -----c 计数 -----l 锁定时间 -----r 返回记录 -----t 查询时间 。
-t,top,即为返回前面多少条的数据 -g,自定义正则表达式 。
举个例子,如下:
mysqldumpslow -s r -t 5 /data/mysql/mysql_slow.log 。
查询出返回记录集最多的5个慢查询SQL.
更多用法之后我建个测试库单独写篇文章细说一下.
查看执行计划关键词:EXPLAIN 。
就是直接执行 EXPLAIN SELECT * FROM TABLE_NAME,
这个一开始我是打算简单说一下的,后来发现篇幅太长了,这个留待下篇文章里,感谢理解.
SQL的编写优化就很多了,我这里也整理出了一些,请大家自行查漏补缺.
从数据库角度看:每个SQL执行都需要消耗一定I/O资源,SQL执行的快慢,决定资源被占用时间的长短。假设总资源是100,有一条慢SQL占用了30的资源共计1分钟。那么在这1分钟时间内,其他SQL能够分配的资源总量就是70,如此循环,当资源分配完的时候,所有新的SQL执行将会排队等待.
从应用的角度看:SQL执行时间长意味着等待,在OLTP应用当中,用户的体验较差 。
治理的优先级上 。
这里面远远还没有讲全,还有很多种编写规则,同时还有索引的建立并没有聊,留给大家一些自己看书的时间,希望大家有所进步.
到此这篇关于MySQL中慢SQL优化方向的文章就介绍到这了,更多相关MySQL慢SQL优化方向内容请搜索我以前的文章或继续浏览下面的相关文章希望大家以后多多支持我! 。
原文链接:https://juejin.cn/post/7001076996352507934 。
最后此篇关于详细聊聊MySQL中慢SQL优化的方向的文章就讲到这里了,如果你想了解更多关于详细聊聊MySQL中慢SQL优化的方向的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
有多久,没有发过短信了? 1、背景简介 在常规的分布式架构下,「消息中心」的服务里通常会集成「短信」的渠道,作为信息触达的重要手段,其他常用的手段还包括:「某微」、「某钉」、
区块链、低代码、元宇宙、AI智能; 01 【 先来说说背景 】 这个概念由来已久,但是在国内兴起,是最近几年; 低代码即「 Low-Code
目录 1、背景简介 2、订单业务 1、订单体系 2、流程管理 2
1. 相同点 用Python语言编写的源代码文件,其文件后缀是 “.py” 或 “.ipynb”。用Python语言编写的源代码文件,其文件后缀是 “.py” 或 “.ipynb”。 2. 区别
功能简介 闭锁是一种同步工具类,可以延迟线程的进度直到其到达终止状态【CPJ 3.4.2】。闭锁的作用相当于一扇门∶ 在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过,当到达
高阶函数,英文叫 Higher Order function。一个函数可以接收另外一个函数作为参数,这种函数就叫做高阶函数。 示例: function add(x, 
引文 最近公司项目中使用了 Nuxt 框架,进行首屏的服务端渲染,加快了内容的到达时间 (time-to-content),于是笔者开始了对 Nuxt 的学习和使用。以下是从源码角度对 Nux
什么是游标? 游标(cursor)是一个存储在MySQL服务器上的数据库查询, 它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游 标之后,应用程序可以根据需要滚动或浏
流水线工作模型在工业领域内十分常见,它将工作流程分为多个环节,每个环节根据工作强度安排合适的人员数量。良好的流水线设计尽量让各环节的流通率平衡,最大化提高产能效率。 Go 是一门实用性语言,流
1. Spring JDBC Spring JDBC的配置 2. Spring JdbcTemplate的常用方法 execute()
1. 前言 大家好,我是安果! 日常编写的 Python 自动化程序,如果在本地运行稳定后,就可以考虑将它部署到服务器,结合定时任务完全解放双手 但是,由于自动化程序与平台兼
前言 有时候我们会有在需要在网页中写代码或者改代码配置的需求,这个时候就需要用到代码编辑器,常规的代码编辑器有 CodeMirror 和 Monaco Editor, CodeMirror 使用的
前言:模块机制是 Node.js 中非常重要的组成,模块机制使得我们可以以模块化的方式写代码,而不是全部代码都写到一个文件里。我们平时使用的比较多的通过 require 加载模块,但是我们可能不
随着互联网的发展,越来越多的公司摒弃了Hibernate,而选择拥抱了MyBatis。而且,很多大厂在面试的时候喜欢问MyBatis底层的原理和源码实现。 总之,MyBatis几乎成为了Jav
@requestmapping和@getmapping @postmapping的区别 最近学习看一些代码,发现对于发送请求这件事,有的地方用@requestmapping,有的地方用@postm
@RequestParam 和 @PathVariable 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是@RequestParam 是从request里面拿取值,而 @
PHP8的Alpha版本,过几天就要发布了,其中包含了不少的新特性,当然我自己认为最重要的还是JIT,这个我从2013年开始参与,中间挫折无数,失败无数后,终于要发布的东东。 不过,今天呢,我不打
引言 我们想要网格的服务发现、路由、熔断降级、负载均衡,这些流量治理都在数据面Envoy中执行才行。Envoy也提供的Filter机制来做这些功能,通常有以下方式: 通过C
我是一名优秀的程序员,十分优秀!