SQL Server表变量对IO及内存影响测试

  次阅读 作者:智能小宝 来源:互联网 2016-01-27 15:41 我要评论(0)

1. 测试创建表变量对IO的影响

测试创建表变量前后,tempdb的空间大小,目前使用sp_spaceused得到大小,也可以使用视图 sys.dm_db_file_space_usage

14use tempdb

go

Set nocount on

Exec sp_spaceused /*插入数据之前*/

declare @tmp_orders table ( list_no int,id int)

insert into @tmp_orders(list_no,id)

select ROW_NUMBER() over( order by Id ) list_no,id

from Test.dbo.Orders

Select top(1) name,object_id,type,create_date

from sys.objects

Where type='U' Order by create_date Desc

Exec sp_spaceused /*插入数据之后*/

Go

Exec sp_spaceused /*Go之后*/

执行结果如下:

可以看到:

1) 在表变量创建完毕,同时批处理语句没有结束时,临时库的空间增大了接近9M空间。创建表变量的语句结束后,空间释放

2)在临时库的对象表sys.objects中能够查询到刚刚创建的表变量对象

继续验证是否发生IO操作,使用视图sys.dm_io_virtual_file_stats

在创建表变量前后执行如下语句:

select db_name(database_id) database_name,*

from sys.dm_io_virtual_file_stats(db_id('tempdb'), NULL)

测试结果如下:

1* 创建表变量前

2*创建表变量后

可以看到数据文件写入次数以及写入字节发生了明显的变化,比较写入字节数:

select (2921709568-2913058816)*1.0/1024/1024

大约为8.3M,与表变量的数据基本一致,可见创建表变量,确实是发生了IO操作

2. 测试创建表变量对内存的影响

考虑表变量是否占用内存的数据缓冲区,测试SQL如下:

30declare @tmp_orders table ( list_no int,id int)

insert into @tmp_orders(list_no,id)

select ROW_NUMBER() over( order by Id ) list_no,id

from Test.dbo.Orders

--查询tempdb库中最后创建的对象

Select top(1) name,object_id,type,create_date from sys.objects Where type='U' Order by create_date Desc

--查询内存中缓存页数

SELECT count(*)AS cached_pages_count

,name ,index_id

FROM sys.dm_os_buffer_descriptors AS bd

INNER JOIN

(

SELECT object_name(object_id) AS name

,index_id ,allocation_unit_id

FROM sys.allocation_units AS au

INNER JOIN sys.partitions AS p

ON au.container_id = p.hobt_id

AND (au.type = 1 OR au.type = 3)

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...