当前位置:Gxlcms > 数据库问题 > mysql - innoDB、事务、ACID特性

mysql - innoDB、事务、ACID特性

时间:2021-07-01 10:21:17 帮助过:27人阅读

参考:https://www.bilibili.com/video/BV1ui4y1w7C6?from=search&seid=9894164453600625754

 

InnoDB具有事务,支持4个事务隔离级别,回滚,崩溃修复能力和多版本并发的事务安全,包括ACID。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能

 

 

ACID:原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。

- 原子性(Atomicity):事务是一个不可分割的单位,是一个最小的操作单元;这个单元的操作要么全部成功,要么全部不成功。如果某一个SQL语句执行失败了,那么之前执行的SQL语句要执行回滚操作。实现原理:基于**Undo log**。Undo log会记录所有操作,一旦发生回滚,数据库就会按照Undo log做相反的操作,比如记录的是插入,那么数据库便会进行删除操作。

- 一致性(Consistency):事务执行之后,数据库的完整性约束没有被破坏,事务执行前后都是一个合法的数据状态。完整性体现在比如数据库的主键要唯一,字段类型大小要符合要求,外键的约束要符合要求。一致性是事务追求的最终目标。原子性、持久性、隔离性都是为了保证数据库最终的一致性。如果另外三个特性无法保证,那么一致性肯定也保证不了

- 隔离性(Isolation):写写操作:通过锁机制,保证当前只能有一个事务来操作某个数据。

- 持久性(Durability):实现原理:redo log。数据库除了要把数据写到Buffer中去,还会把内容记录到redo log里面,如果Mysql 宕机了,那么可以通过Redo log去恢复数据。Redo log是**预写式日志**,会把要进行的修改先写入到Redo log中,再更新到Buffer中。

mysql - innoDB、事务、ACID特性

标签:语句   复数   通过   不可   完整   约束   aci   lan   完整性   

人气教程排行