高频:mysql知识

本文详细比较了B树与B+树的不同点,介绍了binlog和redolog在MySQL中的作用,以及SQL执行过程中的Server层与InnoDB引擎交互。还探讨了事务未提交时redolog的持久化和事务隔离级别的实现原理,特别是InnoDB的MVCC和版本链机制。
摘要由CSDN通过智能技术生成

1、B树与B+树的区别?

B树

B+树

1)B树的节点中没有重复元素,B+树有。

2)B树的中间节点会存储数据指针信息,而B+树只有叶子节点才存储。

3)B+树的每个叶子节点有一个指针指向下一个节点,把所有的叶子节点串在了一起。

2、binlog与redolog的区别?

参考区别

结合MySQL更新流程看 undolog、redolog、binlog

  • binlog是逻辑日志,记录的是对哪一个表的哪一行做了什么修改;redo log是物理日志,记录的是对哪个数据页中的哪个记录做了什么修改,如果你还不了解数据页,你可以理解成对磁盘上的哪个数据做了修改。

  • binlog是追加写;redo log是循环写,日志文件有固定大小,会覆盖之前的数据。

  • binlog是Server层的日志;redo log是InnoDB的日志。如果不使用InnoDB引擎,是没有redo log的。


3、SQL语句的执行过程?

  • 服务器与MySQL建立连接
  • 依次经过Server层的分析器、优化器、执行器
  • 执行器根据执行计划操作InnoDB引擎
  • InnoDB从磁盘数据文件中将age=1读到缓冲池
  • 在修改之前,写入一条undo log将age=1存起来
  • 将缓冲池中的age=1改成age=2
  • 写入一条redo log将修改后的值age=2存起来
  • 写入一条binlog将修改后的值age=2存起来

4、事务还没提交的时候,redo log 能不能被持久化到磁盘呢?

5事务的隔离类型与实现原理
类型
读未提交
读已提交
可重复读
串行化
实现原理(mvcc)
版本链(undo log)
1、对于InnoDB存储引擎,每一行记录都有两个隐藏列 trx_id、roll_pointer(如果表中没有主键和非NULL唯一键时,则还会有第三个隐藏的主键列row_id)。
2、多个事务并行操作某一行数据时,不同事务对该行数据的修改会产生多个版本,然后通过回滚指针(roll_pointer),连成一个链表,这个链表就称为版本链。
read view

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值