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

2022-09-03 13:22:13

我有一个任务,将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好,因此,这样的结果。但是,我无法在任何地方找到这样的推理。

有什么建议吗?


答案 1

mathworks网站提供的声明,这些似乎普遍适用。

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

将本机 ODBC 用于:

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

将 JDBC 用于:

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

提示:

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

答案 2

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

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

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

功能 :您可以使用JDBC完成任何平台使用ODBC可以执行的所有操作。

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

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

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

API:JDBC API是一个天然的Java接口,建立在ODBC之上,因此JDBC保留了ODBC的一些基本功能。


推荐