日期:2014-05-18  浏览次数:20372 次

数据库并发问题?(100分)
每次应聘都会问到这个问题~
数据库并发,怎么解决?
求高人指点,越详细越好!
最好是个人的理解,不要去网上荡!

------解决方案--------------------
用数据库事务来控制.
------解决方案--------------------
可以上我的博客看看,我找了几篇相关的文章。
blog.sina.com.cn/rbp sqlserver的话可以用事务处理+存储过程解决
------解决方案--------------------
原来是数据库原理没学好
------解决方案--------------------
呵呵~原理确实没学好!~
=======
那最好现找本书看看,什么是并发性,什么是事务,如何事务处理

产品化数据库都支持事务处理,但是实现策略各不一直,具体看手册
------解决方案--------------------
如果我问这个问题,我不是想知道对方是否知道事务处理这么初等的概念,而是想知道是否有从使用事务造成失败(死锁)中获得的经验,例如:

事务应该尽量维持在“瞬间”完成,例如2秒钟以内完成。否则就应该修改业务逻辑设计、改为异步执行等等。
------解决方案--------------------
哦,搬个凳子听课喽
------解决方案--------------------
用一个例子来理解一下吧
一个最常见的并发操作的例子是火车/飞机订票系统中的订票操作。例如,在该系统中的一个活动序列:

①甲售票员读出某航班的机票张数余额A,设A=10;

②乙售票员读出同一航班的机票张数余额A,也是10;

③甲售票员卖出一张机票,修改机票张数余额A=A-1=9,把A写回数据库;

④乙售票员也卖出一张机票,修改机票张数余额A=A-1=9,把A写回数据库。

结果明明卖出两张机票,数据库中机票余额只减少1。这种情况称为数据库的不一致性。这种不一致性是由甲、乙两个售票员并发操作引起的。在并发操作情况下,对甲、乙两个事务操作序列的调度是随机的。若按上面的调度序列行,甲事务的修改就被丢失。这是由于第4步中乙事务修改A并写回覆盖了甲事务的修改。

并发操作带来的数据库不一致性可以分为四类:丢失或覆盖更新、脏读、不可重复读和幻像读,上例只是并发问题的一种.

所以避免并发要用数据的用数据库事务来控制.就如cantops(翡翠梦境里的熊猫人)所说的
具体
BEGIN TRAN
插入语句1
获取刚才插入记录的ID
插入语句2
COMMIT --执行事务
IF @@Error> 0
BEGIN
ROLLBACK --如果错误就回滚刚才的插入
END
------解决方案--------------------
事务应该尽量维持在“瞬间”完成,例如2秒钟以内完成。否则就应该修改业务逻辑设计、改为异步执行等等。
==============================
不错
------解决方案--------------------
并发操作带来的数据库不一致性可以分为四类:丢失或覆盖更新、脏读、不可重复读和幻像读

赞成!

解决方法:用事物~~
------解决方案--------------------
并发操作带来的数据库不一致性可以分为四类:丢失或覆盖更新、脏读、不可重复读和幻像读,上例只是并发问题的一种.
这位说的到位
------解决方案--------------------
如果我问这个问题,我不是想知道对方是否知道事务处理这么初等的概念,而是想知道是否有从使用事务造成失败(死锁)中获得的经验
===========
我小学没有毕业,是不敢越级高中的


事务应该尽量维持在“瞬间”完成,例如2秒钟以内完成。否则就应该修改业务逻辑设计、改为异步执行等等。
========
除非实践经历,否则是不回有这种体会的!

------解决方案--------------------
学习
------解决方案--------------------
长见识了。和楼主共勉。
------解决方案--------------------
学习了。
------解决方案--------------------
不错