1.根据慢日志定位慢查询sql

使用以下命令查看相关系统变量属性:

show variables like '%query%';

主要看这三个属性:

long_query_time : 10.000000:查询超过10秒被定义为慢语句

slow_query_log : OFF:是否打开慢查询日志

slow_query_log_file : /usr/local/mysql/data/slow.sql:慢查询文件所在位置

使用以下命令设置这些属性值:

set global slow_query_log = ON; # 打开慢查询日志

set global long_query_time = 1; # 超过1秒的语句被定义为慢语句,注意设置了之后需要重新连接才有效

使用以下命令查询慢查询日志的数量:

show status like '%slow_queries%';

要查看慢日志,直接打开 slow.sql 文件查看即可:

sudo vim /usr/local/mysql/data/slow.sql

2.使用 explain 等工具分析sql

查询出慢语句后可以通过 explain 工具分析sql:

explain select name from person_info_large order by name desc;

查询结果:

balabala...

这里主要注意这几个字段:

type: 表示mysql找到数据行的方式,性能从最优到最差排序如下,如果出现 index 或者 all 就需要注意优化了。

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > all

extra: extra中出现以下两项意味着mysql不能使用索引,效率会受到重大影响,应当尽可能优化。

Using filesort:表示mysql会对结果使用一个外部索引排序,而不是从表里按索引次序读到相关内容。可能在磁盘或是在内存上排序。Mysql中无法利用索引完成的排序操作称为“文件排序”。

Using temporary:表示mysql在对查询结果排序时使用了临时表。常见于排序和分组查询。

3.修改 sql 或者尽量让 sql 走索引

这一步具体语句具体分析了,主要就是要么使用索引要么修改sql逻辑,还要注意是否语句会走错索引,因为mysql查询优化器会误使用非预期索引导致语句查询缓慢,这时候需要修改sql逻辑引导优化器使用正确的索引,或者强制(force index)使用我们预期的索引。

面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql相关推荐

  1. 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字

    今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...

  2. 二维数组的空间复杂度_剑指 offer 面试题精选图解 04 . 二维数组中的查找

    点击关注上方"图解面试算法", 设为"置顶或星标",一起刷 LeetCode. 作者:程序员吴师兄 今天分享的题目来源于 LeetCode 上的剑指 Offer ...

  3. python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法

    Q10.斐波那契数列 题目描述 写一个函数,输入n,求斐波那契数列的第n项. 解题思路 思路一 递归 递归很简单但是并不能AC python实现代码 class Solution: def Fibon ...

  4. java 打印_剑指Offer面试题20(Java版):顺时针打印矩阵

    题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如:如果输入如下矩阵: 1,2,3,4 5,6,7,8 9,10,11,12 13,14,15,16 则依次打印出数字1,2,3, ...

  5. java queue 最大值_[剑指offer题解]队列的最大值/滑动窗口的最大值

    前言 众所周知,<剑指offer>是一本"好书". 为什么这么说? 因为在技术面试中,它里面罗列的算法题在面试中出现的频率是非常非常高的. 有多高,以我目前不多的面试来 ...

  6. 字符串全排列算法_C#版_剑指OFFER

    字符串全排列算法_C#版_剑指OFFER 题目描述 ​题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组. 例如输入字符串ABC,则输出由字符A, ...

  7. [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]

    [剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...

  8. 剑指offer面试题[30]-最小的k个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 分析思路:         这道题最简单的思路莫过于把输入的n个数排 ...

  9. 剑指offer——面试题46:求1+2+...+n

    剑指offer--面试题46:求1+2+-+n 题目描述 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 个 ...

最新文章

  1. 硅谷风投押注计算机网络安全市场
  2. latch.await java有什么作用_java相关:CountDownLatch源码解析之await()
  3. C++11 标准新特性:Defaulted 和 Deleted 函数
  4. C语言 十进制和十六进制相互转换 - C语言零基础入门教程
  5. (2021) 18 [代码讲解] 可执行文件
  6. java iecapt.exe_java替换url的域名和端口方法
  7. 面向对象的三大特性之多态,封装基础
  8. Confluence 6 配置备份
  9. Effective Java 第三版 中文翻译
  10. WPS中word转pdf文件时给pdf文件增加目录
  11. PS长图快速切片_PS最常用的100多个快捷键
  12. 什么是DNS,作用是什么?
  13. 看完这篇文章APP关键词覆盖增加70000|互联网行业公会
  14. Android仿微信语音聊天
  15. 记一次酷狗音乐API的获取,感兴趣的可以自己封装开发自己的音乐播放器
  16. DAVINCI DM36x开发攻略——U-BOOT-2010.12及UBL移植
  17. linux ls 目录颜色,改变ls 中目录颜色的方法
  18. 晶振的构造及工作原理
  19. 扰码器(一)扰码器综述及设计思路
  20. STM8 STM8S208MB 入门

热门文章

  1. windows怎么用qt MinGW gcc编译c代码
  2. python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹
  3. 使用websockets,后台实时发数据,前台实时接受数据,并集成到Django
  4. java 表单请求_java模拟表单请求
  5. 系统下装软件_电力二次设备自动测试系统
  6. cshrc设置 ic618_.cshrc一般在什么地方
  7. springboot 读取nacos配置的流程和数据变化实时更新机制
  8. JS 中迭代数组的三种方法
  9. short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗
  10. 临界区设计太大或太小有何缺点_这些衣帽间设计案例,装出豪宅范?闺蜜来了都看呆!...