在没有设置SET NOCOUNT ON的情况下SQL Server 2012的批量Insert为什么很慢?

downmoon 2012-04-19 08:25:52
以下语句在同一台PC的不同实例:SQL Server 2012及SQL Server 2008 r2版本中,分别执行时间为
SQL Server 2012居然耗时达到317秒,而SQL Server 2008R2版,只需要大约6秒钟。

至于改进方法,有三个,看这里
http://blog.csdn.net/downmoon/article/details/7475841
知道的同学请回复一下,这个差异是为什么?谢了。

IF OBJECT_ID('Customers','U') IS NOT NULL
DROP TABLE Customers

CREATE TABLE Customers ( CustomerID INT primary key identity(1,1),
CustomerNumber CHAR(4),
CustomerName VARCHAR(50),
CustomerCity VARCHAR(20) )
GO

TRUNCATE table Customers
GO

----清除干扰查询
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE

SET STATISTICS IO ON;
SET STATISTICS TIME ON;
GO

DECLARE @d Datetime
SET @d=getdate();

declare @i int=1
while @i<=10000
begin
INSERT INTO Customers (CustomerNumber, CustomerName,
CustomerCity)
SELECT REPLACE(STR(@i, 4), ' ', '0'),'Customer ' + STR(@i,6),
CHAR(65 + (@i % 26)) + '-City'
set @i=@i+1
end

select [语句执行花费时间(毫秒)]=datediff(ms,@d,getdate())

SET STATISTICS IO OFF ;
SET STATISTICS TIME OFF;
GO
...全文
240 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
downmoon 2012-04-26
  • 打赏
  • 举报
回复
此问题经微软亚太工程师的多次调试,问题可能出现在SSMS 2008 R2和SSMS 2012的执行差异,而不是出在SQL Server的引擎上。感谢各位的关注!
有问题,请联系我。3w@live.cn
downmoon 2012-04-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
猜想是否因为2012更加关注批处理的相关分析,处理方法的优化。
反而是造成了单独T-SQL处理的一些性能降低。(有点儿像星际里面的种族平衡性)
[/Quote]
有消息说是因为SQL Server 2012在内存较低的情况下会出现这种情况,请内存在2G以内的朋友运行下上面语句!谢谢!
Mr_Nice 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

关注,是否硬盘有问题,保证2012的数据库和2008的数据库放在同一个硬盘?

同一个硬盘的同一个分区。
[/Quote]

硬件环境如果一样的话,就像LZ说的,执行上毫秒级的处理差异,累计就会变大。
但是,用CTE等批处理方式,确得到改善。

猜想是否因为2012更加关注批处理的相关分析,处理方法的优化。
反而是造成了单独T-SQL处理的一些性能降低。(有点儿像星际里面的种族平衡性)
当然,LZ的解决办法也很到位。

好贴,感谢分享... 关注....
downmoon 2012-04-20
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

关注,是否硬盘有问题,保证2012的数据库和2008的数据库放在同一个硬盘?
[/Quote]
同一个硬盘的同一个分区。
昵称被占用了 2012-04-20
  • 打赏
  • 举报
回复
关注,是否硬盘有问题,保证2012的数据库和2008的数据库放在同一个硬盘?
downmoon 2012-04-19
  • 打赏
  • 举报
回复
错了,还不能修改,晕,应该是“其他只需0-1毫秒”
downmoon 2012-04-19
  • 打赏
  • 举报
回复
执行计划是一样的。用Profiler trace,看到每隔10条Insert左右,就有一条Insert突然耗时200毫秒左右,而其他只需要0-1秒,不知道是为什么?

Rotel-刘志东 2012-04-19
  • 打赏
  • 举报
回复
执行计划有什么差别吗?
叶子 2012-04-19
  • 打赏
  • 举报
回复
差异还挺大,关注一下。

22,297

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧