2013-04-11 54 views
0

我正在使用JDBC通過DriverManager.getConnection method連接到Informix實例,但我遇到了問題。通過DriverManager.getConnection連接到Informix很慢

DriverManager.getConnection需要很長時間才能與Informix建立連接。我試圖解決這個問題,但迄今還沒有成功。

如何解決這個問題?

+0

什麼是你的機器配置? – 2013-04-11 06:44:22

+0

這就是您應該使用連接池的原因之一。 – maba 2013-04-11 06:45:33

+2

當我們無事可做時,我們該如何幫忙?定義'長時間'。你需要多少個連接?什麼是網絡延遲?等等 – 2013-04-11 06:49:48

回答

1

你可以編寫一個簡單的測試,顯示連接數據庫需要多長時間。 對於這樣的事情,我喜歡可以使用JDBC的Jython,它可以使用本機JDBC驅動程序,並且可以通過JDBC-ODBC橋接使用ODBC驅動程序。當然,你必須先配置這樣的ODBC連接。

這是測試程序,顯示這樣的時代:

import sys 
import traceback 
import time 

from java.sql import DriverManager 
from java.lang import Class 

Class.forName("com.informix.jdbc.IfxDriver") 

def test_conn(db_url, usr, passwd): 
    try: 
     t0 = time.time() 
     try: 
      db = DriverManager.getConnection(db_url, usr, passwd) 
      t2 = time.time() 
      print('%s' % (db_url)) 
      print('%s, connection time %.03f [s]\n' % (db, (t2-t0))) 
     finally: 
      db.close() 
    except: 
     print("there were errors!") 
     s = traceback.format_exc() 
     sys.stderr.write("%s\n" % (s)) 


def main(): 
    for _ in range(5): 
     test_conn('jdbc:informix-sqli://169.0.5.10:9088/test:informixserver=ol_t1;', 'user', 'passwd') 
     test_conn('jdbc:odbc:ifx_test', 'user', 'passwd') 

main() 

我的機器上結果表明,JDBC更快的連接,然後JDBC-ODBC橋(你必須知道,橋增加了一些時間,是不是必要的本機應用程序)。另外我的測試是在Windows上運行的,最小分辨率爲time.time()的時間大概是15毫秒。我的結果:

jdbc:informix-sqli://169.0.5.10... 
[email protected], connection time 0.015 [s] 

jdbc:odbc:test 
[email protected], connection time 0.047 [s] 

當然有這個程序,你可以測試相同的驅動程序,但用在不同的服務器上的數據庫。

+0

過去,我與Informix的連接問題很慢。它是ODBC/.NET。建立單連接需要一秒鐘的時間(我不記得準確),但它被NHibernate的循環調用了幾千次。解決方案是啓用連接池。 – robsosno 2013-04-19 19:04:20

0

問題可能是您的主機文件不包含127.0.0.1 localhost的映射。

也可能是使用的是我對這個其他SO職位描述IPv6地址端口監聽的Informix的一個奇怪的現象: informix jdbc stuck connecting

+0

Hi ron,請不要在冒號之前在冒號之前添加空格以提示編輯(例如http://stackoverflow.com/review/suggested-edits/13474322);有關更多信息,請參閱http://english.stackexchange.com/questions/4645/is-it-ever-correct-to-have-a-space-before-a-question-or-exclamation-mark-。 – Matt 2016-09-07 21:27:06

+0

我不知道我是否必須開始討厭這個網站,儘管你的熱忱的答案。我把這篇文章的開頭留在這裏,太累了,無法抹去或繼續:「我更喜歡我如何選擇自己的句子,我想這不符合你似乎深深擁抱的社會標準,不要理解爲什麼你指的是「吸引低質量或垃圾郵件答案」的主觀帖子來表達你的觀點,但也許是因爲這樣做...... blahblahblah「 – ron190 2016-09-07 21:43:12