java - 通过 DriverManager.getConnection 连接到 Informix 速度很慢

标签 java jdbc informix

我正在使用 JDBC 通过 DriverManager.getConnection 方法 连接到 Informix 实例,但我遇到了问题。

DriverManager.getConnection 需要很长时间才能与 Informix 建立连接。我正在尝试解决这个问题,但到目前为止还没有成功。

如何解决这个问题?

最佳答案

您可以编写简单的测试来显示连接到数据库需要多长时间。 对于这样的事情,我喜欢可以与 JDBC 一起使用的 Jython,它可以与 native 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 桥更快(您必须知道桥会增加一些 native 应用程序不需要的时间)。另外,我的测试是在 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]

当然,使用此程序,您可以测试相同的驱动程序,但使用不同服务器上的数据库。

关于java - 通过 DriverManager.getConnection 连接到 Informix 速度很慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15942279/

相关文章:

mysql - EXPLAIN 能提供的不仅仅是查询计划吗?

java - 尽管我生成的查询工作正常,但为什么 JDBC-MySQL 会在 SQL 语法中抛出错误?

文本框的 Java 集合实现

java - 制作app后如何使用proguard

java - Java读取文件,输出第一个逗号分隔的字符串

java - 在 Java 中使用结果集

linux - org.springframework.dao.InvalidDataAccessApiUsageException : Unable to determine the correct call signature - no procedure/function/signature for

python - Spark 从 IBM Informix 数据库读取数据 "Not enough tokens are specified in the string representation of a date value"

migration - 将数据库从一台 Informix IDS 11 服务器复制到另一台服务器的最简单方法是什么

java - 是否可以在 JFrame 的两种背景颜色之间进行选择,而无需创建变量并为其分配随机数 0 或 1?