sql-server - SQL Server:如何以编程方式检索性能指标;特别是逻辑读取
问题描述
背景:我有一个非常复杂的存储过程,它根据十个参数动态创建 SQL。最重要的是,它使用了一些视图,这些视图本身非常复杂。可以想象,在某些情况下,生成的 SQL 语句会生成相当多的(在最坏的情况下为数万亿次)逻辑读取。我有几个我正在研究的策略。
测试工具:我创建了一个诊断存储过程,它使用各种参数设置运行存储过程并将结果存储到表中。这记录了用于生成它的输出和参数集。
我缺少什么:我想以编程方式捕获性能指标。我不想运行每个测试然后把它们写下来。我有二十几个奇怪的参数集并且还在增长。我也在比较不同版本的存储过程。
我想我想要什么: “设置统计信息 IO ON”给了我我正在寻找的东西,但信息显示在“消息”选项卡中。有没有办法返回这些信息,以便我的存储过程可以将这些值放入我的结果表中?
这是为测试我的存储过程而创建的查询示例。此代码示例生成 60 多次(每个测试过程的每个参数集一次)。此特定迭代使用参数集编号 11 测试“原始”存储过程。
DECLARE @LSBA_table table (ViewStatementBalanceAllUid uniqueidentifier, AccountResponsiblePartyUid uniqueidentifier, FinancialCenterUid uniqueidentifier, FinancialCenterName varchar(255), Balance money, CycleTrigger BIT, LastStatementDate Date, AccountResponsiblePartyFullName varchar(255), LastName varchar(255), ExternalID varchar(25), PayerCreditBalance Money, StatementsByFinancialCenter bit, SendStatement bit);
INSERT INTO @LSBA_table EXEC LoadStatementBalanceAll_ORIGINAL @nameRangeSearch = 'A-Bzzz', @onDemand = 0, @daysBack=30, @financialCenterUid='7FAEF75C-914F-491F-8FE2-0A747FD84088;8709E580-13BC-4E4B-9325-D8F3AB1B2868', @minBalance=25.00
INSERT INTO CUS_LSBA_RESULTS (StoredProcName, ParameterId,ViewStatementBalanceAllUid,AccountResponsiblePartyUid,FinancialCenterUid,FinancialCenterName,Balance,CycleTrigger,LastStatementDate,AccountResponsiblePartyFullName,LastName,ExternalID,PayerCreditBalance,StatementsByFinancialCenter,SendStatement) (SELECT 'LoadStatementBalanceAll_ORIGINAL', 11, * FROM @LSBA_table)
解决方案
您想自动保存结果
set statistic IO on
没有办法做到这一点。但是您可以通过创建分析器跟踪来获得所有结果,该跟踪器可以通过运行同一查询的不同版本来保存您想要的所有内容(每个可能的统计信息)。 https://docs.microsoft.com/en-us/sql/tools/sql-server-profiler/sql-server-profiler?view=sql-server-2017
推荐阅读
- java - Java如何写入文件并追加到它
- c# - EF Core LINQ 查询由于限制而失败?
- python - 提供的列表中 Square 的 Python 函数
- reactjs - 带有引导选择的 ReactJs Formik 面临设置对象的问题
- flutter - How to open a link automatically after Scanning QR Code in Flutter without clicking some Button
- javascript - 如何运行多个js服务器
- r - 如何使用 rlang 将字符串参数设置为 NULL(用于构面变量)?
- php - 完成所有这些后无法创建laravel项目
- java - getDrawable Kotlin 文件导致资源未找到但适用于 Java 文件
- javascript - JS/jQuery:检测视频的静音属性何时更改