簡體   English   中英

SQL Server 2005鏈接服務器到DB2性能問題

[英]SQL Server 2005 Linked Server to DB2 Performance issue

我有一台將JDE DB2設置為鏈接服務器的SQL Server 2005計算機。

由於某些原因,從此框到db2框的所有查詢的性能都非常糟糕。

例如。 從Management Studio運行以下程序需要7分鍾

SELECT     *
FROM       F42119 
WHERE     SDUPMJ >= 107256

在iSeries Navigator中運行需要花費幾秒鍾

有什么想法嗎? 我假設一些配置問題。

在某些搜索中,SQL Server將決定將整個表拉到自身,並在SQL Server中對數據進行排序和搜索,而不是將查詢發送到遠程服務器。 這通常是排序規則設置的問題。

確保提供者設置了以下選項:數據訪問,兼容排序規則,使用遠程排序規則

然后使用提供程序創建一個新的鏈接服務器,並選擇以下提供程序選項:動態參數,嵌套查詢,允許進行中

設置選項后,稍微更改查詢以獲取新的查詢計划。

在一個與DB2集成的項目中,我通過直接選擇或查看通過調用OPENQUERY函數的存儲過程來替換了每個查詢。

我的解釋是SqlServer在應用WHERE條件之前先獲取整個表,而OPENQUERY則將SQL語句直接傳遞給db驅動程序。

無論如何,修改后的性能還是可以接受的。

這可能是SQL Server計算機上的內存問題。 我最近了解到鏈接服務器查詢使用操作系統分配的內存。 而本機SQL Server查詢使用由SQL Server預分配的內存。 如果將您的SQL Server計算機配置為使用服務器內存的90%或更多,我會稍微縮減一點。 也許60%是正確的選擇。

要檢查的另一件事是SQL Server處理器優先級。 確保未啟用“提升SQL Server優先級”。

我假設您正在通過ODBC進行訪問。 請記住,您不是在這里編寫本機db2查詢,而是在編寫ODBC sql查詢。 如果只需要只讀數據,則可能需要嘗試將ODBC數據源配置為只讀模式(如果可以的話)。

我的第一個想法將歸司機。 多年前,我不得不將DB2鏈接到SQL Server 2000,並且很難找到能夠正常工作的驅動程序和設置參數的正確組合。

因此,也許我因此而感到偏頗,但是我會嘗試升級或降級驅動程序或更改設置,以便DB2驅動程序可以運行INPROC(如果尚未這樣做)。

我將DB2作為鏈接服務器遇到了幾個問題。 我不知道它是否可以解決您的問題,但這是固定的解決方案:

1)在ODBC設置的EXECUTE中啟用了惰性關閉支持和預取2)在所有選擇上添加“僅FOR FETCH” 3)使用SELECT * FROM OPENROWSET(LinkedServerName,'SQL Command')方法進行查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM