首页 > 数据库技术 > 详细

临时表与X锁给tempdb带来的压力

时间:2015-09-24 14:26:41      阅读:284      评论:0      收藏:0      [点我收藏+]

近日,和同事讨论一个性能的问题时,发现临时表在insert等操作时会在tempdb中产生X锁,数量随insert的数目不同而不同。

之前我总以为,临时表很好用,用完就drop,或者存储过程执行完了,临时表会自动drop掉,多轻松啊,完全不留一丝痕迹!

经测试,事实并非如此,用临时表也是有代价的!其中之一就是X锁,这个种锁如果不做commit或rollback操作,是不会释放的。本地l临时表在存储过程执行完后并不会自动删除,只有当用户与 SQL Server 实例断开连接后,本地临时表才会删除。如果大量的报表使用存储过程,用到临时表,且有insert等操作,执行就会产生X锁。如并发很多,或执行多次,岂不是会产生大量的X锁?如不及时释放,那不是越积越多?会给SQL Server增加大量的维护成本?而且,这种并发很多或执行很多的情况是存在的,例如很多报表,用户每天要查,而且可能查很多次,而且事务又不会commit或rollback。

所以,看来用到临时表处理的报表也要在性能上注意锁的问题了。以免一不小心给tempdb造成巨大的压力!

临时表与X锁给tempdb带来的压力

原文:http://www.cnblogs.com/zhouzx/p/4834965.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!