我使用JDBC通过DriverManager.getConnection method
连接到Informix实例,但是我遇到了问题。
DriverManager.getConnection
需要很长时间才能与Informix建立连接。我正试图解决这个问题,但到目前为止还没有成功。
如何解决这个问题?
答案 0 :(得分: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...
com.informix.jdbc.IfxSqliConnect@1658cfb, connection time 0.015 [s]
jdbc:odbc:test
sun.jdbc.odbc.JdbcOdbcConnection@ad75b, connection time 0.047 [s]
当然,使用此程序,您可以测试相同的驱动程序,但不同服务器上的数据库。
答案 1 :(得分:0)
问题可能是您的hosts文件不包含127.0.0.1 localhost
的映射。
也可能是Informix使用IPv6地址进行端口侦听的奇怪行为,我在其他SO帖子中描述过: informix jdbc stuck connecting