`
touchinsert
  • 浏览: 1287829 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

数据库并发处理方法

 
阅读更多

1、如果仅仅考虑技术问题,那么肯定会得出最坏的解答,因为技术是没有智能的、最笨的东西,只有先用智能后用技术才能解决问题。
  
  “查询-订票-收款-出票”是一个事务不假,但是它并不是一个1、2秒钟的数据库操作事务,而是一个持续较长时间(例如超过10秒钟)的业务。试想一下,如果一个终端在处理一张车票的时候所有其它几百的终端都被阻塞——“死机”——在这里了,或者幻读、赃读的终端每处理10次票仅能成功1次,而其它9次都会在操作员操作最后一步才出现提示“记录已经被修改,您的操作被回滚放弃,请重新执行订票流程”,这是多么让人懊恼的恶劣设计呀!
  
  其实流程很简单,就是在订票开始就将票从“无人订购”表移到一个“正在处理”的表中。订票点的操作,收款、出票等,都是针对“正在处理”表中具体的票资源的操作,并不去动别人正在处理的票。订票点可以放弃处理从而把票放回“无人订购”的表中,也有可能后台会在超时(例如2分钟)之后自动处理这个。
  
  事务锁不是一个业务处理的概念,而是一个处理软件编码的后期细节的技术。如果大家都把高级的业务流程当成低级的计算机技术来看待,会给用户带来无尽的烦恼,会产生大量成事不足的“错误地技术化了”的解决方案。

提供的解决办法还有一点问题,将“无人订购”表移到“正在处理”的表时机如何掌握。如果是查询时移动,到底要移走多少张票(我们买票时都是先只告知车次,售票点查询之后再问我们要几张票),如果全数移入“正在处理”的表,那此时别的地方查询时就只能显示车次的票售完;如果是先查询,在出票时才移动,票可能已经被别的地方售出了,购买会失败。

2、DbCommandBuilder中
  public enum ConflictOption
  该枚举
  CompareRowVersion
  如果表中存在任何 Timestamp 列,则这些列在 WHERE 子句中用于所有生成的更新语句。这等效于指定 CompareRowVersionUpdate | CompareRowVersionDelete。
  
  
  net2.0中使用DbDataAdapter更新数据库。套用DbCommandBuilder自动生成的sql语句,where部分卡的很严格的,基本字段都要在where后面卡一下。如果有高精度的字段存在,可以防止并发。

3、事实上火车票的售票系统肯定是不会简单的用事务来避免并发的。
  
  可以为每一个售票窗口预留一些车票,如10张,售一张就请求一张未售的票加入预留队列,但未售的车票达到某个临界值时,如20张,就开始按照各个售票窗口的出货情况和缺货情况来分配

分享到:
评论

相关推荐

    三份数据库并发处理方案

    数据库并发处理方案,数据库并发控制技术的研究等,其中 包括了3个文件,PDF格式,主要是讲数据库并发处理

    数据库并发处理控制 pdf

    8.1 并发控制概述 8.2 封锁 8.3 封锁协议 8.4 活锁和死锁 8.5 并发调度的可串行性 8.6 两段锁协议 8.7 封锁的粒度 8.8 Oracle的并发控制 8.9 小结

    数据库并发控制的基本方法

    讲述了数据库中的并发控制,包括事务处理,加锁机制,以及恢复,日志记录

    数据库的事务处理与并发控制

    数据库处理的经典资料: 叫你处理事务 如何并发处理 瞧瞧吧 机不可失哟

    数据库的并发控制

    计算机的主要应用之一就是数据处理,作为核心技术的数据库是共享资源,允许多个用户同时使用实现并发操作,会导致数据不一致性问题。因此数据库管理系统必须提供并发控制的机制,选取合适的控制方法来实现最优性能。

    数据库思维导图——并发控制

    数据库思维导图——并发控制 并发控制 多事务执行方式 (1)事务串行执行 每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行 不能充分利用系统资源,发挥数据库共享资源的特点 (2)交叉并发方式...

    数据库并发控制技术论文

    数据库 并发控制 核心论文 2PC是指Oracle的两阶段提交协议(Two-Phase Commit protocol)。 2PC用于确保所有分布式事务能够同时提交(Commit)或者回滚(Rollback),以便使的数据库能够处于一致性状态(consistent ...

    数据库并发控制机制——事务

    这是一个关于银行的数据库的处理,模仿的是从账户1转账给账户2一百块钱,其中有两个操作,一个是帐户一减钱,账户二加钱,这两个操作要么一起执行,要么一起不执行,那如果处理只执行了一个步骤呢?那就需要用到事务...

    论文研究 - 键值NoSQL数据库的冲浪并发事务处理模型

    使用提出的模型,可以以无锁和无MVCC(多版本并发控制)的方式执行键值NoSQL数据库的事务。 这是对相关主题进行进一步研究的结果,填补了该领域相关学者所忽略的空白,为NoSQL技术的进一步发展做出了一点贡献。

    java高并发写入用户信息到数据库的几种方法

    本文主要介绍了java高并发写入用户信息到数据库的几种方法,具有很好的参考价值。下面跟着小编一起来看下吧

    数据库的事务处理和并发控制

    当用户对数据库并发访问时,为了确保事务完整性和数据库一致性,需要使用锁定。事务和锁是两个紧密联系的概念。通过事务、批和锁的使用,还可以监测系统,以及优化物理数据库。作业是一种多步执行的任务。 本章主要...

    SQL数据库中并发控制的方法初探.pdf

    SQL数据库中并发控制的方法初探.pdf

    《实时数据库系统的并发控制方法》

    实时事务根据其功能分为三类:数据接收事务,控制事务和数据处理事务.这三类事务的并发性和原子性是不同的,针对这三类不同的事务采用不同的并发控制机制,提出了实时数据库事务并发控制的两种方法。

    浅谈数据库中事务处理和并发控制技术

    该文档主要浅谈了数据库事务处理和并发控制的技术,可以作为初学者的参考文档

    java多线程处理数据库数据

    java多线程处理数据库数据,使用并发包,无框架,可批量处数据库数据,进行增删改。。等等操作。

    MySQL 数据库如何解决高并发问题

    主要介绍了MySQL 如何处理高并发,帮助大家更好的优化MySQL数据库,感兴趣的朋友可以了解下

    MySQL数据库对并发事件的控制和处理.pdf

    MySQL数据库对并发事件的控制和处理.pdf

    实用数据库的并发控制剖析

    详细介绍数据库的并发控制特性及发生的条件,处理方式,引发并发问题的条件,锁定方式等等

    数据库事务处理

    SQL Server 2000数据库系统通过事务保证多个数据库操作在一起处理,而事务使用锁定技术来防止其他数据库用户来更新或读取末完成事务中的数据。同时,SQL Server数据库系统为了提高自身的性能,实现多用户之间数据的...

Global site tag (gtag.js) - Google Analytics