ODBC与JDBC性能

use*_*918 8 c java database odbc jdbc

我有一个使用Java和C与MySQL数据库的任务,并比较结果,并说明为什么这样的结果的原因.

No. of Records  Execution time (ms)
Records     Java     C
100         586      76
500         628      216
2000        733      697
5000        963      1056
10000       1469     2178

如您所见,从数据库中获取的记录数量较少,C(ODBC)表现更好.但随着记录数量的增加,Java(JDBC)成为赢家.

我想到的原因可能是ODBC驱动程序的加载速度比JDBC快得多,但JDBC的访问速度要比ODBC好,因此,这样的结果.但是,我无法在任何地方找到这样的推理.

有什么建议吗?

Den*_*din 9

mathworks网站提供的声明似乎普遍适用.

在ODBC和JDBC驱动程序之间进行选择

使用本机ODBC:

  • 数据导入和导出的最快性能
  • 内存密集型数据导入和导出

使用JDBC:

  • 平台独立性允许您使用任何操作系统(包括Mac和Linux®),驱动程序版本或位数(32位或64位)
  • 使用本机ODBC接口不支持的Database Toolbox函数(例如runstoredprocedure)
  • 使用复杂或长数据类型(例如,LONG,BLOB,文本等)

小费:

  • 在支持ODBC和JDBC驱动程序的Windows系统上,纯JDBC驱动程序和本机ODBC接口提供比JDBC/ODBC桥接器更好的连接性和性能.


sou*_*mie 3

以下几点可能会有所帮助:

\n\n

多线程: - JDBC 是多线程的 - ODBC 不是多线程的(至少不是线程安全的)

\n\n

灵活性: - ODBC 是特定于 Windows 的技术 - JDBC 特定于 Java,因此任何支持 Java 的操作系统都受支持

\n\n

强大功能:在任何平台上,您都可以使用 JDBC 完成使用 ODBC 可以完成的所有操作。

\n\n

语言: - ODBC 是过程性的且独立于语言的 - JDBC 是面向对象的且依赖于语言(特定于 java)。

\n\n

重负载: - JDBC 更快 - ODBC 更慢

\n\n

ODBC 限制:它是一个关系 API,只能处理可以用矩形或二维格式表示的数据类型。\n(它不适用于 Oracle\xe2\x80\x99s 空间数据类型等数据类型)

\n\n

API:JDBC API是一个天然的Java接口,并且是建立在ODBC之上的,因此JDBC保留了ODBC的一些基本特征

\n

  • ODBC 是多线程的。每个语句都有处理程序,并且它在这样的环境中工作不会出现问题。 (5认同)