最全MySQL性能优化详解(6大必备优化方案)

2023-05-31 0 829

最全MySQL性能优化详解(6大必备优化方案)

新论写了遍布世界各地操控性强化简述(9大必不可少小厂强化计划),把整座操控性强化的架构创建出来了,上面我就接著详询关键的MySQL强化计划,这儿会牵涉到慢查阅、检索、表结构设计等的强化形式,上面我就逐一来简述那些突破点@mikechen

MySQL强化计划

MySQL的强化大体上能分成三部份:检索的强化,sql句子的强化,表的强化,上面我就逐一来简述这3大强化计划@mikechen

最全MySQL性能优化详解(6大必备优化方案)

检索强化

1.检索

通常的应用领域控制系统,随机存取比率在10:1以内,所以填入操作形式和通常的预览操作形式极少再次出现操控性难题,在制造自然环境中,他们碰到最少的也是最难再次出现难题的,却是许多繁杂的查阅操作形式,因而对查阅句子的强化是首要任务,快速查阅最合适的形式是检索。

检索在资料库中的促进作用近似于产品目录在书刊中的促进作用,用以提升搜寻关键信息的速率。

如下表所示图右图:

最全MySQL性能优化详解(6大必备优化方案)

检索的目的在于提升查阅效率,与他们查阅图书所用的产品目录是一个道理:先定位到章,然后定位到该章下的一个小结,然后找到页数。相似的例子还有:查字典,查地图等。

创建检索的原则

a. 定义主键的数据列一定要创建检索。

b. 定义有外键的数据列一定要创建检索。

c. 对于经常查阅的数据列最合适创建检索。

d. 对于需要在指定范围内的快速或频繁查阅的数据列;

e. 经常用在WHERE子句中的数据列。

f. 经常再次出现在关键字order by、group by、distinct后面的字段,创建检索。如果创建的是复合检索,检索的字段顺序要和那些关键字后面的字段顺序一致,否则检索不会被使用。

g. 对于那些查阅中极少牵涉的列,重复值比较多的列不要创建检索。

h. 对于定义为text、image和bit的数据类型的列不要创建检索。

i. 对于经常存取的列避免创建检索。

SQL慢查阅强化

最全MySQL性能优化详解(6大必备优化方案)

1.首先是捕获低效sql

1)slow_query_log

这个参数设置为ON,能捕获执行时间超过一定数值的SQL句子。

2)ong_query_time

当SQL句子执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。

3)slow_query_log_file

记录日志的文件名。

4)log_queries_not_using_indexes

这个参数设置为ON,能捕获到所有未使用检索的SQL句子,尽管这个SQL句子有可能执行得挺快。

2.慢查阅强化的基本步骤

1)先运行看看是否真的很慢,注意设置SQL_NO_CACHE

2)where条件单表查,锁定最小返回记录表。这句话的意思是把查阅句子的where都应用领域到表中返回的记录数最小的表开始查起,单表每个字段分别查阅,看哪个字段的区分度最高

3)explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查阅)

4)order by limit 形式的sql句子让排序的表优先查

5)了解业务方使用场景

6)加检索时参照建检索的几大原则

7)观察结果,不符合预期继续从1开始分析

2.强化原则

能采用以下策略来强化检索性能:

使用EXPLAIN句子分析查阅句子,并强化查阅句子,以充分利用检索。查看慢查阅日志,找出执行时间长的sql句子强化多表连接时,尽量小表驱动大表,即小表 join 大表

资料库强化

数据表拆分:主要是垂直拆分和水平拆分。

最全MySQL性能优化详解(6大必备优化方案)

1.优先考虑缓存降低对资料库的读操作形式。

2.再考虑随机存取分离,降低资料库写操作形式。

3.最后开始数据拆分,切分模式: 垂直(纵向)拆分、水平拆分。

4.首先考虑按照业务垂直拆分。

5.再考虑水平拆分:先分库(设置数据路由规则,把数据分配到不同的库中)

6.最后再考虑分表。

以上

更多分布式架构系列、阿里架构师进阶系列,请查看以下文章:

阿里架构师进阶从0到1全部合集(建议收藏)

最全MySQL性能优化详解(6大必备优化方案)

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务