时间:2021-05-23
一般而言,最好让SQL Server以默认形式在隔离事务操作;毕竟,隔离是ACID模型的基本原则之一。但是,有时候因为业务需求的原因,数据库管理员不得不违背默认行为,而 是采取更灵活一点的方法来进行事务操作隔离。针对数据库管理员遇到的这类情况,SQL Serve提供了五种不同的事务操作隔离模式。在详细介绍这些事务操作隔离模式之前,必需先了管理员会遇到的数据库问题:
1.脏数据读写,这种情况发生在当一个事务读写由另一个事务修改而未提交的数据的时候。如果另一个事物永远都不提交其修改数据,那么第一个事务就永远都得到一个无效的值,即脏数据。
2.不可重复读写,这种情况发生在当一个事务在试图重复读取同一数据,而另一个事务在这第一个事务重复读取之前修改了此数据的时候。这样会使第一个事务在读取同一数据时获得两个不同的值,导致原始数据读取变成不可重复。
3.影象读写,这种情况发生在当一个事务在某一个表格中进行多次数据查询,而另一个事务插入或者删除满足查询条件的数据行。这会造成前一个事务获得或失去一个“影象”值。
SQL Server的每一种隔离模式都试图解决以上问题中的部分,使数据库管理员能够保持事务操作隔离和业务需求之间的平衡。以下是SQL Server的五种隔离模式:
1.读写提交隔离模式,这是SQL Server默认的隔离模式,数据库不允许事务操作读写由未提交的事务操作写的数据。这个模式可以防止产生脏数据读写,但是不能防止影象读写或不可重复读写的情况。
2.读写未提交隔离模式,这种模式基本在事务操作之间没有进行隔离。任何事务都可以读写由另一个未提交的事务写的数据。这种模式下,事务操作很容易出现脏数据读写、影象读写和不可重复读写的情况。
3.可重复读写隔离模式,比读写提交隔离模式更进一步,能够阻止事务修改正被另一个事务读写的数据,直到读写操作结束。这个隔离模式可以防止脏数据读写和不可重复读写的情况发生。
4.串行化隔离模式,这个模式运用范围锁防止一个事务在另一个事务对数据进行读取时插入或者删除数据行。串行化隔离模式能够防止上述三种情况的发生。
5.快照隔离模式,这个模式同样可以防止三种情况的发生,只是方法不同。它为每一个事务提供其查询数据的“快照”,事务可以查询快照,无需返回到源数据表格,从而防止产生脏数据读取。
如果想要改变SQL Server使用的隔离模式,只需要输入以下命令:
复制代码 代码如下:SET TRANSACTION ISOLATION LEVEL
可以用以下关键词代替:
· READ COMMITTED
· READ UNCOMMITTED
· REPEATABLE READ
· SERIALIZABLE
· SNAPSHOT
这些都是基本的SQL Server事务隔离模式。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
MySQL四种事务隔离级别详解及对比按照SQL:1992事务隔离级别,InnoDB默认是可重复读的(REPEATABLEREAD)。MySQL/InnoDB提供
隔离级别:隔离性其实比想象的要复杂。在SQL标准中定义了四种隔离级别,每一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的。较低级别的隔离通常可
人大金仓KingBase数据库产品功能如下:1、支持事务处理提供专门的事务控制ming令和事务隔离级别设定。一个事务可以由一条或多条SQL语句构成。事务的提交状
本文研究的主要是Spring事务隔离级别(solationlevel)介绍及例子,具体如下。当两个事务对同一个数据库的记录进行操作时,那么,他们之间的影响是怎么
本文实例讲述了mysql的事务,隔离级别和锁用法。分享给大家供大家参考,具体如下:事务就是一组一起成功或一起失败的sql语句。事务还应该具备,原子性,一致性,隔