MySql基础架构和日志系统

select * from T where ID>2;

大题来说Mysql可以分为Server层和存储引擎层.

Server层包括连接器,查询缓冲,分析器,优化器,执行器,所有跨存储引擎的功能都在这层实现。

引擎层是负责数据的写入和读取,其架构模式是插件式的,支持InnoDB,MyISAM,Memony等多个引擎,Mysql从5.5.5开始默认采用InnoDB引擎。

连接器:连接管理以及权限认证。

查询缓冲:查询命中则直接返回。

分析器:词法分析,语法分析。

优化器:执行计划生成,返回索引。

执行器:操作引擎,放回结果。

存储引擎:存储数据,提供读写接口。

日志系统:

redolog(重做日志,引擎独有,为物理日志记录做了什么):

其工作在引擎层。当有一条更新记录时,InnoDB引擎会先把记录写到redolog日志中,再更新内存,并在适当的时候(系统空闲)写入磁盘。

redolog是由固定大小(可设置)的环形缓冲区,先由write pos记录当前位置,一边写一边后移,checkpoint是当前更新到的数据信息,更新一条擦除一条。这种行为能够保证数据提交之后即使系统宕机也不会丢失称crash-safe

binlog(归档日志,MySQL服务层共有,为逻辑日志记录怎么做的):

其工作在服务层。在MySQL的服务层将操作的原始逻辑写入到该日志文件。

两阶段提交保证日志一致性:

在写入时将redolog的状态拆成两个,prepore和commit两阶段,目的使两份日志文件保持逻辑一致。如果不使用两阶段提交,首先假设先写入redolog,在尚未写入binlog时系统崩溃,恢复数据时,redolog中会比binlog多出一条事务,再假设先写入binlog,在尚未写redolog是系统崩溃,数据恢复时,binlog中会比redolog多处一条事务,造成数据恢复不正确。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值