适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
SQL Server Management Studio 中的事务性能分析报表可帮助你评估 In-Memory OLTP 是否可以提高数据库应用程序的性能。 该报表还能够指明在应用程序中启用内存中 OLTP 所必须完成的工作量。 确定将基于磁盘的表移植到 In-Memory OLTP 后,请使用 内存优化顾问 来帮助迁移表。 同样, 本机编译顾问 可帮助你将存储过程移植到本机编译的存储过程。 有关迁移方法的信息,请参阅 内存中 OLTP - 常见的工作负荷模式和迁移注意事项。
事务性能分析报表直接针对生产数据库运行,或具有与生产工作负荷类似的活动工作负荷的测试数据库。
报表和迁移顾问将帮助你完成以下任务:
分析工作负载以确定在内存中 OLTP 可潜在帮助提高性能的热点。 事务性能分析报告推荐将表和存储过程转换为 In-Memory OLTP,从中受益最多。
帮助您规划和执行到内存中 OLTP 的迁移。 从基于磁盘的表到内存优化表的迁移路径可能比较费时。 内存优化顾问可帮助您找到表中的不兼容之处(必须在将表迁移到内存中 OLTP 之前予以解决)。 内存优化顾问还可以帮助您了解将表迁移到内存优化表对应用程序的影响。
你可以确定你的应用程序是否受益于 In-Memory OLTP,当你计划迁移到 In-Memory OLTP 时,以及在你将某些表和存储过程迁移到 In-Memory OLTP 的过程中。
重要
数据库系统的性能取决于几个因素,并非所有事务性能收集器都可以观察和度量。 因此,如果进行了任何预测,事务性能分析报告不能保证实际性能提升与其预测匹配。
在安装 SQL Server 或 SQL Server Management Studio 时,选择“管理工具 -基本”或“ 管理工具-高级”时,事务性能分析报告和迁移顾问将作为 SQL Server Management Studio 的一部分进行安装。
事务性能分析报告
通过右键单击数据库,然后依次选择“报表”、“标准报表”、“事务性能分析概述”,可以在“对象资源管理器”中生成事务性能分析报表。 数据库需要有活动的工作负载或最近运行的工作负载,才能生成有意义的分析报表。
表
表的详细报告包含三个部分:
“扫描统计信息”部分
本部分包含一个表,其中显示了收集的关于数据库表扫描的统计数据。 列分别是:
总访问权限的百分比。 对此表的扫描和查询次数相对于整个数据库的活动的百分比。 这个比例越高,使用此表的频率相对于数据库中的其他表就越大。
查找统计信息/范围扫描统计信息。 此列记录在探查期间对表执行的点查询和范围扫描(索引扫描和表扫描)次数。 每事务的平均值为估计值。
争用统计信息部分
本部分包含一个表,其中显示数据库表的争用。 有关数据库闩锁和锁的详细信息,请参阅 事务锁定和行版本控制指南。 这些列如下所示:
总等待百分比。 此数据库表上闩锁和锁等待数占数据库活动的百分比。 这个比例越高,使用此表的频率相对于数据库中的其他表就越大。
闩锁统计信息。 这些列用于记录查询涉及此表时的闩锁等待次数。 有关闩锁的信息,请参阅 SQL Server 如何使用闩锁。此数值越高,表内的闩锁争用就越严重。
锁统计信息。 这组列记录对此表的查询的页锁定获取和等待次数。 有关锁的详细信息,请参阅 锁定粒度和层次结构。 等待越多,对表的锁定争用就越多。
迁移困难部分
本部分包含一个表,其中显示将此数据库表转换为内存优化表的困难程度。 较高的难度分级表示转换表的难度更大。 若要查看转换此数据库表的详细信息,请使用内存优化顾问。
该过程从 sys.dm_db_index_operational_stats收集并聚合表详细信息报表的扫描和争用统计信息。
存储过程
请考虑迁移 CPU 时间与耗时比率较高的存储过程。 报表显示所有表引用,因为本机编译的存储过程只能引用内存优化表,这可能会增加迁移成本。
存储过程的详细报告包含两个部分:
执行统计信息部分
本部分包含一个表,其中显示了收集有关存储过程执行的统计信息。 这些列如下所示:
缓存时间。 高速缓存此执行计划的时间。 如果存储过程退出计划缓存并重新输入,则会看到每个缓存的时间。
总 CPU 时间。 分析期间使用的存储过程的总 CPU 时间。 此数值越高,存储过程使用的 CPU 就越多。
总执行时间。 存储过程在探查期间使用的执行时间总量。 此数字与 CPU 时间之间的差异越高,存储过程使用 CPU 的效率就越低。
总缓存未命中数。 存储过程在分析期间执行所导致的缓存未命中数(从物理存储读取)。
执行计数。 在探查期间,此存储过程执行的次数。
表格引用部分
本部分包含一个表,其中显示此存储过程引用的那些表。 将存储过程转换为本机编译的存储过程之前,请将所有这些表转换为内存优化表。 这些表必须保留在相同的服务器和数据库上。
从 (Transact-SQL) 收集和聚合 sys.dm_exec_procedure_stats 存储过程详细信息报告上的执行统计信息。 引用来自 sys.sql_expression_dependencies (Transact-SQL)。
有关如何将存储过程转换为本机编译存储过程的详细信息,请使用本机编译顾问。
生成内存中 OLTP 迁移清单
迁移清单标识内存优化表或本机编译的存储过程不支持的任何表或存储过程功能。 内存优化和本机编译顾问可为基于单个磁盘的表或解释 T-SQL 存储过程生成一个清单。 还可以为数据库中的多个表和存储过程生成迁移清单。
在 SQL Server Management Studio 中,使用 “生成 In-Memory OLTP 迁移清单” 命令或 PowerShell 生成迁移清单。
使用 UI 命令生成迁移清单
在 对象资源管理器中,右键单击系统数据库以外的数据库,选择 “任务”,然后选择“ 生成 In-Memory OLTP 迁移清单”。
在“ 生成 In-Memory OLTP 迁移清单 ”对话框中,选择“ 下一步 ”导航到“ 配置清单生成选项 ”页。 在此页上,完成以下步骤:
在“将清单保存到” 框中,输入文件夹路径。
验证“为特定的表和存储过程生成清单” 处于选中状态。
展开选择框中的“表” 和“存储过程” 节点。
在选择框中选择几个对象。
选择 “下一步 ”,确认任务列表与 “配置清单生成选项” 页上的设置匹配。
选择 “完成”,然后确认仅为所选对象生成迁移清单报告。
将这些报表与内存优化顾问工具和本机编译顾问工具生成的报表进行比较,验证这些报表的准确性。 有关详细信息,请参阅 Memory Optimization Advisor 和 Native Compilation Advisor。
使用 SQL Server PowerShell 生成迁移清单
在 对象资源管理器中,选择数据库,然后选择 “启动 PowerShell”。 验证出现了下面的提示。
PS SQLSERVER: \SQL\{Instance Name}\DEFAULT\Databases\{two-part DB Name}>输入以下命令。
Save-SqlMigrationReport -FolderPath "<folder_path>"验证以下结果:
如果该文件夹路径尚不存在,该命令将创建该文件夹路径。
该命令为数据库中的所有表和存储过程生成迁移清单报告。 报表位于指定的
folder_path位置。
使用 Windows PowerShell 生成迁移清单
启动提升的 Windows PowerShell 会话。
输入下面的命令。 对象可以是表或存储过程。
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')Save-SqlMigrationReport -Server "<instance_name>" -Database "<db_name>" -FolderPath "<folder_path1>"Save-SqlMigrationReport -Server "<instance_name>" -Database "<db_name>" -Object <object_name> -FolderPath "<folder_path2>"验证以下结果:
该命令为数据库中的所有表和存储过程生成迁移清单报告。 报表位于指定的
folder_path位置。迁移清单报告
<object_name>是位于folder_path2指定位置的唯一报告。