SQL Azure插入查询比V11慢十倍?

我注意到两周前性能下降,影响了我们的一个SQL Azure后端应用程序。 它在90%的时间内在第一层的V12上运行,有时会扩展到S2,S3或P1。

基本上我遇到了显着较慢的查询执行时间,特别是在INSERT查询。 所以我testing和基准testing和基准testing,然后testing和基准更多。 随着每一步,我都试图把不确定的因素排除在外。 原来,自从我们搬到了V12之后,S1的performance比以前慢了很多。

我最终想出的是很容易重现的:在Azure门户中创build两个新的Sample数据库(Adventureworks_LT)。 一个在新的v12服务器上,另一个在新的V11服务器上。 S1级。

然后在两者上运行我的基准(sorting):

DECLARE @start_time DATETIME, @end_time DATETIME SET @start_time = CURRENT_TIMESTAMP DECLARE @cnt INT = 0; DECLARE @until INT = 100; DECLARE @timeNow DATETIME; WHILE @cnt < @until BEGIN Set @timeNow = CURRENT_TIMESTAMP; INSERT INTO dbo.ErrorLog ( ErrorTime, UserName, ErrorNumber, ErrorMessage ) VALUES ( @timeNow, 'BENCHMARK', DATEDIFF(MILLISECOND,@timeNow,CURRENT_TIMESTAMP), 'BENCHMARK' ) SET @cnt = @cnt + 1; WAITFOR DELAY '00:00:00:500'; /* wait 500 miliseconds*/ END SET @end_time = DateAdd(MILLISECOND,(@until)*-500.,CURRENT_TIMESTAMP) /*subtract 500ms per iteration to make up for the built-in delay*/ SELECT DATEDIFF(ms, @start_time, @end_time) as 'total query execution time', DATEDIFF(ms, @start_time, @end_time)/@until as 'average query execution time' SELECT * FROM sys.dm_db_resource_stats; 

我的结果:

平均执行时间V11:17ms

平均执行时间V12:131ms

有些运行差异比其他更大,但V11每一次都大大优于V12。

sys.dm_db_resource_stats现在显示出DTU限制已经达到最大值的迹象,甚至已经接近此限制。 那么你觉得在这里呢? 我确信我正在做什么,但是我的微软支持人员总是说,优化,扩大规模,查询等。

我想我只是在寻找一个有类似经历的人,他们可以用微软来find一个根本原因,甚至有人可以告诉我我的基准testing不好。

我收到了微软支持的答案,这是有道理的。 无论如何为了未来的search:

不pipe是什么平台,版本(不是Web / Biz)都提供了确保DTU和响应约束的能力,如https://azure.microsoft.com/en-us/documentation/articles/sql-database-benchmark-概述/#指&#x6807; (查看“指标”部分)基本和标准的响应时间限制在90百分位条表示为秒,因此隐含不保证ms顺序平均值。

总结:通过测量平均毫秒数来完成特定语句,我们无法比较V1和V12的性能。