【发布时间】:2017-05-08 15:23:04
【问题描述】:
是否有任何提示或指令可与 Azure SQL 数据仓库上的查询的 EXPLAIN 一起使用,以返回优化器无法使用的推荐统计信息?或者,是否有可以分析工作负载并提出任何建议的工具。
【问题讨论】:
标签: azure-sqldw
是否有任何提示或指令可与 Azure SQL 数据仓库上的查询的 EXPLAIN 一起使用,以返回优化器无法使用的推荐统计信息?或者,是否有可以分析工作负载并提出任何建议的工具。
【问题讨论】:
标签: azure-sqldw
今天,没有。目前的建议是为每一列创建统计信息,因为这些是创建最佳并行查询计划所必需的(即如何在节点之间移动数据以返回结果,因为它是 MPP 架构)。
也可以在此处找到如何编写脚本的示例(示例 H)。
【讨论】:
如您所知,应该创建统计信息(根据this article):
关于 JOIN、GROUP BY、HAVING 和 WHERE 子句中涉及的列。
(目前)没有工具可以做到这一点,但是如果您可以访问 EXPLAIN 计划,它们会为您提供某些信息。例如shuffle_columns 元素列出了SHUFFLE_MOVE 中涉及的所有列:
<shuffle_columns>col;</shuffle_columns>
以及无数其他信息。查看我对 Azure SQL 数据仓库计划 here 所做的注释。
最后,(我实际上并没有这样做,我只是在考虑这样做),您可以在 SQL Server 2016 上设置数据库的副本,记住语法差异(例如分布,缺乏唯一索引等)。这将使您可以访问某些有用的资源,例如执行计划,包括索引建议,以及某些告诉您使用了哪些统计信息的跟踪标志。我的意思是数据库引擎和索引确实不同,所以我不知道这有多大价值。如果我对此有进一步的想法,我会回帖。我确实发现了“为什么这个查询会变慢?”这个问题。在这个平台上回答普通的“盒装产品”SQL Server 要困难得多,因为这些工具还不够成熟。
【讨论】: