代码改变世界

【SQLServer】SSMS 18.0中执行计划的加强

2022-10-08 16:13  abce  阅读(235)  评论(0编辑  收藏  举报

1.【SQLServer】SQLServer执行计划概览

2.【SQLServer】SQLServer执行计划的类型

3.【SQLServer】如何分析图形化的SQL执行计划

4.【SQLServer】SQLServer执行计划运算符-第1部分

5.【SQLServer】SQLServer执行计划运算符-第2部分

6.【SQLServer】SQLServer执行计划运算符-第3部分

7.【SQLServer】SQLServer执行计划运算符-第4部分

 

 

微软从SQL Server 2017开始通过将SSMS版本号与SQL Server分开,为SSMS启动新的版本控制机制。

例如,SQL Server 2017的版本号以14.0开头,SQL Server 2019的版本号以15.0开头。另一方面,SQL Server 2017 SSMS 的版本号从17.X 开始,SQL Server 2018 SSMS的版本号从18.X 开始。

此外,从SQL Server 2016开始,在SQL Server Engine安装包下找不到SSMS安装包。要下载最新版本的SSMS,即SSMS 18.0预览版或之前的版本,需要从Microsoft下载页面直接。SSMS 18.0安装包更小 (~400 MB),不到SSMS 17.x安装包的一半。

下载后,可以轻松地将其安装到机器上。这个新版本的SSMS,你可以在使用命令行设置进行安装,将其安装在自定义文件夹中。你需要提供SSMS-Setup-ENU.exe的自定义路径,SSMSInstallRoot = 'Custom Location'命令。还可以使用SSMS安装向导安装,方法是运行安装包并单击安装按钮开始安装过程,如果当前机器不需要重新启动,安装过程将自动完成。

新SSMS 18.0不会升级或替换现有的SSMS版本,它将与现有的SSMS版本并排安装,两者都可以使用,如下所示:

 

分配给SSMS 18.0(预览版)的内部版本号等于15.0.18040.0,单击"帮助"菜单并选择"关于"选项时,这一点很清楚,如下面的快照所示:

SSMS 18.0支持SQL Server 2008版本及更高版本中几乎所有可用的功能,包括SQL Server 2019预览版,以及云架构中的Azure SQL数据库、Azure SQL托管实例和Azure SQL数据仓库。一个例外是,尝试使用SSMS 17.X或18.0(预览版)连接到旧版SQL Server集成服务时,要求你使用与SQL Server集成服务版本一致的SSMS版本。

SSMS 18.0支持不同的Windows Server 64 位平台,从Windows Server 2008 R2及更高版本。

在SSMS 18.0中,Microsoft修复了以前SSMS版本中的许多bugs,包括XEvents、备份、还原、附加和分离选项等。此外,SSMS 18.0改进了许多现有功能,包括将存储帐户密钥身份验证模式更改为Azure AD模式、引入AUTOGROW_ALL_FILES 文件组选项、在Always On仪表板中重新散列估计恢复时间和估计数据丢失、扩展SMO支持用于可恢复索引创建、脚本性能改进和SQL执行计划改进。Microsoft宣布在SSMS 18.0中,数据库图和T-SQL调试器功能已被弃用。

在本文中,我们将重点介绍SSMS 18.0(预览版)中SQL执行计划的改进。

 

额外计划运算符节点信息
SSMS 18.0中执行查询后生成真正的执行计划时,会看到添加了有关每个节点运算符的额外信息。此信息包括具有准确百分比值的实际已用时间和实际与估计行,如果可用,可以在每个计划运算符节点下显示。

使用SSMS 17.7版本运行查询时,这一点会很清楚,包括该查询的实际SQL执行计划。从生成的执行计划中可以看出,只会呈现每个运算符与整体查询权重相关的成本,如下图:

另一方面,如果使用SSMS 18.0(预览版 4)版本(包括该查询的实际SQL执行计划)运行查询,将看到每个运算符下列出的额外信息,包括实际经过的时间(以秒为单位)、 实际行数、估计行数和估计到实际行数的准确率百分比,如下所示:

 

此额外信息使实际计划看起来与Live Query Stats计划一致。此外,它使Actual SQL Execution Plans更具可读性,尤其是在处理大的执行计划时。换句话说,此信息将通过直接向用户查看最重要和最有用的信息,从而节省浏览和分析每个计划运算符提示的时间。

查询文本截断注释
在SSMS 18.0中,当移动鼠标指针或单击SQL执行计划的编辑查询按钮时,执行计划的上部添加了一条新注释,提交的查询的文本可能会被截断。此注释有助于通知用户,如果查询文本超过4000个字符,它将被SQL引擎截断。我之前在编辑长查询时发生这种情况,但这次SSMS会提前通知我们此截断,如下所示:

 

执行计划的其他改进
··在SSMS 18.0中,添加了一个新的逻辑来显示"Materializer Operator(External Select)"。在执行上层节点之前,将下层计划的输出物化到内存中时,会显示一个物化节点,因为上层节点的源需要重新扫描。
··在SSMS 18.0中,添加了一个名为"BatchModeOnRowStoreUsed"的新属性,以便轻松识别使用"batch-mode scan on rowstores"功能的查询。只需将数据库切换到 SQL Server 2019 的最新兼容级别(即 150)即可启用"batch-mode scan on rowstores"功能。每当对查询中的行存储执行批处理模式扫描时,一个新属性 (BatchModeOnRowStoreUsed="true ") 将被添加到StmtSimple元素中。

 

 

本文地址:https://www.cnblogs.com/abclife/p/16704425.html