今天给大家介绍的是SqlServer中tempdb的日志机制原理,这次我将通过实例给大家介绍下tempdb的日志机制.希望可以帮助到大家。
tempdb为什么比其他数据库快?估计95%以上的程序员们都一脸茫然.Tempdb作为Sqlserver的重要特征,一直以来大家对它可能即熟悉又陌生.熟悉是我们时时刻刻都在用,陌生可能是很少有人关注它的运行机制.
测试用例
我们分别在用户数据库(testpage),tempdb中创建相似对象t1,#t1,并在tempdb中创建创建非临时表,然后执行相应的insert脚本(用以产生日志),并记录执行时间用以比较用以比较说明tempdb”快”
Code
用户数据库testpage
1234567891011121314151617
use testpage
go
create
table
t1
(
id
int
identity(1,1)
not
null
,
str1
char
(8000)
)
declare
@t datetime2=sysutcdatetime()
declare
@i
int
set
@i=1
while (@i<100000)
begin
insert
into
t1
select
@i,
'aa'
select
@i=@i+1
end
select
[extime]=DATEDIFF(S,@t,sysutcdatetime())
tempdb
1234567891011121314151617
use tempdb
go
create
table
#t1
(
id
int
not
null
,
str1
char
(8000)
)
declare
@t datetime2=sysutcdatetime()
declare
@i
int
set
@i=1
while (@i<100000)
begin
insert
into
#t1
select
@i,
'aa'
select
@i=@i+1
end
select
[extime]=DATEDIFF(S,@t,sysutcdatetime())
非临时表在tempdb中执行
1234567891011121314151617
use tempdb
go
create
table
t1
(
id
int
not
null
,
str1
char
(8000)
)
declare
@t datetime2=sysutcdatetime()
declare
@i
int
set
@i=1
while (@i<100000)
begin
insert
into
t1
select
@i,
'aa'
select
@i=@i+1
end
select
[extime]=DATEDIFF(S,@t,sysutcdatetime())
由图1-1中我们可以看出,在普通表中执行一分钟的脚本,tempdb只需执行22s.而普通表在tempdb中也只需27s均大大优于普通表中执行情况.