暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL Server 2022 新特性 - 智能查询处理:并行度反馈(DOP feedback)

原创 小小亮 2022-11-09
1105

DOP 效率低下是一个持续的挑战;当前的 DOP 方法效率低下

执行查询的并行度 (DOP) 会极大地影响其性能。每当查询使用并行性时,总会有一个问题是它是否使用了正确数量的并行性。有时,如果并行度太高,可能会导致查询执行效率低下。如果并行度太低,我们可能会错过并行可以提供的一些加速。MAXDOP 用户可以使用设置或提示手动设置查询或服务器的最大并行度。然而,对于用户来说,手动确定和调整每个查询的正确并行度一直是一个挑战。最多,他们会设置MAXDOP特别是当他们注意到问题时——他们通常不会尝试确定工作负载中每个查询的最佳并行度。

Degree of parallelism feedback 功能概述

SQL Server 2022中,我们引入了一项称为 DOP 反馈的新功能。此功能将查看任何并行查询,并确定它是否可以在比当前使用的并行度更低的情况下执行得更好。例如,如果其他线程有很多等待,也许 16 个线程会比 20 个线程执行得更好。它将测试新的并行度,并决定这是一个很好的更改并保留 16 个线程,或者它将恢复到以前的并行度并返回到 20 个线程。如果新的并行度很好,则此优化将保留在查询存储中,并将适当地应用于查询以供将来执行。

图 1: DOP 反馈逐步降低并行度,逐步降低并行度并在每一步进行验证。

DOP 反馈永远不会增加并行度,充其量,它会恢复到稳定的先前 DOP,并且它会逐步工作,这意味着它不会尝试一次性大幅降低并行度,而是会尝试稍微降低并行度. 然后,如果这很好,它可能会尝试另一个稍微低一些的并行度。如果新的甚至更低的并行度很好,它可能会尝试再次降低到两个并行度,尽管它不会使并行计划变为串行。如果新的、较低的 DOP 不是那么好,我们返回到以前已知的良好 DOP 并将查询保持在该级别。

例子

查询以 32 的并行度编译。这意味着查询将拆分 32 个不同的线程来执行查询。如果 DOP 反馈检测到线程和 CPU 开销之间的等待时间相当长,它会建议一个较低的 DOP——比如 20。在下一次执行时,查询将以 20 的 DOP 执行。如果性能比下一次更好几次处决,20的DOP将被认为是稳定的。然而,DOP 反馈可能会确定仍有太多等待,并进一步尝试 16 的 DOP。同样,使用多次执行来验证反馈。然后,也许,尝试 8 的 DOP。如果在多次执行后 DOP 8 的性能没有更好,那么系统将返回建议 DOP 为 16 作为最近的、稳定的和经过验证的 DOP。 

简单的设置和轻松的优化

启用此功能后,所有这些都无需触发查询重新编译,也无需用户操作即可完成。

SQL 22 的 DOP 反馈解决了我们的客户长期面临的挑战:为每个查询找到合适的并行度,而无需手动测试和调整每个查询以获得最佳性能。这是智能查询处理中的少数功能之一,可为客户提供最佳性能和低接触到非接触体验。


原文标题:Intelligent Query Processing: degree of parallelism feedback

原文作者:Kate Smith

原文链接:https://cloudblogs.microsoft.com/sqlserver/2022/10/20/intelligent-query-processing-degree-of-parallelism-feedback/

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论