ACID,是用来声明数据库事务的四大特性,即原子性 (Atomicity)、 一致性(Consistency)、隔离性(Isolation) 和 持久性(Durability).
原子性:
既然谈到原子性,首先确定的是数据库引擎和事务已经开始了,在工作中事务一般是一组操作的集合,而原子性想要表达的就是集合中的元素在数据库当前事务中要么全部执行成功commit,要不全部失败rollback.
如何实现原子性:undo log 回滚日志
eg:数据库遇到不可抗力,导致事务执行失败,那怎么回滚呢?就是靠 undo log.
select:select不需要有 undo log 对结果不影响.
update:要记录原有更新列信息,方便回滚.
insert: 记录主键即可,回滚直接删除.
delete: 记录全部信息,回滚在插入,这也是为啥一般数据库都有 delete_flag.
undo log 日志结构 因为undo log 要根据事务trx_id去查找
---------------------------------------------------------------
|end of record|undo type|......|undo no|trx_id|start of record|
---------------------------------------------------------------
end of record: 下一条undo日志的位置
undo type: 日志类型
undo no: 日志编号,一个事务中,日志编号从0开始,
深入理解数据库ACID(MySQL)
最新推荐文章于 2024-03-10 12:58:41 发布