現在有一程式通過互聯網連sqlserver(2k和2k5效果一樣,且在同一臺機器執行,未編譯,直接用pb運行)
都是執行下列陳述句:
cpu1 = cpu()
select count(*) from tab
cpu2 = cpu() - cpu1
現用pb9用和pb10做對比測驗,發現用pb9執行只是需要300ms左右
而pb10用oledb卻要1500ms,將近是pb9的5倍時間
之后又用PB10/pb9 + odbc 連,發現速度都是在500ms左右
理論上oledb 比odbc速度快呀!可是為什么體現出來的是oledb速度奇慢?
是連接配置問題嗎?
// Profile pb9
SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.Database = "test"
SQLCA.LogPass = <**>
SQLCA.ServerName = "server"
SQLCA.LogId = "sa"
SQLCA.AutoCommit = False
SQLCA.DBParm = ""
// Profile pb10
SQLCA.DBMS = "OLE DB"
SQLCA.LogPass = <**>
SQLCA.LogId = "sa"
SQLCA.Lock = "RC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='SQLOLEDB',DATASOURCE='server',PROVIDERSTRING='database=test',DelimitIdentifier='No'"
uj5u.com熱心網友回復:
有人遇到過這種問題嗎,等待解決.....uj5u.com熱心網友回復:
連sqlserver oledb應當是最好的.odbc連時,有些圖片和ole方式保存會出錯,oleDB不會.
在server后指明埠號,可大大加快連接速度.DelimitIdentifier='No' 可去掉
uj5u.com熱心網友回復:
DelimitIdentifier='No' 是為了兼容ASA,為了速度,把一些編碼表放到了本地,下拉資料視窗資料可以快很多,不過謝謝指教,先試下先uj5u.com熱心網友回復:
DelimitIdentifier='No' 是為了去掉ASA中的"這我知道,但如果你只連SQLSERVER,沒必要要
uj5u.com熱心網友回復:
編碼表放在本地是在編碼內容固定不變的情況下,如這樣,你不如用xml,檔案存放本地編碼表,速度更快.維護也方便.盡管PB可同時連多種資料庫,不過除非非常必要,我建議你只連一個庫
uj5u.com熱心網友回復:
在server后指明埠號后,是不是速度快了很多uj5u.com熱心網友回復:
正如2樓所說,OLEDB比ODBC可以獲取更多資訊,在本機上看不出來,遠程了就很容易對速度贊成影響。OLEDB其實并不適合用在遠程網路上。樓主還是別尋方案吧。webService 是個不錯的選擇
uj5u.com熱心網友回復:
其實遠程,用資料庫直連是極不安全的,最好的方案是用citrix之類的遠程方案,
用上以后,你就會發現所謂的C/S,B/S 毫無意義,
但對超大型專案,還是不適用的,但對500個點以下的中小真是不錯.
uj5u.com熱心網友回復:
昨天試了下,加埠問題依然存在,請問還有什么解決方案嗎?
uj5u.com熱心網友回復:
樓主, 我也遇到同樣問題. 本以爲直接連線會比ODBC快. 想不到還更慢.現安裝了SNC SQL Native Client , 但這個直連的代碼我找不到,
用SQLCA.DBMS = "SNC SQL Native Client(OLEDB)"時, 提示找不到這個DBMS.
請高手支招, 謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/106294.html
標籤:數據庫相關
上一篇:PB實作http上傳
