我可能在这个谜题中遗漏了一些部分,但这是我所拥有的:
所有这些都是由一家外部公司为我们编写的。
有一个 .Net 应用程序作为服务器 A 上的服务运行。
在该应用程序中,正在调用 SSIS 包。DTEXEC
?
这些包(总共 37 个)到达两个不同的 SQL Server (B&C),提取一些数据,对其执行计算,然后将结果插入到服务器 C 上的数据库中。
在这 37 个包中,只有少数是我的问题所在。我已经看到了细节,其中有很多很多任务。
.Net 应用程序所在的服务器 A 上没有 SQL Server 组件(数据库引擎或 SSIS),因此这一切都在应用程序内部进行。.Net 使用 1 个 NUMA 节点的 20 个内核,盒子上有 1TB RAM。
此应用程序为 3.0 版本,增加了新功能。2.4(以前的版本)在相同的硬件上运行良好。
要问这个的所有背景:
有什么方法可以在 .Net 应用程序中的 SSIS 包中找到性能不佳的 T-SQL?还是我在等式中遗漏了一些非常明显的东西?
它归结为:“计算/T-SQL 实际运行在哪里”(A 与 B/C)以及如何在 .Net 空间内跟踪/调整它们?
Profilersp_whoisactive
等都指向 SQL 实例。这一切都只发生在 .Net 应用程序中,除了从 B 中选择数据并在计算后插入到 C 中的小例外。所有网络、磁盘等都运行良好。我正在寻找一种可以访问 .Net SSIS 的调优工具(如果存在这样的东西)。
这绝对是一个调整问题,但 Profilersp_whoisactive
等显示的时间可能不超过 3 秒,最远低于 1/2 秒或更短。我对 .Net 不太了解,不知道这些 …
我是 OPENXML 的新手,并且有 90% 的我想做的工作......坚持这个:
<ReportHost name="411.114.42.42">
<HostProperties>
<tag name="HOST_END">Wed Nov 11 20:48:43 2015</tag>
<tag name="LastAuthenticatedResults">8675309</tag>
<tag name="Credentialed_Scan">true</tag>
<tag name="policy-used">AWT v6</tag>
<tag name="ssh-auth-meth">MyPassword</tag>
<tag name="ssh-login-used">MyLogin</tag>
<tag name="local-checks-proto">ssh</tag>
<tag name="host-ip">411.114.42.42</tag>
<tag name="HOST_START">Wed Nov 11 20:00:01 2015</tag>
</HostProperties>
</ReportHost>
Run Code Online (Sandbox Code Playgroud)
我想要的结果:
Wed Nov 11 20:48:43 2015
8675309
TRUE
AWT v6
MyPassword
MyLogin
ssh
411.114.42.42
Wed Nov 11 20:00:01 2015
Run Code Online (Sandbox Code Playgroud)
我可以获取名称值(“Host_end”等),但不能获取内容。
我的查询:
Select *
from OPENXML (@hdoc,'/ReportHost/HostProperties/tag',1)
WITH (
name varchar (500)
)
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想坚持使用 OPENXML,因为我只是花了一天的时间学习它并进入最后一步。
如果我提供了足够的信息,请告诉我。
如果答案是“不”,我可以接受...
我想看看这是否可以优化......它是更大的存储过程的一部分。CGCode
是 varchar(50),Year
并且Month
是smallint
,FEIN
是char(9)
select max(id)
from Table
where 1=1
and cgcode = 123
and datefromparts(cast(year as char(4)),cast(month as char(2)),'01') < getdate()
and totalcount > 0
group by cgcode, year, month, fein
Run Code Online (Sandbox Code Playgroud)
实际执行计划的逻辑读取:1,566,473
源表原始数据 3200万+条记录
估计行数:640K,实际 55K,在 Group By 开始之前
上的隐式转换警告Year/Month/CGCode
(作为bigint
)
执行时间大约为 7.5 秒,执行非聚集索引查找:
最终结果集是 114 行(为此,CGCode
我们测试...其他各不相同)
Prod 的性能在比 Dev box 明显更好的硬件上大致相同。随着时间的推移,这只会变得更糟,因为它会提取比当前月份更旧的所有内容,以在 UI 中填充历史图表。
我还能提供哪些其他信息?
当前使用的索引:
CREATE NONCLUSTERED INDEX [COIX_Table_TotalCount] ON [dbo].[Table]
( …
Run Code Online (Sandbox Code Playgroud)