视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数据库事务与其隔离级别
2020-11-09 07:32:38 责编:小采
文档


什么是数据库事务 数据库事务就是一系列的数据库操作。我对事务的理解就是事务是一系列要做的操作,并按照特定的顺序完成。例如:1.换上运动装。2.打篮球。3.洗澡。这三个操作便可以组成一个事务,并且顺序是确定的。这三个操作要么全都做,要么都不做,不能

什么是数据库事务

数据库事务就是一系列的数据库操作。我对事务的理解就是事务是一系列要做的操作,并按照特定的顺序完成。例如:1.换上运动装。2.打篮球。3.洗澡。这三个操作便可以组成一个事务,并且顺序是确定的。这三个操作要么全都做,要么都不做,不能出现如:只换上了运动装,打了篮球,而没有洗澡这样的情况。通过把一组相关的操作组成事务,可以使错误恢复更方便,并且能提高应用程序的可靠性。

数据库事务的属性(ACID)

原子性(Atomicity)

我们提到数据库事务是一系列数据库操作的序列,而这一系列操作应当被视为一个整体。即这一系列操作要么全都执行,要么全都不执行,不能只执行一部分。这便是数据库事务的原子性。

一致性(Consistency)

事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。关系型数据库中,所有的规则必须应用到事务的修改上,以便维护所有数据的完整性。

隔离性(Isolation)

由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不能查看中间状态的数据。这时事务将获得最高的隔离级别(可序列化)。

持久性(Durability)

事务完成之后,它对于系统的影响是永久性的。即使出现致命的系统故障这个修改也将一直保持。

事务的隔离级别

在对数据库进行并发访问的时候,如多个事务并发执行时,如果没有相应的机制对数据的并发访问进行控制,就会导致错误。比如事务A对数据进行了修改但还未提交修改,这是事务B读取了事务A修改过的数据,结果事务A进行了回滚,最终事务B读取到的数据就是不真实的,这就称为脏读。下面就从低到高介绍一下数据库事务的四种隔离级别,通过数据库隔离级别的设置对事务并发进行控制,从而减少错误的发生。

未提交读

最低级别的隔离,即一个事务可以访问另一个事务修改但未提交的数据。会引发丢失数据修改、脏读、不可重复读、幻象等问题。

已提交读

事务只能读取其他写事务提交修改后的数据,避免了脏读的问题。但是这个事务在读取数据时,其他事务仍可以对数据进行修改并提交,所以就会导致多次读取统一数据的结果不一致,即不可重复读。很多数据库默认的就是这个级别。

可重复读

在这个隔离级别下,一个事务在读取数据时,其他事务不能对数据进行修改,因此就保证了同一事务多次读取数据的结果一致。但是这个隔离级别仍然不能保证不发生幻象问题。MySQL数据库默认为该级别。

可串行化

该级别是最高的隔离级别,从名字便可以看出,事务并发执行的结果和串行执行的结果一致。这个级别可以保证不出现幻象问题。

总结

数据库通过设置事务隔离级别对事务并发进行控制,可以减少并发问题。但是隔离级别应该按照需求来设置,不能一味的认为最高的隔离级别就是最好的。事务隔离是通过锁来实现的,事务隔离级别越高,则并发程度就越低。高级别的事务隔离会降低执行效率,因此应当根据需要来选择合适的隔离级别。

下载本文
显示全文
专题