简单来说,事务是数据库中执行事件的最小单位,要保证一组数据库操作,要么全部成功,要么全部失败。
谐音记忆(一致认为原子应该持续隔离。 OS: ***太可怕了,大家一致觉得需要将*** 持续地隔离起来,不能用于战争!最好用英文记忆,记不住用谐音加强记忆)
1.原子性 (Atomicity)
原子性:就是事物的所包含的所有操作,要么全部成功,要么全部失败回滚。
2.一致性 (Consistency)
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
一致性是指当事务完成时,必须使所有数据都具有一致的状态。在关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。
一致性:简单来说就是在事物执行前和执行后,必须保持数据的一致。
举个例子:A和B之间进行转账,A和B的钱加起来一种是2000块钱,那么无论他们之间 进行了多少次的转账操作,最后的钱数加起来应该还是等于2000。
3.隔离性 (Isolation)
隔离性:一个事物执行的过程当中,不能被其他的事物干扰。MySQL的隔离性主要由锁加MVCC实现。
锁:比如有事物A和事物B,相对于A来说,你B想要执行,要么在我执行之前执行,要么在我执行完毕之后,你再开始执行。
MVCC:多版本并发控制,事务读到的数据总是以自己事务开始时为准,除非是自己对数据做了操作;否则别人的操作对我不可见。
4. 持久性 (Durability)
持久性:事物被提交之后,应被永久的存储到了数据库当中。一经提交,永久有效,不用担心数据的丢失问题。
事物是面试高频常考题,更多干货、知识点可以查看我的数据库笔记https://blog.nowcoder.net/hao2020