好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

SQLServer误区30日谈第19天Truncate表的操作不会被记录到日志

误区 #19:Truncate表的操作不会被记录到日志

错误



在用户表中的操作都会被记录到日志。在SQL Server中唯一不会被记录到日志的操作是TempDB中的行版本控制。

Truncate Table语句会将整个表中的所有数据删除。但删除的方式并不是一行一行的删除,而是将组成表的数据页释放,将组成表的相关页释放的操作交给一个后台的线程进行队列处理的过程被称为deferred-drop。使用后台线程处理deferred-drop的好处是这个操作不会使得其所在的事务需要执行很长时间,因此也就不需要大量的锁。在SQL Server 2000SP3之前的版本(这个版本引入了deferred-drop)在Truncate Table的时候出现过多的锁耗尽内存的事是家常便饭。

下面是测试代码:

代码如下:

查看更多关于SQLServer误区30日谈第19天Truncate表的操作不会被记录到日志的详细内容...

  阅读:58次