码迷,mamicode.com
首页 > 数据库 > 详细

MySql数据库优化

时间:2019-01-24 22:55:49      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:count   image   技术分享   重复   设置   alt   primary   日志记录   去重   

技术分享图片

技术分享图片

技术分享图片

技术分享图片

 

 技术分享图片

 

 技术分享图片

查看是否开启慢查询日志

技术分享图片

查看变量设置情况

技术分享图片

技术分享图片

我们要记录未使用索引的查询就要把变量设置为ON 用以下命令设置

 技术分享图片

再确认慢查询时间的变量情况

技术分享图片

把慢查询日志设置为开启状态

技术分享图片

下面演示如下:

技术分享图片

记录的位置如下图所示

技术分享图片

查看执行的sql语句是否记录在了日志文件中

技术分享图片

下图是慢查询日志文件记录的sql语句

技术分享图片

慢查询日志的存储格式

技术分享图片

技术分享图片

 

 

MySQL慢查日志分析工具之mysqldumpslow

 技术分享图片

查看下工具可使用的参数

技术分享图片

用工具查看慢查询日志记录的 前三条 用more查看

技术分享图片

查看结果如下

技术分享图片

技术分享图片

MySQL慢查日志分析工具之pt-query-digest(第二款工具)

 技术分享图片

查看pt-query-digest工具参数情况

技术分享图片

演示分析上述日志文件

技术分享图片

分析

技术分享图片

 

如何通过慢查日志发现有问题的SQL 

 技术分享图片

通过explain查询和分析SQL的执行计划

技术分享图片

 技术分享图片

技术分享图片

下面用具体例子分析慢查询以及优化

Count()和Max()的优化

技术分享图片

技术分享图片

上面看到sql语句执行要扫描15422行,这严重占用IO,下面我们创建一个索引来提高性能

技术分享图片

再来看下执行计划

技术分享图片

 在看下Count()如何优化的例子

技术分享图片

下面是正确的查询方式

技术分享图片

 

 演示执行效果

技术分享图片

 

子查询的优化

 技术分享图片

技术分享图片

通常我们优化成join的方式

 技术分享图片

当表之前出现1对多的关系的时候有可能会出现重复,所以要去重

技术分享图片

group by的优化

 技术分享图片

以上查询会出现对临时表的查询操作,我们把它优化成如下图情况 (执行explain来查看执行计划)

技术分享图片

 Limit查询的优化

 技术分享图片

看下上面sql语句的执行计划

技术分享图片

上面sql执行计划结果中采用表扫描的方式扫描了1030行,我们进行如下优化看下

技术分享图片

看下执行计划

技术分享图片

上图使用了主键key:PRIMARY和索引type:index查询,

接下来我们进一步优化

技术分享图片

 

看下执行计划

技术分享图片

上面执行计划中我们可以看到只扫描了5行,这样就大大提高了SQL执行效率

 

如何选择合适的列建立索引

 技术分享图片

 索引优化SQL的方法 

技术分享图片

技术分享图片

 

 技术分享图片

用工具查重复和...索引,输入命令如下图红框

技术分享图片

技术分享图片

查看结果

技术分享图片

 

索引维护的方法

未完待续......

 

MySql数据库优化

标签:count   image   技术分享   重复   设置   alt   primary   日志记录   去重   

原文地址:https://www.cnblogs.com/zmdComeOn/p/10316998.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!