随笔- 54  文章- 3  评论- 762  阅读- 39万 

  事务有4个关键的属性,一般称为ACID:

  •   原子性 一次事务的工作不能再划分为更小的部分。不管一个事务里是否包含多条SQL语句,要么全部都执行,要不全部都不执行
  •   一致性 事务必须操作一致性的数据视图,必须使数据处于一致的状态
  •   孤立性 事务是独立运行的实体,一个事务不能影响其它正在运行的事务
  •   持久性  提交事务时,必须持久化。

 

  事务的孤立级别有以下操作:

  •   Dirty读取操作    能够读取还没有提交的数据。比如一个事务对某些行集的数据进行了修改,但是还未提交该事务,这时候另一个事务能够读取到这些已更新的事务,如果前一个事务回滚了,这会造成大问题。
  •   NoRepeatable读取操作    指的是一个事务多次读取同一行数据时,另一个事务在该过程中修改该行的数据。
  •   Phantom读取操作    指一个事务多次读取同一个行集时,另一个事务在该过程中添加或删除该行集的行。

 

 ADO.NET中事务的孤立级别:

  •   Read Uncommitted    其它事务的修改情况能够对某个事务的查询造成影响。支持Dirty,NoRepeatable,Phantom读取操作。如果设置为该级别,无并发模型,在读取过程中,不会获取锁也不会使用锁。
  •   Read Committed    这是SQL Server的默认设置。已提交的更新在事务间是可见的,支持NoRepeatable,Phantom读取操作。
  •   SnapShot    相当于另外实现的Read Committed,表示在一个事务中读取的数据永远也不会反映同时进行的其它事务的修改。事务使用事务开始时候存在的数据行版本,它不会获取锁。(Sql Server 2005支持)
  •   Repeatable Read    在一个事务中,所有的读取操作都是一致的,其它事务不能影响该事务的查询结果。支持Phantom读取操作
  •   Serializable  在所访问的行集上放置一个范围锁,防止在该事务完成之前,其它用户更新数据集或者添加、删除该数据集。
 posted on   紫色阴影  阅读(709)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
我要啦免费统计
点击右上角即可分享
微信分享提示