CastleActiveRecord在多线程 事务提交时数据库资源竞争导致更新失败的测试结果记录
// 摘要:
- // 指定连接的事务锁定行为。
- public enum IsolationLevel
- {
- // 摘要:
- // 正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。
- Unspecified = -,
- //
- // 摘要:
- // 无法覆盖隔离级别更高的事务中的挂起的更改。
- Chaos = ,
- //
- // 摘要:
- // 可以进行脏读,意思是说,不发布共享锁,也不接受独占锁。
- ReadUncommitted = ,
- //
- // 摘要:
- // 在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻像数据。
- ReadCommitted = ,
- //
- // 摘要:
- // 在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻像行。
- RepeatableRead = ,
- //
- // 摘要:
- // 在 System.Data.DataSet 上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行。
- Serializable = ,
- //
- // 摘要:
- // 通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。表示您无法从一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。
- Snapshot = ,
- }
Chaos是不支持的,Snapshot 必须修改数据库支持。
在多线程提交时,在提交时务时,主动将线程 挂起 300ms后再继续提交,配合 ReadCommitted模式
可以完成提交,但心中总是没有底。
其它模式 无论如何都无法得到正确的结果,ReadUncommitted 模式得到的结果是 错误的数据,因为事务过程得到的是脏数据。
CastleActiveRecord在多线程 事务提交时数据库资源竞争导致更新失败的测试结果记录的更多相关文章
- 关于java多线程任务执行时共享资源加锁的方式思考
1.加锁方式: 1-1.使用synchronized关键字进行方法或代码块的加锁方式 1-2.使用ReentrantLock类提供的lock()方法的方式 2.代码实现(传统的银行取款存款问题): 2 ...
- 解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)
文章转载自:http://www.cnblogs.com/amoniyibeizi/p/4486617.html 前几天学MVC过程中,遇到更改Model类以后,运行程序就会出现数据已更改的问题导致调 ...
- C# 事务提交(非数据库)
.Net 2.0开始支持 static void Main(string[] args) { using (TransactionScope ts = new TransactionScope()) ...
- 左右mysql事务提交
package com.itheima.trans; import java.sql.Connection; import java.sql.PreparedStatement; import jav ...
- 深入GCD(五):资源竞争
概述我将分四步来带大家研究研究程序的并发计算.第一步是基本的串行程序,然后使用GCD把它并行计算化.如果你想顺着步骤来尝试这些程序的话,可以下载源码.注意,别运行imagegcd2.m,这是个反面教材 ...
- 4.事务提交过程,交易的基本概念,Oracle交易周期,保存点savepoint,数据库的隔离级别
事务提交过程 事务 基本概念 概念:一个或者多个DML语言组成 特点:要么都成功.要么都失败 事务的隔离性:多个client同一时候操作数据库的时候.要隔离它们的操作, 否则出现:脏读 不可反 ...
- 为DbContextScope添加数据库事务提交完成事件
使用EF开发应用程序的一个难点就在于对其DbContext的生命周期管理,你的管理策略是否能很好的支持上层服务 使用独立事务,使用嵌套事务,并行执行,异步执行等需求? Mehdi El Gueddar ...
- SQL Server 2014:在修改表的内容时,提示“此单元格已更改,尚未将更改提交到数据库”,怎么处理?
那一行上的属性为“不允许为null”的所有字段都填上对应信息,按回车键或者点击下一行任意一个单元格便会自动将更改的信息提交到数据库.
- mysql源码解读之事务提交过程(二)
上一篇文章我介绍了在关闭binlog的情况下,事务提交的大概流程.之所以关闭binlog,是因为开启binlog后事务提交流程会变成两阶段提交,这里的两阶段提交并不涉及分布式事务,当然mysql把它称 ...
随机推荐
- yii2发送邮件教程
作者:白狼 出处:http://www.manks.top/article/yii2_swiftMailer本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接, ...
- yii2 如何在页面底部加载css和js
作者:白狼 出处:www.manks.top/article/yii2_load_js_css_in_end 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ...
- Biee 迁移和刷新GUIDs
Biee11g迁移 与刷新 一.停止biee服务 二.备份文件 1. rpd文件夹路径: biee_home\instances\instance1\bifoundation\Oracle ...
- Web Service 的工作原理
Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的 ...
- TechEd2013 Shanghai Hol Session PPT Share
上个月去上海参加了TechEd 2013,并且参与了Hands-on-Lab环节,作为讲师引导大家完成<Local DB in WP8>实验的内容.由于实验的内容采用MVVM架构完成,因此 ...
- Filestream 使用简单步骤
为了减少大文件在数据库的存储对数据库的读写效率造成的压力,多了FileStream这一个功能,下面介绍一下如何快速使用FileStream. 1.开启SqlServer实例对FileStream 的开 ...
- 在java中使用RBL服务器(中国反垃圾邮件联盟的CBL+使用)
这是06年写的,不知道现在RBL改了没,不过恢复过来做记录,以后可能需要. 实时黑名单(RBL)实际上是一个可供查询的IP地址列表,通过DNS的查询方式来查找一个IP地址的A记录是否存在来判断其是否被 ...
- 学会使用简单的 MySQL 常用操作
一.MySQL 数据库的基本安装 # yum 安装 mysql 版本:5.1.73 [root@mysql ~]# yum install -y mysql-server mysql # 启动 MyS ...
- LeetCode #303. Range Sum Query
问题: Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclu ...
- Eclipse 工程Clear与build的作用
由于eclipse的编译是基于时间戳的判断机制的.因此当你按build all的时候有些eclipse认为时间戳没有改变的类不会被编译.因此你可以先clean一下再编译.这个时候eclipse会将所有 ...