日期:2014-05-17  浏览次数:20460 次

求大神指点,sqlserver 数据库并发,造成数据多次更改
 数据库里用户表,有个余额字段,数字量高峰期的时候,同一秒中内同个用户余额,有时候频繁更新几十次,每次更新会插入更新明细记录表,对应的有使用数据库事物。
问题是更新结果明细只插入一条,余额有时候跟新了两次。具体原因百思不得其解,通过sqlserver Profiler也监测不出问题来,请大神指点,痛哭流涕,不慎感激
数据库?并发 sqlserver 数据有误

------解决方案--------------------
这个代码是不是你写的?
应该去了解为什么要这样控制数据,是不是因为业务逻辑的需要?只要它数据正确,运行符合业务逻辑要求,更新多次不是不可以。
------解决方案--------------------
引用:

事务是有用上,具体没深入了解,不像是事务过程多次执行,到有点像用户余额被更新了

userinfo是记录余额的表吗?
你怎么知道执行了多次?AccountDetails中记录了相同的记录多次吗?
------解决方案--------------------
更新不会多,只会是插入少了

这种情况,必须自己加串行化,否则更糟的事情都会发生。。。
------解决方案--------------------
在程序无bug的前提下,有两种办法
1.提高事务的隔离级别,会降低性能
2.放弃绝对一致性,采用最终一致性;利用对账程序来对齐余额
------解决方案--------------------
更新之前先锁表,更新后再释放表