MySQL架构简介

在这里插入图片描述
MySQL是系统架构中最常见的中间件,主要由Server层(连接器Connectors、连接池Connection Pool、查询缓存query cache、分析器Parser、优化器Optimizer、执行器、binlog)以及存储引擎层组成。

MySQL架构简介

连接器

与客户端建立连接、认证身份获取权限、维持和管理链接。通过wait_timeout参数控制连接时间,默认为8小时。

查询缓存

查询缓存在MySQL8.0后被移除,一开始的设计主要是为了提高性能。那为何要被弃用呢?经过时间考验,MySQL的工程团队发现启用缓存的好处并不多。首先,查询缓存的命中率不乐观。其次,在具有多个内核的服务器上,大量查询会导致大量的互斥锁争用。

分析器

主要是对执行SQL的词法、语法进行分析,有误就报错。

优化器

对SQL进行优化,比如根据执行成本对索引的选择、多表关联的时候决定表的执行顺序等。
执行成本主要考虑扫描行数、是否使用临时表、是否需要排序等因素,explain可以查看到这些信息。
多表关联时表的执行顺序也很重要,也是执行成本的问题,包括扫描行数、内存判断次数等。

执行器

经过优化器后,就会执行。执行前还会判断执行用户对表是否有查询权限,有权限才会调用指定引擎的接口执行SQL。

binlog

binlog是Server层的日志模块,所有引擎都可以用。主要是为了做归档。大并发时,写binlog会造成磁盘IO异常高,通过控制binlog的写入机制和组提交策略参数设置可以减少IOPS消耗。

redo log

binlog不支持崩溃恢复,所以引擎了redo log。redo log是InnoDB存储引擎的特有日志模块,原理是利用了WAL技术,先写日志再写磁盘。WAL机制的顺序写和组提交,让写redo log性能有较大提升。

MySQL优化浅谈

MySQL优化主要有以下几个方向,一是数据库配置,二是SQL优化,三是数据分片和读写分离。

数据库配置,对技术要求较高,需要不断压测和调整,才能找到系统最佳的配置。有些配置可直接参考网上给的建议值。

SQL优化是成本较低的优化方式,主要方式是建立必要的索引。索引的数据结构是B+树,且叶子节点成链表且有序,有条件查找时不需要全表扫描,性能是比没有索引会有质方面的提升。可以使用explain检查索引的选择是否异常或者索引是否因为某些原因被破坏掉。

数据分片,将数据分散存储在网络场地的各个物理数据库中,以便实现负载均衡。读写分离,主库负责写,从库负责读。

锁和事务也是很重要的概念,其中也比较多的知识点,这里就不展开谈了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值