C# 数据库并发的解决方案(通用版、EF版)

还是那句老话:十年河东,十年河西,莫欺骚年穷!~_~ 打错个字,应该是莫欺少年穷!

学历代表你的过去,能力代表你的现在,学习代表你的将来。

学无止境,精益求精。

自ASP.NET诞生以来,微软提供了不少控制并发的方法,在了解这些控制并发的方法前,我们先来简单介绍下并发!

并发:同一时间或者同一时刻多个访问者同时访问某一更新操作时,会产生并发!

针对并发的处理,又分为悲观并发处理和乐观并发处理

所谓悲观/乐观并发处理,可以这样理解:

悲观者认为:在程序的运行过程中,并发很容易发生滴,因此,悲观者提出了他们的处理模式:在我执行一个方法时,不允许其他访问者介入这个方法。(悲观者经常认为某件坏事会发生在自己身上)

乐观者认为:在程序的运行过程中,并发是很少发生滴,因此,乐观者提出了他们的处理模式:在我执行一个方法时,允许其他访问者介入这个方法。(乐观者经常认为某件坏事不会发生在自己身上)

那么在C#语言中,那些属于悲观者呢?

在C#中诸如:LOCK、Monitor、Interlocked 等锁定数据的方式,属于悲观并发处理范畴!数据一旦被锁定,其他访问者均无权访问。有兴趣的可以参考:锁、C#中Monitor和Lock以及区别

但是,悲观者处理并发的模式有一个通病,那就是可能会造成非常低下的执行效率。

在此:举个简单例子:

售票系统,小明去买票,要买北京到上海的D110次列车,如果采用悲观者处理并发的模式,那么售票员会将D110次列车的票锁定,然后再作出票操作。但是,在D110次列车车票被锁定期间,售票员去了趟厕所,或者喝了杯咖啡,其他窗口售票员是不能进行售票滴!如果采用这种处理方式的话,中国14亿人口都不用出行了,原因是买不到票 ~_~

因此:在

时间: 2024-10-06 03:33:03

C# 数据库并发的解决方案(通用版、EF版)的相关文章

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 原理and实现

Atitit.并发测试解决方案(2) -----获取随机数据库记录 随机抽取数据 随机排序 1. 应用场景 1 2. 随机抽取数据原理 1 3. 常用的实现方法:::数据库随机函数 1 4. Mssql 的实现 NEWID() 跟rand()  1 5. newid()与rand()的区别 2 6. NEWID() 2 7. 参考 2 1. 应用场景 并发测试 2. 随机抽取数据原理 原理是 循环所有的ID/记录,附加随机函数字段,然后排序as 这个字段.. 3. 常用的实现方法:::数据库随机

Atiti  attilax主要成果与解决方案与案例rsm版

Atiti  attilax主要成果与解决方案与案例rsm版 1. ##----------主要成果与解决方案与 参与项目1 ###开发流程系列1 ###架构系列 (au1 ###编程语言系列与架构系列(au1 ###爬虫与发帖机,数据挖掘采集器系列 (au2 ###文字文本处理 自然语言处理 日历处理系列 结构化查询 大数据查询系列 au2 ###图像图片处理 分类 查询检索 识别 加密系列 au3 ##界面gui 与游戏引擎 与数据可视化系列 (au3 ###安全系列 (au4 ###oth

Atiti  attilax主要成果与解决方案与案例rsm版 v4

Atiti  attilax主要成果与解决方案与案例rsm版 v4 版本历史记录1 1. ##----------主要成果与解决方案与 参与项目1 ###开发流程与培训系列1 #-----组织运营与文化建设系列1 ###编程语言系列与架构系列(au2 ##界面gui 与游戏引擎 与数据可视化系列 (au2 #----跨结构化数据查询 与大文件数据查询 分布式数据处理系列 爬虫与发帖机,数据挖掘采集器系列au3 ###文字文本处理 自然语言处理 日历处理系列3 ##--------图像图片处理 分

Atiti  attilax主要成果与解决方案与案例rsm版 v2

Atiti  attilax主要成果与解决方案与案例rsm版 v2 1. ##----------主要成果与解决方案与 参与项目1 ###开发流程与培训系列1 #-----组织运营与文化建设系列1 ###编程语言系列与架构系列(au1 ###爬虫与发帖机,数据挖掘采集器系列 (au2 ###文字文本处理 自然语言处理 日历处理系列2 #----跨结构化数据查询 与大文件数据查询 分布式数据处理系列 au3 ###图像图片处理 分类 查询检索 识别 加密系列 au3 ##界面gui 与游戏引擎 与

大数据和高并发的解决方案汇总

大数据和高并发的解决方案汇总 1.3海量数据解决方案 1.使用缓存: 使用方式:1,使用程序直接保存到内存中.主要使用Map,尤其ConcurrentHashMap. 2,使用缓存框架.常用的框架:Ehcache,Memcache,Redis等. 最关键的问题是:什么时候创建缓存,以及其失效机制. 对于空数据的缓冲:最好用一个特定的类型值来保存,以区别空数据和未缓存的两种状态. 2.数据库优化: 1,表结构优化. 2,SQL语句优化,语法优化和处理逻辑优化.可记录各语句执行时间,有针对性的分析.

SQL Server数据库大型应用解决方案总结(转载)

转载地址:http://hb.qq.com/a/20120111/000216.htm 随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题.对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载.对于系统的稳定性和扩展性造成了极大的问题. 一.负载均衡技术 负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作.共同负载.均衡压力,对客户端来说,整个群集可以视为一台具有超高性能的独立服务器.

PHP中大数据和高并发的解决方案汇总

大数据和高并发的解决方案汇总 1.3海量数据解决方案 1.使用缓存: 使用方式:1,使用程序直接保存到内存中.主要使用Map,尤其ConcurrentHashMap. 2,使用缓存框架.常用的框架:Ehcache,Memcache,Redis等. 最关键的问题是:什么时候创建缓存,以及其失效机制. 对于空数据的缓冲:最好用一个特定的类型值来保存,以区别空数据和未缓存的两种状态. 2.数据库优化: 1,表结构优化. 2,SQL语句优化,语法优化和处理逻辑优化.可记录各语句执行时间,有针对性的分析.

SqlIte数据库并发性

把遇到的一些小问题都记下来,告诉自己,一些小细节会铸成打错的 今天没事复习以前的知识,用sqlite做数据库,发现修改数据的时候等好久才有反应,而且还失败,可是过一会之后又会好,好了以后又是一样,种以为是自己的语句有问题,测试了好多次,感觉没问题,在到网上查查错误才发现,原来sqlite不可以并发处理数据,我要说的不是这个问题,一个好的习惯可以避免所有的小问题,前面的解决方法就是把datareader等要释放的释放,关闭的关闭就可以,这本来就是要的,但是自己却没有这么做,这一个小问题纠结了我一个

MySql数据库并发和事务资料汇总

InnoDB多版本并发控制-MVCC http://my.oschina.net/xinxingegeya/blog/208821 MySql并发控制 http://my.oschina.net/xinxingegeya/blog/215417 MySQL之事务 http://my.oschina.net/xinxingegeya/blog/215419 MySql命令行控制事务 http://my.oschina.net/xinxingegeya/blog/296459 MySQL事务隔离级别