日期:2014-05-20  浏览次数:20670 次

我到底该不该用存储过程或者事务呢
入行也5年了,公司一直做企业内部的一些应用,B/S结构为主,用的是Sql Server,最近接手一个类似微博的东西,遇到个比较纠结的问题,其实也困扰了很长就是,就是数据库中对于一个原子性的操作该不该在存储过程中通过事务来处理呢,比如以下需求:我发送一条微博,这个肯定要向微博表中插入数据,发送微博还有经验值需要加,这个也是另外的表,既然加经验值了,肯定也有日志表,也就是说这些操作都是一起的,原子的。以前做的话,肯定使用事务来控制,因为以前都是内部应用,不需要考虑性能这些问题,但是现在这个是对外开放的网站,这些东西都需要考虑进去,我也参考了很多开源的项目,比如DiscuzNT,但是它就很少使用事务,类似以上需求,插入微博表,插经验表这些操作甚至分布在不同的函数里面,也就意味着不可能在同一个事务里了,那么这样写会不会有问题呢,比如极端的情况,在插入微博表之后,就出错了,那么加经验肯定无法顺利执行,像这种情况,如何避免?该不该用事务或者存储过程,那些没有用的项目,他们是如何避免之前说的情况的呢?

------解决方案--------------------
应该使用事务。而且事务也不难以使用。
------解决方案--------------------
用事务要小心有可能造成死锁。
------解决方案--------------------
不太了解这方面。
卡看下面的文章有没有帮助:

Performance Comparison: Transaction Control
http://msdn.microsoft.com/en-us/library/ms978408.aspx
------解决方案--------------------
使用事务还是有必要的吧,不认怎么保证数据的安全
------解决方案--------------------
对于LZ说的这种情况,还是有必要用到事务的
------解决方案--------------------
MS SQL中可以为连接开启隐式事务,当SQL Server 执行任何语句时,都会自动启动一个事务 

------解决方案--------------------
探讨
我也觉得,但是看了很多.net的项目,包括开源的或者是试用版的,也都装了试了一下,反正数据库都能看到,有的也用到存储过程,里面也没有事务控制,好几条insert 或者update语句,顺序写在一起,没有事务控制,是我想多了还是他们不负责任呢,呵呵 ~~~