【发布时间】:2012-03-29 18:40:03
【问题描述】:
我们正在我们的组织中浮动一个新的可扩展且以性能为中心的 ASP.Net 应用程序,该应用程序目前处于设计阶段。
经理们决定采用混合方法。他们决定广泛使用 CLR 存储过程,而 T-SQL 仅用于简单的数据操作。
我想从社区了解以下内容:
- 这么多 CLR 存储过程在后期是否会出现性能问题?
- 如果您遇到任何性能问题,MS 团队是否提供了解决方案?
注意:我做了一个谷歌,发现以下最可能的问题,但还没有找到前两个的解决方案。
当 SQL Server 加载程序集时,它们会缓存在内存中。当 O/S 向 SQL Server 发出内存压力信号时,可能会运行显式垃圾回收,并且可能会卸载程序集。如果频繁发生,这可能会导致性能问题。
查询优化器无法准确计算 SQL CLR 代码的成本,因为它不查看代码实际执行的操作 - 这会影响执行计划。
SQL CLR 代码有时会阻止并行性,因为它们通常是单线程的。有时这会损害性能。 Multi-threaded code in CLR Stored Procs? >>
让我知道 CLR 存储过程的问题和修复。
【问题讨论】:
-
只提一句建议:在 T-SQL 中执行 数据操作 任务,例如选择或更新数据 - 这要好得多(在各个方面,包括性能)而不是使用 SQL CLR 和 C# 来执行相同的任务。限制 SQL CLR 做 T-SQL 不擅长的事情——调用外部 Web 服务、广泛和高级的字符串和数据操作以及类似的东西。仅仅因为您可以遍历一个表并在 SQL CLR 存储过程中逐行更新每一行并不意味着 您应该 ..
标签: c# sql-server-2008 garbage-collection clrstoredprocedure