Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
点击事件
JavaGuide
提交
6cdbe28e
J
JavaGuide
项目概览
点击事件
/
JavaGuide
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
JavaGuide
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
6cdbe28e
编写于
9月 09, 2021
作者:
S
Shiqi
提交者:
GitHub
9月 09, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update MySQL三大日志.md
typo 则重->侧重 先先->先
上级
ac930c32
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
3 addition
and
4 deletion
+3
-4
docs/database/mysql/MySQL三大日志.md
docs/database/mysql/MySQL三大日志.md
+3
-4
未找到文件。
docs/database/mysql/MySQL三大日志.md
浏览文件 @
6cdbe28e
...
...
@@ -217,7 +217,7 @@
`binlog`
(归档日志)保证了
`MySQL`
集群架构的数据一致性。
虽然它们都属于持久化的保证,但是
则
重点不同。
虽然它们都属于持久化的保证,但是
侧
重点不同。
在执行更新语句过程,会记录
`redo log`
与
`binlog`
两块日志,以基本的事务为单位,
`redo log`
在事务执行过程中可以不断写入,而
`binlog`
只有在提交事务时才写入,所以
`redo log`
与
`binlog`
的写入时机不一样。
...
...
@@ -255,7 +255,7 @@
> 这部分内容为 JavaGuide 的补充:
我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行
**回滚**
,在 MySQL 中,恢复机制是通过
**回滚日志(undo log)**
实现的,所有事务进行的修改都会先
先
记录到这个回滚日志中,然后再执行相关的操作。如果执行过程中遇到异常的话,我们直接利用
**回滚日志**
中的信息将数据回滚到修改之前的样子即可!并且,回滚日志会先于数据持久化到磁盘上。这样就保证了即使遇到数据库突然宕机等情况,当用户再次启动数据库的时候,数据库还能够通过查询回滚日志来回滚将之前未完成的事务。
我们知道如果想要保证事务的原子性,就需要在异常发生时,对已经执行的操作进行
**回滚**
,在 MySQL 中,恢复机制是通过
**回滚日志(undo log)**
实现的,所有事务进行的修改都会先记录到这个回滚日志中,然后再执行相关的操作。如果执行过程中遇到异常的话,我们直接利用
**回滚日志**
中的信息将数据回滚到修改之前的样子即可!并且,回滚日志会先于数据持久化到磁盘上。这样就保证了即使遇到数据库突然宕机等情况,当用户再次启动数据库的时候,数据库还能够通过查询回滚日志来回滚将之前未完成的事务。
另外,
`MVCC`
的实现依赖于:
**隐藏字段、Read View、undo log**
。在内部实现中,
`InnoDB`
通过数据行的
`DB_TRX_ID`
和
`Read View`
来判断数据的可见性,如不可见,则通过数据行的
`DB_ROLL_PTR`
找到
`undo log`
中的历史版本。每个事务读到的数据版本可能是不一样的,在同一个事务中,用户只能看到该事务创建
`Read View`
之前已经提交的修改和该事务本身做的修改
...
...
@@ -277,4 +277,4 @@ MySQL InnoDB 引擎使用 **redo log(重做日志)** 保证事务的**持久性*
## MySQL 好文推荐
-
[
CURD 这么多年,你有了解过 MySQL 的架构设计吗?
](
https://mp.weixin.qq.com/s/R-1km7r0z3oWfwYQV8iiqA
)
-
[
浅谈 MySQL InnoDB 的内存组件
](
https://mp.weixin.qq.com/s/7Kab4IQsNcU_bZdbv_MuOg
)
\ No newline at end of file
-
[
浅谈 MySQL InnoDB 的内存组件
](
https://mp.weixin.qq.com/s/7Kab4IQsNcU_bZdbv_MuOg
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录