MySql数据库优化

MySql数据库优化_第1张图片

MySql数据库优化_第2张图片

MySql数据库优化_第3张图片

MySql数据库优化_第4张图片

 

 MySql数据库优化_第5张图片

 

 MySql数据库优化_第6张图片

查看是否开启慢查询日志

MySql数据库优化_第7张图片

查看变量设置情况

MySql数据库优化_第8张图片

MySql数据库优化_第9张图片

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

 MySql数据库优化_第10张图片

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

MySql数据库优化_第11张图片

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

MySql数据库优化_第12张图片

下面演示如下:

MySql数据库优化_第13张图片

记录的位置如下图所示

MySql数据库优化_第14张图片

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

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

MySql数据库优化_第15张图片

慢查询日志的存储格式

MySql数据库优化_第16张图片

MySql数据库优化_第17张图片

 

 

MySQL慢查日志分析工具之mysqldumpslow

 MySql数据库优化_第18张图片

查看下工具可使用的参数

MySql数据库优化_第19张图片

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

MySql数据库优化_第20张图片

查看结果如下

MySql数据库优化_第21张图片

MySql数据库优化_第22张图片

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

 MySql数据库优化_第23张图片

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

MySql数据库优化_第24张图片

演示分析上述日志文件

分析

MySql数据库优化_第25张图片

 

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

 MySql数据库优化_第26张图片

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

MySql数据库优化_第27张图片

 MySql数据库优化_第28张图片

MySql数据库优化_第29张图片

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

Count()和Max()的优化

MySql数据库优化_第30张图片

MySql数据库优化_第31张图片

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

再来看下执行计划

MySql数据库优化_第32张图片

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

MySql数据库优化_第33张图片

下面是正确的查询方式

MySql数据库优化_第34张图片

 

 演示执行效果

MySql数据库优化_第35张图片

 

子查询的优化

 MySql数据库优化_第36张图片

MySql数据库优化_第37张图片

通常我们优化成join的方式

 MySql数据库优化_第38张图片

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

MySql数据库优化_第39张图片

group by的优化

 MySql数据库优化_第40张图片

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

MySql数据库优化_第41张图片

 Limit查询的优化

 MySql数据库优化_第42张图片

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

MySql数据库优化_第43张图片

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

MySql数据库优化_第44张图片

看下执行计划

MySql数据库优化_第45张图片

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

接下来我们进一步优化

MySql数据库优化_第46张图片

 

看下执行计划

MySql数据库优化_第47张图片

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

 

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

 MySql数据库优化_第48张图片

 索引优化SQL的方法 

MySql数据库优化_第49张图片

MySql数据库优化_第50张图片

 

 MySql数据库优化_第51张图片

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

MySql数据库优化_第52张图片

MySql数据库优化_第53张图片

查看结果

MySql数据库优化_第54张图片

 

索引维护的方法

此处省略......

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

 MySql数据库优化_第55张图片

MySql数据库优化_第56张图片

MySql数据库优化_第57张图片

数据库表的范式化优化

 MySql数据库优化_第58张图片

MySql数据库优化_第59张图片

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

MySql数据库优化_第60张图片

数据库表的反范式化优化

 MySql数据库优化_第61张图片

MySql数据库优化_第62张图片

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

MySql数据库优化_第63张图片

MySql数据库优化_第64张图片

数据库表的垂直拆分

 MySql数据库优化_第65张图片

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

 MySql数据库优化_第66张图片

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

MySql数据库优化_第67张图片

 

 MySql数据库优化_第68张图片

数据库表的水平拆分

 MySql数据库优化_第69张图片

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

MySql数据库优化_第70张图片

数据库系统配置优化

MySql数据库优化_第71张图片

MySql数据库优化_第72张图片

MySQL配置文件优化

 MySql数据库优化_第73张图片

MySql数据库优化_第74张图片

 

 MySql数据库优化_第75张图片

MySql数据库优化_第76张图片

MySql数据库优化_第77张图片

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

MySql数据库优化_第78张图片

MySql数据库优化_第79张图片

 

第三方配置工具使用

 MySql数据库优化_第80张图片

 服务器硬件优化

MySql数据库优化_第81张图片

MySql数据库优化_第82张图片

MySql数据库优化_第83张图片

 

你可能感兴趣的:(MySql数据库优化)