gpt4 book ai didi

sql - 对于这种情况,为什么 SQL Azure 数据库性能在 Web 版和新高级版上差异如此之大

转载 作者:太空狗 更新时间:2023-10-30 01:57:46 25 4
gpt4 key购买 nike

我们正在将一个网站迁移到 SQL Azure,并发现我们当前的托管和 Azure 数据库之间存在非常显着的性能差异。

需要明确的是,存储过程代码写得不好并且可以修复,但我想了解的是性能差异背后的原因。

这是导致问题的过程中的违规代码

declare @curPinNumber int
set @curPinNumber = 183843692

declare @pinNumber int
set @pinNumber = 0
while @pinNumber < 10000
begin
set @curPinNumber = @curPinNumber + 1
insert into PinNumbers(pinNumber, pinNumberText, whenLastUsed, siteID)
values(@curPinNumber, right('0000' + cast(@pinNumber as varchar), 4), '1970-01-01', 999)
set @pinNumber = @pinNumber + 1
end

这是该过程的测试结果

azure sql数据库网页版

  • 运行 #1:41 秒
  • 运行 #2:37 秒
  • 运行 #3:37 秒

标准版 s1(15 个 DTU - MS 此后制造了 S1 20 个 DTU)

  • 运行 #1:3 分 44 秒
  • 运行 #2:3 分 41 秒
  • 运行 #3:3 分 42 秒

标准版 s2 50 DTU(不是错误 - 一切都非常一致)

  • 运行 #1:1 分 51 秒
  • 运行 #2:1 分 51 秒
  • 运行 #3:1 分 51 秒

高级版 P1(100 个 DTU)

  • 运行 #1:56 秒
  • 运行 #2:55 秒
  • 运行 #3:55 秒

高级版 P2(200 个 DTU)

  • 运行 #1:33 秒
  • 运行 #2:33 秒
  • 运行 #3:34 秒

*下面的两个虚拟机有单独的日志和数据磁盘。

虚拟机上的 sql(基本,1 核,1.75GB 内存。sql enterprise core edn)

  • 运行 #1:53 秒
  • 运行 #2:50 秒
  • 运行 #3:51 秒

虚拟机上的 sql(基本,2 核,3.5GB 内存。sql enterprise core edn)

  • 运行 #1:49 秒
  • 运行 #2:50 秒
  • 运行 #3:51 秒

我的台式电脑

  • 运行 #1:3.7 秒
  • 运行 #2:3.1 秒
  • 运行 #3:3.1 秒

当前主机(拥有 7 年旧设备)

  • 运行 #1:6.1 秒
  • 运行 #2:6.0 秒
  • 运行 #3:6.0 秒

所以我的假设是一个关键因素是正在发生的日志记录和日志刷新,可能是预写事务日志http://msdn.microsoft.com/en-us/library/ms186259.aspx

添加 BEGIN/COMMIT TRAN block 或从现有的包含 10,000 行的预设表进行连接确实可以在 sql azure 的网络版上将性能恢复到 1-2 秒,在我的上甚至更快本地机器。

我预计 Azure 的性能区域与我的桌面或旧托管类似

我的问题是为什么在 Azure 上差异如此放大?我试图判断这是否只是我们在测试过程中碰巧发现的一个极端情况,以及最重要的是我们在迁移过程中应该注意哪些事情。

最佳答案

这很可能是由于发出批处理的计算机与数据库服务之间的通信造成的。尝试在批处理中首先发出 SET NOCOUNT ON 以关闭将受影响的行通知发送回客户端。

关于sql - 对于这种情况,为什么 SQL Azure 数据库性能在 Web 版和新高级版上差异如此之大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23754828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com