日期:2014-05-16  浏览次数:20533 次

SQLserver2008r2 事务进程与另一个进程被死锁在锁 | 通信缓冲区
本人开发网络游戏数据库用的是sqlserver 现在游戏同时在线600多人6W多人注册,每次登入都要select和update用户表一次,并且游戏过程中也有多次update,我使用的select和update 都没有进行多表组合查询都是最简单的SQL查询和更新,同时在线400人的时候还没有这个问题,最近玩家越来越多,这个问题就出来了,大神们快来帮帮忙
我可以确定 程序上绝对没有死锁情况,SQL语句方面也没有,并且也测试过用with(updlock) 也都不行
------解决方案--------------------
用Profiler里面的Locks->Deadlock graph 监控看看,如果看到了死锁图,就可以比较形象地展现死锁发生的过程,还可以看到锁的具体类型和过程里面的语句
------解决方案--------------------
并行度,和我猜测的一样,如果你的语句仅需要这样查的话,最快的方式是这样查:
SELECT TOP 1 rowcnt FROM sys.sysindexes WHERE id=OBJECT_ID('offline_user')  ORDER BY rowcnt DESC

------解决方案--------------------
可能原因:
1、代码低效
2、逻辑顺序有问题