首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL中标准层和高级性能层中的DTU是如何比较的?

SQL中标准层和高级性能层中的DTU是如何比较的?
EN

Database Administration用户
提问于 2016-03-28 07:21:28
回答 3查看 10.1K关注 0票数 11

我们最近观察到在运行在Standard3性能层中的SQL数据库中出现了严重的性能下降--在一个小时内,CPU利用率从10%上升到50%到几乎100%。因此,我们将性能层更改为Premium2,并且CPU利用率立即下降到大约8%。

Standard3声称提供100个DTU,Premium2声称提供250个DTU。这意味着8%的P2仅仅是20个DTU,这与在Standard3中使用全部100个DTU相差甚远。

这些DTU不一样吗?否则,当从100个DTU性能层切换到250个DTU性能层时,这种突然的利用率下降是如何发生的呢?

EN

回答 3

Database Administration用户

回答已采纳

发布于 2017-10-17 10:56:26

这一次的原因是SQL改变了对经常运行的查询使用哪个索引的想法。SQL有时会认为更改使用的索引可能是个好主意(基于收集的指标)。在观察到问题时,这种机制缺乏验证--一旦查询切换到另一个索引,数据库引擎将无法验证是否有实际改进。不知道从那以后这一切是否变了。解决这种情况的方法是使用WITH INDEX提示。

我们观察到性能的提高并不是因为改变了性能层本身,只是当Standard更改为Premium时,大概会发生硬件更改,因此数据库统计数据被清除,数据库引擎再次重新考虑查询计划,所以当我们切换到Premium引擎时,引擎只是重置到了旧的计划,这就是为什么我们在那次获得性能改进。

票数 4
EN

Database Administration用户

发布于 2016-03-28 08:37:48

Azure数据库的性能用DTUS表示,这意味着每个second.Further可以完成的事务数--它还限制了内存、cpu、IO的最大数量--您的数据库将在下表中看到更多细节,并注意会话请求部分。

我希望上面的图片澄清不同数据库tiers.further之间的差异,下面是Azure文档在使用不同数据库层时必须说的内容。

无论何时您想要评估Azure数据库的性能,您都需要在DMVS下面进行检查,其中提供了有关DTU使用情况的更多细节,这些数据以IO、日志、内存、CPU的形式表示。

-这个DMV只包含一个小时的数据,但每15秒捕获一次

代码语言:javascript
复制
SELECT  
    AVG(avg_cpu_percent) AS 'Average CPU Utilization In Percent', 
    MAX(avg_cpu_percent) AS 'Maximum CPU Utilization In Percent', 
    AVG(avg_data_io_percent) AS 'Average Data IO In Percent', 
    MAX(avg_data_io_percent) AS 'Maximum Data IO In Percent', 
    AVG(avg_log_write_percent) AS 'Average Log Write Utilization In Percent', 
    MAX(avg_log_write_percent) AS 'Maximum Log Write Utilization In Percent', 
    AVG(avg_memory_usage_percent) AS 'Average Memory Usage In Percent', 
    MAX(avg_memory_usage_percent) AS 'Maximum Memory Usage In Percent' 
FROM sys.dm_db_resource_stats; 

-本DMV载有14天的数据,捕获间隔5分钟。

代码语言:javascript
复制
SELECT start_time, end_time,    
  (SELECT Max(v)    
   FROM (VALUES (avg_cpu_percent), (avg_physical_data_read_percent), (avg_log_write_percent)) AS value(v)) AS [avg_DTU_percent]  
FROM sys.resource_stats 
WHERE database_name = '<your db name>' 
ORDER BY end_time DESC; 

每当您看到DTU指标始终保持在90%时,它是瓶颈的指示器,并且可以用同样的方式进行故障排除,我们对prem服务器进行故障排除。

例如,从DMV捕获的数据中,您可以看到CPU在一段时间内始终保持在90%的位置,您可以从收集导致CPU较高的查询开始,查看它们是否可以调优以减少cpu..When的消耗--您的所有优化工作都已用尽,那么您可能需要明确地升级到更高级别的层。

参考资料:https://azure.microsoft.com/en-in/documentation/articles/sql-database-performance-guidance/#monitoring-resource-use-with-sysresourcestats

票数 7
EN

Database Administration用户

发布于 2019-04-15 07:05:21

如果您正在寻找新的Azure SQL vCore为基础的比较,这些文章从第三方网站和微软官方网站应该给你更多的信息。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/133510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档