2010-08-17 42 views
1

我有一個程序,讀取有關行和組行的一百萬;客戶端計算機根本沒有壓力,CPU使用率不超過5%,網卡的使用率約爲10%或更低。有沒有一種方法可以將我的網絡帶寬的100%僅用於一個連接?

如果在同一臺客戶機上運行我用生長在同樣的速度,用四個程序運行的程序的四個副本,我得到約20%的CPU使用率和40%左右的網絡使用。這讓我認爲我可以使用線程從數據庫中讀取信息來提高性能。但是如果配置更改可以做到這一點,我不想介紹這種複雜性。

客戶端:Windows 7中,CSDK 3.50.TC7

服務器:AIX 5.3,IBM Informix Dynamic Server的版本11.50.FC3

+3

當你運行4個線程,它實際上是更快地執行相同的一組操作? – fredley 2010-08-17 15:22:30

回答

1

有一些調整,你可以試試,最主要的是設定提取緩衝區大小。環境變量FET_BUF_SIZE可以設置爲一個值,如32767這可能會幫助你接近飽和的客戶端和網絡。

多個線程共享一個連接也無濟於事。使用多個連接的多個線程可能會有所幫助 - 當然,他們每個都會運行一個單獨的查詢。

如果客戶端程序分組行,我們要問:「爲什麼?」。通常最好是讓服務器(DBMS)來做到這一點。也就是說,如果服務器是計算綁定的,並且客戶端計算機在空閒週期中處於閒置狀態,那麼在客戶端而不是服務器上執行繁重的工作可能是有意義的。只要確保您最小化要通過網絡中繼的數據。

相關問題