innodb的事务(实现部分待续)

什么是事务,事务有哪些特性

事务是区别于数据库和文件系统的重要特性之一,事务会把数据库从一种一致状态转换为另外一种一致性状态,可以确保要么没做,要么全都做了,严格满足ACID特性

什么是ACID 以及如何实现ACID?

1、原子性
概念解释

最常见的是转账业务,例如A 给B转100块,

第一步A账号减100,
第二步B账号加100。

原子性要保证的就是这俩步要么都做,要么都不做。

如何实现

可以通过undo log实现

2、一致性

事务前后要保证完整性约束没有破坏,这很好理解, 不能说我修改了数据后,数据库的框架约束都变了,还有王法么?还有法律么?完整性约束就是数据完整性约束是在表和字段上强制执行的数据检验规则,为了防止不规范的数据进入数据库。详细点击完整性约束

3、隔离性(并发控制)

其实就是线程安全性 可以通过加锁来解决这个问题
如果无法保证隔离性会怎么样?
OK,假设A账户有200元,B账户0元。A账户往B账户转账两次,金额为50元,分别在两个事务中执行。如果无法保证隔离性,会出现下面的情形
在这里插入图片描述
如图所示,如果不保证隔离性,A扣款两次,而B只加款一次,凭空消失了50元,依然出现了数据不一致的情形!

4、持久性

事务提交后,数据可以一直保留下来

参考

https://kuqin.com/article/14734.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章