行级别安全性开启时 Azure SQL 查询性能下降

问题描述 投票:0回答:1

在 Azure SQL 数据库中,当行级别安全性处于活动状态时,相同的查询可在 4 秒内完成;而当行级安全性被禁用时,则可在 1 秒内完成。

当我比较查询的执行计划时,我发现当行级安全性处于活动状态时,优化器无法使用并行性。你可以看到下面的截图。

我的问题是;

1- 当行级安全性处于活动状态时,优化器在技术上是否可以使用并行性?

2- 如果可能的话,即使行级安全性处于活动状态,我应该怎样做才能使优化器使用并行性?

optimization azure-sql-database query-optimization row-level-security
1个回答
0
投票

这是此处记录的已知问题。罪魁祸首可能是安全策略所使用的函数的构建方式。为了避免这种情况,请尝试使用简单且确定性的过滤谓词,这些过滤谓词不涉及复杂的计算或与其他表的联接。

解决方法可能是尝试使用 MAXDOP 查询提示 (OPTION(MAXDOP 2)),但文章建议该方法和其他方法不起作用。希望此方法适用于您的情况或 Microsoft 支持尝试过的解决方法之一。

  • 更新统计信息并重建索引。
  • 使用重新编译或授予内存提示
  • 使用最新的兼容型号
  • 清除缓冲池。
  • 清除程序缓存。
© www.soinside.com 2019 - 2024. All rights reserved.