您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> 数据库综合 >> 正文

SqlServer中tempdb的日志机制原理解析及示例分享

作者:佚名    责任编辑:admin    更新时间:2022-06-22

今天给大家介绍的是SqlServer中tempdb的日志机制原理,这次我将通过实例给大家介绍下tempdb的日志机制.希望可以帮助到大家。

tempdb为什么比其他数据库快?估计95%以上的程序员们都一脸茫然.Tempdb作为Sqlserver的重要特征,一直以来大家对它可能即熟悉又陌生.熟悉是我们时时刻刻都在用,陌生可能是很少有人关注它的运行机制.

测试用例

我们分别在用户数据库(testpage),tempdb中创建相似对象t1,#t1,并在tempdb中创建创建非临时表,然后执行相应的insert脚本(用以产生日志),并记录执行时间用以比较用以比较说明tempdb”快”

Code

用户数据库testpage

 

1234567891011121314151617use testpage go create table t1 ( id int identity(1,1) not null, str1 char(8000) )   declare @t datetime2=sysutcdatetime() declare @i intset @i=1 while (@i<100000) begininsert into t1 select @i,'aa'select @i=@i+1 endselect [extime]=DATEDIFF(S,@t,sysutcdatetime())

tempdb

 

1234567891011121314151617use tempdb go create table #t1 ( id int not null, str1 char(8000) )   declare @t datetime2=sysutcdatetime() declare @i intset @i=1 while (@i<100000) begininsert into #t1 select @i,'aa'select @i=@i+1 endselect [extime]=DATEDIFF(S,@t,sysutcdatetime())

非临时表在tempdb中执行

 

1234567891011121314151617use tempdb go create table t1 ( id int not null, str1 char(8000) )   declare @t datetime2=sysutcdatetime() declare @i intset @i=1 while (@i<100000) begininsert into t1 select @i,'aa'select @i=@i+1 endselect [extime]=DATEDIFF(S,@t,sysutcdatetime())

由图1-1中我们可以看出,在普通表中执行一分钟的脚本,tempdb只需执行22s.而普通表在tempdb中也只需27s均大大优于普通表中执行情况.