有100个用户 同时对A表做插入操作,插入过程中采用了事务,但是响应比较慢,然后A表就被锁住了。。。。跪求解决方案。。。。
如果能取消事务的话,取消试试。
因为插入有多条记录,事务是不能取消的
@zuohuiming: 你优化一下代码, 看能不能使提高插入速度。
事务操作时要对表加锁的,多并发时肯定会慢的。
你有对多个表同时插入操作吗
采用队列。
请问有队列的相关资料吗?以前也听说过这个方案,或者麻烦说个大概的思路
@zuohuiming: msmq
@zuohuiming: PetShop 4.0 中就有个MSMQ使用的典型案例
如果100个用户都操作自己一行的数据,那还需要用到事务吗?
关键看你代码怎么写的,写放时是操作一个表的话不需要加事务的
代码写的不好,你把代码给个牛人,给你优化一下就好了。可以批量提交的,一次提交个几百个SQL语句都没问题的。
首先楼主要区分一下锁和死锁。这是两个概念。
这种情况通常会在程序中设计缓存层,然后在批量插入,或者按照业务范围进行插入。
宋大侠都出马了~~~
试一试
http://www.cnblogs.com/shikyoh/archive/2011/07/01/2095633.html
首先区分锁与死锁。查询DMV里面锁的状态是死锁还是锁等待。避免死锁无非就几个思路。 降低锁的粒度。 如何降低。有几个方案。
1.从需求考虑增加合适的索引,移除不必要的索引
2.调整数据库事务隔离级别
3.启用快照隔离
4.使用行版本控制的已提交读
使用以上策略需要楼主考虑
1.最终用户是否接受行版本控制下的运行结果
2.SQL Server是否能支持行版本控制带来的额外负荷
另外补充一点,如果是死锁。 那造成死锁的原因并不仅仅是这100个用户同时插入导致。 涉及到该表的查询修改删除。也会造成死锁。
如果数据允许脏读的话, 修改事务隔离级别为“未提交读”。 应该会有所改善。
哈哈,说句大话,读写分离!
如果100个用户都操作自己一行的数据,那还需要用到事务吗?!!!!!!!!!!!111
自己的数据,怎么需要事务呢?
多半是因为你用的数据操作框架出了问题.
sql updlock