2013-04-11 103 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