欢迎光临散文网 会员登陆 & 注册

【实操】三高三V背景下,快速搭建MySQL高性能架构!

2020-08-17 09:49 作者:微软MVP-Eleven  | 我要投稿



Docker、K8S、DevOps、微服务、云原生是这几年最火的技术名词,也是互联网的技术发展方向,.NET Core+MySQL的开源跨平台解决方案是.NET领域的不二之选!然而大多数开发者甚至架构师,都聚焦在.NET Core上,以至于在MySQL性能优化方面出现空白,会严重影响个人的发展和就业选择。下面给大家来篇干货长文,还请细看!


数据库调优


数据库性能调优是个技术活儿,说起来简单,就是加快数据库的访问速度,做起来挺难,需要考虑各种复因素:SQL语句、索引、数据库设计、表结构、系统配置、甚至硬件都需要关注,常见方式:

§  SQL和索引优化是最重要的,也是开发者关注最多。

§  从数据库设计时,就考虑到增删改查效率,适度冗余。

§  系统配置的优化,调整数据库相关参数配置。

§  硬件优化就是更多内存,更快的IO。


优化成本:硬件>系统配置>数据库表结构>SQL及索引

优化效果:硬件<系统配置<数据库表结构<sql及索引< span=""></sql及索引<>


优化效果最好而且最廉价的应该就是SQL和索引了,也是开发者最应该关注的环节,下面来个实操案例分享。


Sql优化案例

SQL优化就是为了解决有问题的SQL,要么是SQL写的不恰当,要么就是无索引或者索引失效。想要对症下药,最重要的是找到问题,幸好我们有MySQL执行计划,能够看到SQL执行的全部细节!实例看图:


核心指标详解

一、type:

执行计划访问类型,SQL 查询优化中一个非常重要的指标,结果值从好到坏依次是:system > const > eq_ref > ref > range > index > ALL。

system 

最快:不进行磁盘读写


const:

主键或者 unique 上的等值的查询


eq_ref:

主键或者 unique 上的 join 查询,等值匹配,对于前表的每一行,后表只有一行命中


ref:

非唯一索引,等值匹配,可能多行命中


range:

索引上的范围扫描,例如:between、in、>、<


index:

索引上的全集扫描,例如:InnoDB 的 count


ALL:

全表扫描,最慢

二. possible_keys 

查询过程中有可能用到的索引。

三. key 

实际使用的索引,如果为 NULL ,则没有使用索引。

四. rows 

根据表统计信息或者索引选用情况,估算出找到所需的记录所需要读取的行数。

五. filtered 

表示返回结果的行数占需读取行数的百分比, filtered 值越大越好。

六.Extra 

非常非常重要的额外信息,会影响执行结果的

Using filesort:

对数据使用一个外部的文件内容进行了排序,而不是按照表内的索引进行排序读取。 


Using temporary:

使用临时表保存中间结果,常见于order by 或 group by。 


Using index:

表示 SQL 操作中使用了覆盖索引,避免了访问表的数据行 


Using index condition:

表示 SQL 操作命中了索引,但不是所有的列数据都在索引树上,还需要访问实际的行记录。 


Using where:

表示 SQL 操作使用了 where 过滤条件。


看懂执行计划,是开启高性能 SQL 语句的大门的第一步,此外还需要拥有扎实的理论基础和丰富的实践,二者缺一不可。在当下大数据量三高三V的时代,只有sql语句的优化,已经远远不够了,还需要能深入索引结构,数据库设计,结合硬件方能让你的程序业务性能永垂不朽。


三高:高并发,高可扩,高性能

三V:海量 Volume,多样Variety,实时Velocity


硬核集训

顺应新时代互联网三高三V需求,你必须来一波MySQL硬核集训!3天时间,从MySQL实战到精华建议,从执行计划到索引数据结构,输出一线互联网公司数据库架构方案。课程由资深DBA,硬核架构师Clay在线直播实操,全网首发,有直播无回看,扫码限时免费学习!



Day1

MySQL执行计划分析,望问诊切4步法,解决SQL性能疑难,10年DBA的32条精华建议。


Day2

探究MySQL多重索引本质,为不同场景适配索引的合适数据类型,从数据结构层深度优化。


Day3

三高三V背景下,搭建MySQL高性能架构,输出互联网级分布式数据库架构方案。


【实操】三高三V背景下,快速搭建MySQL高性能架构!的评论 (共 条)

分享到微博请遵守国家法律