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

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

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

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

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

转载于:https://www.cnblogs.com/zhouzx/p/4834965.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值