Sql server SQL Server 2005将服务器链接到DB2的性能问题

Sql server SQL Server 2005将服务器链接到DB2的性能问题,sql-server,db2,Sql Server,Db2,我有一台SQLServer2005机器,其中JDEDB2被设置为链接服务器 出于某种原因,从这个盒子到db2盒子的任何查询的性能都非常糟糕 比如说。从ManagementStudio运行以下内容需要7分钟 SELECT * FROM F42119 WHERE SDUPMJ >= 107256 而在iSeries Navigator中运行需要几秒钟 有什么想法吗?我假设存在一些配置问题。我的第一个想法是驱动程序。几年前,我不得不将DB2链接到SQL Serve

我有一台SQLServer2005机器,其中JDEDB2被设置为链接服务器

出于某种原因,从这个盒子到db2盒子的任何查询的性能都非常糟糕

比如说。从ManagementStudio运行以下内容需要7分钟

SELECT     *
FROM       F42119 
WHERE     SDUPMJ >= 107256
而在iSeries Navigator中运行需要几秒钟


有什么想法吗?我假设存在一些配置问题。

我的第一个想法是驱动程序。几年前,我不得不将DB2链接到SQL Server 2000,要找到合适的驱动程序和设置参数组合非常困难


因此,我可能会因此而产生偏见,但我会尝试升级或降级驱动程序,或更改设置,以便DB2驱动程序可以在INPROC中运行(如果它还没有这样做)。

我的第一个想法是驱动程序。几年前,我不得不将DB2链接到SQL Server 2000,要找到合适的驱动程序和设置参数组合非常困难


因此,我可能会因此而产生偏见,但我会尝试升级或降级驱动程序,或更改设置,以便DB2驱动程序可以运行INPROC(如果它还没有这样做)。

这可能是SQL Server机器上的内存问题。我最近了解到,链接服务器查询使用操作系统分配的内存。而本机SQL Server查询使用SQL Server预先分配的内存。如果您的SQL Server机器配置为使用服务器90%或更多的内存,我会将其缩小一点。也许60%是合适的地方

另一个要检查的是SQL Server处理器优先级。确保未启用“提升SQL Server优先级”


我假设您正在通过ODBC进行访问。请记住,这里不是编写本机db2查询,而是编写ODBC sql查询。如果您只需要只读数据,您可能希望尝试将ODBC数据源配置为只读模式(如果这是一个选项)。

这可能是SQL Server计算机上的内存问题。我最近了解到,链接服务器查询使用操作系统分配的内存。而本机SQL Server查询使用SQL Server预先分配的内存。如果您的SQL Server机器配置为使用服务器90%或更多的内存,我会将其缩小一点。也许60%是合适的地方

另一个要检查的是SQL Server处理器优先级。确保未启用“提升SQL Server优先级”


我假设您正在通过ODBC进行访问。请记住,这里不是编写本机db2查询,而是编写ODBC sql查询。如果您只需要只读数据,您可能希望尝试将ODBC数据源配置为只读模式(如果这是一个选项)。

我在使用DB2作为链接服务器时遇到了一些问题。我不知道它是否能解决您的问题,但以下是修复我的问题的方法:

1) 在ODBC设置中启用了执行期间的延迟关闭支持和预取 2) 在所有选择上添加“仅用于提取”
3) 使用SELECT*FROM OPENROWSET(LinkedServerName,'SQL Command')方法进行查询

我在DB2作为链接服务器时遇到了一些问题。我不知道它是否能解决您的问题,但以下是修复我的问题的方法:

1) 在ODBC设置中启用了执行期间的延迟关闭支持和预取 2) 在所有选择上添加“仅用于提取”
3) 在某些搜索中,使用SELECT*FROM OPENROWSET(LinkedServerName,'SQL Command')方法进行查询

,SQL Server将决定将整个表向下拉至自身,并在SQL Server中对数据进行排序和搜索,而不是将查询发送到远程服务器。这通常是排序规则设置的问题

确保提供程序设置了以下选项: 数据访问, 排序规则兼容, 使用远程排序

然后使用提供程序创建一个新的链接服务器,并选择以下提供程序选项 动态参数, 嵌套查询, 允许进行中


设置选项后,稍微更改查询以获得新的查询计划。

在某些搜索中,SQL Server将决定将整个表向下拉至自身,并在SQL Server中对数据进行排序和搜索,而不是将查询发送到远程服务器。这通常是排序规则设置的问题

确保提供程序设置了以下选项: 数据访问, 排序规则兼容, 使用远程排序

然后使用提供程序创建一个新的链接服务器,并选择以下提供程序选项 动态参数, 嵌套查询, 允许进行中


设置选项后,稍微更改查询以获得新的查询计划。

在使用DB2集成的项目中,我通过直接选择或查看将每个查询替换为调用OPENQUERY函数的存储过程

我的解释是SqlServer在应用WHERE条件之前获取整个表,而OPENQUERY将SQL语句直接传递给db驱动程序


无论如何,修改后的性能是可以接受的。

在一个具有DB2集成的项目中,我用调用OPENQUERY函数的存储过程替换了通过直接选择或查看的每个查询

我的解释是SqlServer在应用WHERE条件之前获取整个表,而OPENQUERY将SQL语句直接传递给db驱动程序


无论如何,修改后的性能是可以接受的。

对我来说,是排序规则兼容造成了所有的不同。将我的更新语句从约45秒缩短到1秒。非常感谢。对我来说,是排序规则的兼容性造成了所有的不同。将我的更新语句从约45秒缩短到1秒。非常感谢。