暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql引擎及架构

程序老哥 2021-07-02
303


一、mysql配置文件


1.1 lon-bin

BinLog

BinLog是记录所有数据库表结构变更(例如create、alter table)以及表数据修改(insert、update、delete)的二进制日志,主从数据库同步用到的都是BinLog文件。BinLog日志文件有三种模式。

1、STATEMENT 模式

内容:binlog 只会记录可能引起数据变更的 sql 语句

优势:该模式下,因为没有记录实际的数据,所以日志量和 IO 都消耗很低,性能是最优的

劣势:但有些操作并不是确定的,比如 uuid() 函数会随机产生唯一标识,当依赖 binlog 回放时,该操作生成的数据与原数据必然是不同的,此时可能造成无法预料的后果。

2、ROW 模式

内容:在该模式下,binlog 会记录每次操作的源数据与修改后的目标数据,StreamSets就要求该模式。

优势:可以绝对精准的还原,从而保证了数据的安全与可靠,并且复制和数据恢复过程可以是并发进行的

劣势:缺点在于 binlog 体积会非常大,同时,对于修改记录多、字段长度大的操作来说,记录时性能消耗会很严重。阅读的时候也需要特殊指令来进行读取数据。

3、MIXED 模式

内容:是对上述STATEMENT 跟 ROW  两种模式的混合使用。

细节:对于绝大部分操作,都使用 STATEMENT 来进行 binlog 的记录,只有以下操作使用 ROW 来实现:表的存储引擎为 NDB,使用了uuid() 等不确定函数,使用了 insert delay 语句,使用了临时表

二、逻辑架构

1

架构图


说明:

和其他数据库相比,mysql有点与众不同,它的架构可以在多种不同场景中应用发挥良好作用,主要体现在存储引擎架构上。

插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可以根据业务的需求和实际需要选择合适的存储引擎。

分为四层

1),连接层:TCP握手后服务器来验证登陆用户身份,A用户创建连接后,管理员对A用户权限修改了也不会影响到已经创建的链接权限,必须重新登陆。

2),服务层

2.1、查询缓存:查询后的结果存储位置,MySQL8.0版本以后已经取消,因为查询缓存失效太频繁,得不偿失。

2.2、分析器:根据语法规则,判断你输入的这个SQL语句是否满足MySQL语法。

2.3、优化器:多种执行策略可实现目标,系统自动选择最优进行执行。

2.4、执行器:判断是否有权限,将最终任务提交到存储引擎。

3),引擎层

4),存储层


2

执行步骤


3

执行顺序


三、存储引擎

1

查看存储引擎

show engines; show variables like '%storage_engine%'


2

InnoDB和MyISAM的区别


.frm都是存表结构信息

innodb引擎的索引和数据都存在.ibd中

myisam引擎的索引文件存在.MYI文件中;数据文件存在.MYD文件中


mysql自带的表都是myisam,不会出现高并发,节省资源


微信公众号

 程序老哥



文章转载自程序老哥,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论