临时表与表变量的深入探究(2)

来源:未知 责任编辑:责任编辑 发表时间:2015-09-17 09:42 点击:
if OBJECT_ID('tempdb..#T') is not null drop table #T
  www.2cto.com  
declare @b1 bigint, @b2 bigint
 
CREATE TABLE #T (s char(128))
 
SELECT @b1=num_of_bytes_written from sys.dm_io_virtual_file_stats(2, 2) 
declare @i int = 0
while @i<20000
BEGIN
  insert into #T select '临时表:原值'
  set @i=@i+1
END
 
use tempdb
checkpoint
select @b2=num_of_bytes_written from sys.dm_io_virtual_file_stats(2, 2) 
select @b2-@b1 as 日志增量   
 
--经测试,临时表日志增量  4851712
  www.2cto.com  
然后是表变量插入
 
use TestDB
declare @b1 bigint, @b2 bigint
declare @V table (s char(128))
select @b1=num_of_bytes_written from sys.dm_io_virtual_file_stats(2, 2) 
 
declare @i int = 0
while @i<20000
begin
  insert into @V select '表变量:原值'
  set @i=@i+1
end
use tempdb
checkpoint
select @b2=num_of_bytes_written from sys.dm_io_virtual_file_stats(2, 2) 
select @b2-@b1 as 日志增量
--经测试,表变量日志增量5007360
  www.2cto.com  
两者日志记录相差不多,表变量还比临时表的日志写入更多!
 
3)Lock上的不同表现
 
--临时表
if OBJECT_ID('tempdb..#T') is not null drop table #T
 
create table #T (s varchar(128))
insert into #T select '临时表:原值'
 
execute sp_lock @@spid  --查看当前用户进程的会话 所在的锁关系
 
BEGIN TRANSACTION
     update #T set s= '临时表:被更新'
     execute sp_lock @@spid  --发现增加了一个排他锁
ROLLBACK TRANSACTION
 
execute sp_lock @@spid  --排他锁被释放
  www.2cto.com  
GO
 
--表变量
declare @V table (s char(128))
insert into @V select '表变量:原值'
 
execute sp_lock @@spid
 
BEGIN TRANSACTION
     update @V set s='表变量:被更新'
     execute sp_lock @@spid
ROLLBACK TRANSACTION
 
execute sp_lock @@spid  --并没有在事务中加任何锁
 
临时表的更新会加锁,表变量更新不会
 
4)事务处理中的不同
 
if OBJECT_ID('tempdb..#T') is not null drop table #T
 
create table #T (s varchar(128))
declare @T table (s varchar(128))
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Request.ServerVariables 参数大全
  • 查看sql修改痕迹(SQL Change Tracking on Table)
  • 写给MongoDB开发者的50条建议Tip1
  • Percolator与分布式事务思考(二)
  • App数据层设计及云存储使用指南
  • PostgreSQL启动过程中的那些事三:加载GUC参数
  • SQL Server、Oracle、db2所提供的简装版(Express)比较
  • PostgreSQL 安装问题
  • 【自主研发-贡献给SQL Server人员】索引诊断与优化软件使用说明
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1