MySQL的事务隔离特性指的是多个并发事务之间相互隔离的程度,以保证数据的一致性和并发性。MySQL支持四个隔离级别,分别是读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Read)和串行化(Serializable)。
-
读未提交(Read Uncommitted):最低的隔离级别。事务对数据的修改都是可见的,即一个事务可以读取到其他事务未提交的数据。这种隔离级别很少使用,因为会导致脏读、不可重复读和幻读的问题。--脏读
-
读已提交(Read Committed):事务只能读取到已经提交的数据。一个事务开始后,其他事务对数据的修改不可见,即读取到的数据是其他事务已经提交的数据。这种隔离级别能避免脏读问题,但可能会出现不可重复读和幻读问题。--不可重复读
-
可重复读(Repeatable Read):事务在开始时创建一个快照,并在事务结束前都使用这个快照来读取数据。即使其他事务对数据的修改已经提交,当前事务读取的数据仍然是之前创建的快照数据。这种隔离级别能避免脏读和不可重复读问题,但可能会出现幻读问题。--幻读
-
串行化(Serializable):最高的隔离级别。事务之间完全隔离,每个事务在执行期间都会对数据进行加锁,其他事务无法读取或修改被锁定的数据。这种隔离级别能避免脏读、不可重复读和幻读问题,但会导致并发性能下降
-
原子性: 事务作为一个整体被执行,包含在其中的对数据库的操作要么全部都执行,要么都不执行 一致性: 指在事务开始之前和事务结束以后,数据不会被破坏,假如A账户给B账户转10块钱,不管成功与否,A和B的总金额是不变的。 隔离性: 多个事务并发访问时,事务之间是相互隔离的,一个事务不应该被其他事务干扰,多个并发事务之间要相互隔离。 持久性: 表示事务完成提交后,该事务对数据库所作的操作更改,将持久地保存在数据库之中。这个文章详细介绍