mysql的结构_Mysql的组成结构

a3e3e270fd68

mysql的基本逻辑结构.png

mysql主要分为客户端、Server层、存储引擎层

Server层中存在连接器,缓存区,词法分析器,优化器以及执行器。其操作顺序是连接校验权限后如果开启了缓存区访问的话,会先访问缓存区中是否存在该语句注:缓存区的存储结构是key-value,key对应的sql。如果缓存区中没有会先经过词法分析器分析成功之后进入优化器,执行器

math?formula=%5Ccolor%7Bblue%7D%7Bmysql%E6%97%A5%E5%BF%97%E6%A8%A1%E5%9D%97%7D

redo log 和bin log的区别

bin log是一个逻辑日志,里面存储的是更新语句的处理逻辑;redo log是一个物理日志,里面存储的是更新语句的执行结果。比如说张三原本有100元,现在李四给其转了200元,那么redo log中记录的就是张三的300元。而Bin log对应的是逻辑日志它记录的就是100+200逻辑运算的一个过程。Bin log是不限大小,追加写入。而redo log是有一个限定的大小。其中bin log是可以用来将误删除的数据从日志中将其归档找回来。

redo log理解

redo log是Innodb引擎中特有的,执行数据的写入采用的是WAL机制(Write-Ahead Logging)先写日志再写磁盘。如果没有采用wal机制的化每次都往磁盘文件中写入数据是非常麻烦的,因为我们的数据在磁盘中是结构化存储的,当插入数据的数据的时候先要查询数据的存储位置再写入而使用了wal机制将其先写入redo 日志中该机制里面还有一个检查机制,待数据库不忙的时候再将日志中的数据同步到磁盘文件中。其中redo log在mysql的data文件中对应的是ib_logfile1和ib_logfile0

redolog写入的原理

redo log在mysql的data文件夹中存在两个文件,写入的时候按照循环写入的规则,先往文件1中写入,文件1写满时,切换到文件2中,如果两个文件都写满此时checkpoint(当前边写边后移)会回到文件1中通知innodb引擎擦除已经提交的日志。如果都没有提交,此时的mysql会停下来,先把文件1中的一部分数据同步到数据表中才会接收新的更新任务

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值