首页 运维知识 关于MySQL如何定位并优化慢查询sql

关于MySQL如何定位并优化慢查询sql

a.根据慢日志定位慢查询sql SHOW VARIABLES LIKE ‘%query%’      查询慢日志相关信息 slow_query_log 默认…

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

SHOW VARIABLES LIKE ‘%query%’      查询慢日志相关信息
关于MySQL如何定位并优化慢查询sql插图

slow_query_log 默认是off关闭的,使用时,需要改为on 打开

slow_query_log_file 记录的是慢日志的记录文件

long_query_time 默认是10S,每次执行的sql达到这个时长,就会被记录

 

SHOW STATUS LIKE ‘%slow_queries%’  查看慢查询状态

关于MySQL如何定位并优化慢查询sql插图1

Slow_queries 记录的是慢查询数量  当有一条sql执行一次比较慢时,这个vlue就是1 (记录的是本次会话的慢sql条数)

 

注意:
如何打开慢查询 : SET GLOBAL slow_query_log = ON;

将默认时间改为1S: SET GLOBAL long_query_time = 1;
(设置完需要重新连接数据库,PS:仅在这里改的话,当再次重启数据库服务时,所有设置又会自动恢复成默认值,永久改变需去my.ini中改)

 

   b.使用explain等工具分析sql

在要执行的sql前加上explain  例如:EXPLAIN SELECT menu_name FROM t_sys_menu ORDER BY menu_id DESC;

关于MySQL如何定位并优化慢查询sql插图2

接着看explain的关键字段

        type:

关于MySQL如何定位并优化慢查询sql插图3

如果发现type的值是最后两个中的其中一个时,证明语句需要优化了。

        extra:

关于MySQL如何定位并优化慢查询sql插图4

 

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

mysql查询优化器会根据具体情况自己判断走哪个索引,不一定是走主键(explain中的key可以看到走的哪个key)具体情况根据具体情况来定,当你要强制执行走某一个key时:

在查询的最后加上 force index(primary); 强制走主键的

2.联合索引的最左匹配原则的成因

最左匹配原则的概念参考:https://www.cnblogs.com/lanqi/p/10282279.html

关于MySQL如何定位并优化慢查询sql插图5

成因:
关于MySQL如何定位并优化慢查询sql插图6

当通过(col3,col2)这样的联合索引去查找时,可以看到也是一个B+树的结构向下查找,若直接通过col2去查找,无法直接查找到34、77。也就用不到这个联合索引了。

3.索引是建立得越多越好吗

1.数据量小的表不需要建立索引,建立会增加额外的索引开销。

2.数据变更需要维护索引,因此更多的索引意味着更多的维护成本。

3.更多的索引意味着也需要更多的空间。

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 小小编

为您推荐

dell R710 更换raid卡后,raid卡信息没有了,处理方案

dell R710 更换raid卡后,raid卡信息没有了,处理方案

1.将一台服务器(A)的硬盘依次拔出,按相同顺序插入另一台同样配置的服务器(B) 2.启动服务器(B) 3.按提示键盘按...
PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

下载 并安装 PL SQL Developer 13,默认支持中文语言 ========================...
关于一条sql语句在mysql中是如何执行的

关于一条sql语句在mysql中是如何执行的

最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在my...
关于sql注入姿势总结(mysql)

关于sql注入姿势总结(mysql)

前言 学习了sql注入很长时间,但是仍然没有系统的了解过,这次总结一波,用作学习的资料。 从注入方法分:基于报错、基于布...
关于Oracle SQL外连接

关于Oracle SQL外连接

SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。 连接...

发表回复

返回顶部