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

临时表,tempdb,死锁
由于我们得业务是服务类的,常常在9点正的时候,会有很多作业执行,通过日志我发现经常出现死锁。
检查得知这些作业大多都使用select into到#临时表。
于是为了不共同访问tempdb造成死锁(我猜测的),于是,我把这些作业改为@表变量,以求把数据存在内存中,避免死锁。
但是我今天看到下面这句话:
“只有当数据量足够小或内存足够大时,表变量才会存与内存,否则存在tempdb.”
那么,即使我使用@表变量,如果存在tempdb,那么也会给tempdb大量上锁后造成死锁(我猜测的)
我们这种情况该如何处理?(9点这一时刻,大量作业同时执行)

------解决方案--------------------
1.表变量不会存在tempdb中
2.如果条件应许,可以在job调用的sql中设置允许脏读