我们正在开发一个从 Oracle 到 SQL Server 2008 的迁移项目。所以我们有很多用于调用其他存储过程的oracle包函数。这些函数已由 SSMA 转换为 IMPL 程序,这些程序通过函数的扩展程序执行。我们尽可能将大部分此类函数转换为简单的 UDF。现在我们面临一个特殊的性能问题。使用 IMPL 过程调用调用此类函数的查询需要更长的时间才能运行。有趣的是,使用 Sql Server 2008 在旧服务器上运行相同的查询只需 2 分钟。现在在带有 SQL Server 2008 R2 的新服务器中,它需要很长时间(大约 25-30 分钟)。
我们已经验证了索引和统计数据也是最新的。我们还注意到 IMPL 调用通过 master 和 sysdb 数据库,并使用内部表来存储并将结果从 IMPL 过程调用传回给函数。它们的空间分配与旧服务器不同。但它们并没有用完空间。他们会导致问题吗?是否有任何可用于 master/sysdb 数据库空间分配的指南?
数据库大约 300GB,tempdb 大约 50GB。
旧服务器
- SQL Server 2008 / Windows
- 氙气四核 x4 - 3GHz,64GB RAM
新服务器
- SQL Server 2008 R2 RTM
- 皓龙 6 核 x6 - 2.2GHz,64GB RAM
如果需要更多详细信息,请告诉我。
谢谢