MySql数据库优化 Mysql 第1张

MySql数据库优化 Mysql 第2张

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

MySql数据库优化 Mysql 第3张

MySql数据库优化 Mysql 第4张

 

 MySql数据库优化 Mysql 第5张

 

 MySql数据库优化 Mysql 第6张

查看是否开启慢查询日志

MySql数据库优化 Mysql 第7张

查看变量设置情况

MySql数据库优化 Mysql 第8张

MySql数据库优化 Mysql 第9张

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

 MySql数据库优化 Mysql 第10张

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

MySql数据库优化 Mysql 第11张

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

MySql数据库优化 Mysql 第12张

下面演示如下:

MySql数据库优化 Mysql 第13张

记录的位置如下图所示

MySql数据库优化 Mysql 第14张

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

MySql数据库优化 Mysql 第15张

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

MySql数据库优化 Mysql 第16张

慢查询日志的存储格式

MySql数据库优化 Mysql 第17张

MySql数据库优化 Mysql 第18张

 

 

MySQL慢查日志分析工具之mysqldumpslow

 MySql数据库优化 Mysql 第19张

查看下工具可使用的参数

MySql数据库优化 Mysql 第20张

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

MySql数据库优化 Mysql 第21张

查看结果如下

MySql数据库优化 Mysql 第22张

MySql数据库优化 Mysql 第23张

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

 MySql数据库优化 Mysql 第24张

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

MySql数据库优化 Mysql 第25张

演示分析上述日志文件

MySql数据库优化 Mysql 第26张

分析

MySql数据库优化 Mysql 第27张

 

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

 MySql数据库优化 Mysql 第28张

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

MySql数据库优化 Mysql 第29张

 MySql数据库优化 Mysql 第30张

MySql数据库优化 Mysql 第31张

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

Count()和Max()的优化

MySql数据库优化 Mysql 第32张

MySql数据库优化 Mysql 第33张

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

MySql数据库优化 Mysql 第34张

再来看下执行计划

MySql数据库优化 Mysql 第35张

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

MySql数据库优化 Mysql 第36张

下面是正确的查询方式

MySql数据库优化 Mysql 第37张

 

 演示执行效果

MySql数据库优化 Mysql 第38张

 

子查询的优化

 MySql数据库优化 Mysql 第39张

MySql数据库优化 Mysql 第40张

通常我们优化成join的方式

 MySql数据库优化 Mysql 第41张

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

MySql数据库优化 Mysql 第42张

group by的优化

 MySql数据库优化 Mysql 第43张

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

MySql数据库优化 Mysql 第44张

 Limit查询的优化

 MySql数据库优化 Mysql 第45张

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

MySql数据库优化 Mysql 第46张

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

MySql数据库优化 Mysql 第47张

看下执行计划

MySql数据库优化 Mysql 第48张

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

接下来我们进一步优化

MySql数据库优化 Mysql 第49张

 

看下执行计划

MySql数据库优化 Mysql 第50张

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

 

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

 MySql数据库优化 Mysql 第51张

 索引优化SQL的方法 

MySql数据库优化 Mysql 第52张

MySql数据库优化 Mysql 第53张

 

 MySql数据库优化 Mysql 第54张

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

MySql数据库优化 Mysql 第55张

MySql数据库优化 Mysql 第56张

查看结果

MySql数据库优化 Mysql 第57张

 

索引维护的方法

此处省略......

数据库表结构的优化:选择合适的数据类型

 MySql数据库优化 Mysql 第58张

MySql数据库优化 Mysql 第59张

MySql数据库优化 Mysql 第60张

数据库表的范式化优化

 MySql数据库优化 Mysql 第61张

MySql数据库优化 Mysql 第62张

我们如何做呢,我们分析后可以把表拆分成三张表来处理

MySql数据库优化 Mysql 第63张

数据库表的反范式化优化

 MySql数据库优化 Mysql 第64张

MySql数据库优化 Mysql 第65张

上面的查询语句显然增加了IO操作,大大降低查询性能,我们接下来就要进行反范式化的操作

MySql数据库优化 Mysql 第66张

MySql数据库优化 Mysql 第67张

数据库表的垂直拆分

 MySql数据库优化 Mysql 第68张

 尽量避免text属性,能不用就不用,是在无法避免就把这些大的字段拆分到另一张表中

 MySql数据库优化 Mysql 第69张

拆分后的结果:主表film和表file_text

MySql数据库优化 Mysql 第70张

 

 MySql数据库优化 Mysql 第71张

数据库表的水平拆分

 MySql数据库优化 Mysql 第72张

由于前台业务量比后台要求要高,咱们可以把前后台查询需要的表分开,后台统计报表操作总表

MySql数据库优化 Mysql 第73张

数据库系统配置优化

MySql数据库优化 Mysql 第74张

MySql数据库优化 Mysql 第75张

MySQL配置文件优化

 MySql数据库优化 Mysql 第76张

MySql数据库优化 Mysql 第77张

 

 MySql数据库优化 Mysql 第78张

MySql数据库优化 Mysql 第79张

MySql数据库优化 Mysql 第80张

建议把关键参数innodb_file_per_table 设置为ON

MySql数据库优化 Mysql 第81张

MySql数据库优化 Mysql 第82张

 

第三方配置工具使用

 MySql数据库优化 Mysql 第83张

 服务器硬件优化

MySql数据库优化 Mysql 第84张

MySql数据库优化 Mysql 第85张

MySql数据库优化 Mysql 第86张

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄