MySQL---事务的四大特性详解(高频面试题)

在MySQL中,事务具有以下四个基本特性:

原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。这些特性通常被称为ACID特性。

一、原子性:

原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 

#这意味着,如果事务中的任何一个操作失败,那么整个事务都会失败,数据库状态回滚到事务开始前的状态。这样可以保证数据的一致性,防止因为事务中的某个操作失败而导致的数据不一致。

#在系统发生故障的情况下,原子性可以帮助我们恢复到故障发生前的状态。因为原子性要求事务必须是全部执行或者全部不执行,所以在故障恢复时,我们可以直接回滚到事务开始前的状态,而不需要关心事务中的哪个操作已经执行,哪个操作还没有执行。

二、一致性:

一致性(Consistency):事务必须使数据库从一个一致状态转变为另一个一致状态 。

#事务的一致性保证了在事务开始和结束时,数据库的状态是一致的。这意味着所有的业务规则和约束条件都得到了满足。

#例如,如果一个事务试图将一个账户的余额设置为负数,那么由于存在账户余额不能为负的业务规则,该事务将无法提交,从而保证了数据的一致性。

三、隔离性:

隔离性(Isolation):事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。   

#因为当多个事务同时访问和修改同一份数据时,可能会出现以下问题

1.一个事务读取了另一个未提交的事务的数据(脏读)。 

2.在一个事务内,多次读取同一数据返回的结果不一致(不可重复读)

3.在一个事务内,两次查询返回的结果集不一致(幻读)

#为了解决这些问题,引入了事务的隔离性。隔离性可以保证在并发环境下,一个事务的执行不会影响其他事务的执行,从而保证了数据的一致性和完整性。

四、持久性:

持久性(Durability):一旦事务完成,它对数据库的更改就是永久的,即使在系统故障的情况下也能保持。

#事务完成,数据写入到硬盘中

#当系统发生故障时,持久性可以保证已经提交的事务不会丢失。这是因为持久性要求一旦事务被提交,它对数据库的更改就应该是永久的,即使在系统故障的情况下也不会丢失。

总结:

这些特性确保了数据库在并发环境下的正确运行。

你可能感兴趣的:(mysql,数据库)