面试mysql慢查询_剑指Offer面试题:如何定位并优化慢查询sql
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相关推荐
- 两个数组中对应的下标的值合成一个新的数组_剑指 offer 面试题精选图解 03 . 数组中重复的数字
今天分享的题目来源于 LeetCode 上的剑指 Offer 系列 面试题03. 数组中重复的数字. 题目链接:https://leetcode-cn.com/problems/shu-zu-zhon ...
- 二维数组的空间复杂度_剑指 offer 面试题精选图解 04 . 二维数组中的查找
点击关注上方"图解面试算法", 设为"置顶或星标",一起刷 LeetCode. 作者:程序员吴师兄 今天分享的题目来源于 LeetCode 上的剑指 Offer ...
- python剑指offer面试题_剑指offer面试题Q10 斐波那契数列 python解法
Q10.斐波那契数列 题目描述 写一个函数,输入n,求斐波那契数列的第n项. 解题思路 思路一 递归 递归很简单但是并不能AC python实现代码 class Solution: def Fibon ...
- java 打印_剑指Offer面试题20(Java版):顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字.例如:如果输入如下矩阵: 1,2,3,4 5,6,7,8 9,10,11,12 13,14,15,16 则依次打印出数字1,2,3, ...
- java queue 最大值_[剑指offer题解]队列的最大值/滑动窗口的最大值
前言 众所周知,<剑指offer>是一本"好书". 为什么这么说? 因为在技术面试中,它里面罗列的算法题在面试中出现的频率是非常非常高的. 有多高,以我目前不多的面试来 ...
- 字符串全排列算法_C#版_剑指OFFER
字符串全排列算法_C#版_剑指OFFER 题目描述 题目描述 输入一个长度为 n 字符串,打印出该字符串中字符的所有排列,你可以以任意顺序返回这个字符串数组. 例如输入字符串ABC,则输出由字符A, ...
- [剑指offer]面试题第[57]题[Leetcode][第167题][JAVA][和为s的两个数字][两数之和][HashSet][二分][双指针]
[剑指offer]面试题第[57]题[Leetcode][第167题][第1题] 有序无序之分 题目输出不同之分 以下解法按照[剑指offer]面试题第[57]题进行题解 [问题描述][简单] 输入一 ...
- 剑指offer面试题[30]-最小的k个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4. 分析思路: 这道题最简单的思路莫过于把输入的n个数排 ...
- 剑指offer——面试题46:求1+2+...+n
剑指offer--面试题46:求1+2+-+n 题目描述 求1+2+3+-+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 个 ...
最新文章
- 硅谷风投押注计算机网络安全市场
- latch.await java有什么作用_java相关:CountDownLatch源码解析之await()
- C++11 标准新特性:Defaulted 和 Deleted 函数
- C语言 十进制和十六进制相互转换 - C语言零基础入门教程
- (2021) 18 [代码讲解] 可执行文件
- java iecapt.exe_java替换url的域名和端口方法
- 面向对象的三大特性之多态,封装基础
- Confluence 6 配置备份
- Effective Java 第三版 中文翻译
- WPS中word转pdf文件时给pdf文件增加目录
- PS长图快速切片_PS最常用的100多个快捷键
- 什么是DNS,作用是什么?
- 看完这篇文章APP关键词覆盖增加70000|互联网行业公会
- Android仿微信语音聊天
- 记一次酷狗音乐API的获取,感兴趣的可以自己封装开发自己的音乐播放器
- DAVINCI DM36x开发攻略——U-BOOT-2010.12及UBL移植
- linux ls 目录颜色,改变ls 中目录颜色的方法
- 晶振的构造及工作原理
- 扰码器(一)扰码器综述及设计思路
- STM8 STM8S208MB 入门
热门文章
- windows怎么用qt MinGW gcc编译c代码
- python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹
- 使用websockets,后台实时发数据,前台实时接受数据,并集成到Django
- java 表单请求_java模拟表单请求
- 系统下装软件_电力二次设备自动测试系统
- cshrc设置 ic618_.cshrc一般在什么地方
- springboot 读取nacos配置的流程和数据变化实时更新机制
- JS 中迭代数组的三种方法
- short s1 = 1; s1 = s1 + 1; 有错吗?short s1 = 1; s1 += 1 有错吗
- 临界区设计太大或太小有何缺点_这些衣帽间设计案例,装出豪宅范?闺蜜来了都看呆!...