Azure SQL数据库与内部部署数据库上的高物理读取/临时数据库利用率



我有一个应用程序,它的性能在本地SQL Server中很好。同一个DB托管在Azure(业务关键型16核心(上,但当使用JMeter性能测试套件执行时,其性能不如内部部署。

使用查询存储,我发现Azure数据库上的物理读取比内部部署数据库高得多。尽管Azure数据库比内部部署数据库有更多的内存。Azure数据库上的临时数据库利用率也相当高。

执行计划是一样的,我也更新了统计数据。数据库配置基本相同。

OP执行计划-https://www.brentozar.com/pastetheplan/?id=rJQ_ox39D

Azure DB计划-https://www.brentozar.com/pastetheplan/?id=ry1Sieh5D

需要澄清的是,应用程序正在向服务器发送数百万个小查询,这就是为什么很难确定任何一个特定查询的原因。

您的16个核心是物理的,专门用于SQL Server。他们可能大部分时间都无所事事。如果启用了超线程,您可能有32个逻辑核心,可以为某些工作负载增加计算容量。你可能会因为把钱分配给你不需要的资源而感到内疚,但拥有更多总比拥有更少好,因为更多可能需要一台新服务器。

Azure主机可能有32个启用了超线程的核心。64个逻辑核心不会处于空闲状态。您可以获得16 vCPUS。若这些是由8个超线程物理内核提供的,我预计对于大多数负载,性能会下降20-30%。对于轻负载,您不会注意到太大差异。对于重载,情况可能会更糟。你可能会后悔没有把钱花在你需要的资源上,但这很容易解决。

忘掉苹果和桔子吧。运行一个16只狗的过程需要多少只猫?

我认为v2是从核心还是核心的时候开始的。

https://learn.microsoft.com/en-us/azure/virtual-machines/sizes-memory?toc=/azure/virtual-machines/linux/toc.json&bc=/azure/虚拟机/linux/breadcrumb/toc.json

最新更新