最新活动:电脑PC端+手机端+微网站+自适应网页多模板选择-建站388元起价!!!
当前位置:主页 > 网站建设 > SQL Server误区30日谈 第19天 Truncate表的操作不会建

SQL Server误区30日谈 第19天 Truncate表的操作不会建

时间:2023-05-23 16:05:23 阅读: 文章分类: 网站建设 作者: 网站编辑员

导读:1建站知识这个误区也同样流传已久,我想是时候通过一些Demo进行揭穿了网站建设公司网站建设。

网站建设公司网站建设误区 #19:Truncate表的操作不会被记录到日志 错误 在用户表中的操作都会被记录到日志。在SQL Server中唯一不会被记录到日志的操作是TempDB中的行版本控制。 Truncate Table语句会将整个表中的所有数据删除。但删除的方式并不是一行一行的删除,而是将组成表的数据页释放,将组成表的相关页释放的操作交给一个后台的线程进行队列处理的过程被称为deferred-drop。使用后台线程处理deferred-drop的好处是这个操作不会使得其所在的事务需要执行很长时间,因此也就不需要大量的锁。在SQL Server 2000SP3之前的版本(这个版本引入了deferred-drop)在Truncate Table的时候出现过多的锁耗尽内存的事是家常便饭。 下面是测试代码:

复制代码 代码如下:

CREATE DATABASE TruncateTest; GO USE TruncateTest; GO AL网站推广优化seoTER DATABASE TruncateTest SET RECOVERY SIMPLE; GO CREATE TABLE t1 (c1 INT IDENTITY, c2 CHAR (8000) DEFAULT 'a'); CREATE CLUSTERED INDEX t1c1 on t1 (c1); GO SET NOCOUNT ON; GO INSERT INTO t1 DEFAULT VALUES; GO 1280 CHECKPOINT; GO

上面的测试数据库恢复模式是简单,所以每个Checkpoint都会截断日志(仅仅是为了简单,哈哈)。 一分钟后让我们来看看日志中有多少条记录。

复制代码 代码如下:

SELECT COUNT (*) FROM fn_dblog (NULL, NULL); GO

可以看到,现在的日志条目数字为2。 如果你得到的数字不是2,那么再做一次Checkpoint直到数据是2为止。 现在已有的日志已经知道了,那么日志的增长就是由于后面的操作所导致。下面我们执行如下代码:

复制代码 代码如下:

TRUNCATE TABLE t1; GO SELECT COUNT (*) FROM fn_dblog (NULL, NULL); GO

可以看到现在已经有了541条日志记录。很明显Truncate操作是需要记录到日志中的。但也可以看出Truncate并不会逐行删除,因为这541条日志记录删除的是1280条数据。 执行下面语句来查看日志:

复制代码 代码如下:

SELECT [Current LSN], [Operation], [Context], [Transaction ID], [AllocUnitName], [Transaction Name] FROM fn_dblog (NULL, NULL);

公司网站建设 下面是结果:

通过日志可以看出第一条显式开始Truncate Table事务,最后一条开始DeferredAlloc。正如你网站建设哪家好所见,Truncate操作仅仅是释放了构成表的页和区。 下面这个代码可以查看日志具体所做操作的描述:

复制代码 代码如下:

SELECT [Current LSN], [Operation], [Lock Information], [Description] FROM fn_dblog (NULL, NULL); GO

结果如图2:

你可以看出为了快速恢复的目的而加的相关锁(你可以在我的博文:Lock logging and fast recovery中了解更多)。

由上面日志看出,这个操作会对8个页加相关的锁,然后整个区一次性释放。释放过后会对相关的区加IX锁,也就是不能再被使用,当事务提交后才会进行deferred-drop,因此也就保证了Truncate table操作可以回滚。

关键词标签: 误区 操作 SQL

声明: 本文由我的SEOUC技术文章主页发布于:2023-05-23 ,文章SQL Server误区30日谈 第19天 Truncate表的操作不会建主要讲述误区,操作,SQL网站建设源码以及服务器配置搭建相关技术文章。转载请保留链接: https://www.seouc.com/article/web_5971.html

我的IDC 网站建设技术SEOUC.COM
专注网站建设,SEO优化,小程序设计制作搭建开发定制网站等,数千家网站定制开发案例,网站推广技术服务。
  • 5000+合作客服
  • 8年从业经验
  • 150+覆盖行业
  • 最新热门源码技术文章