JavaおよびCをMySQLデータベースで使用し、結果を比較して、そのような結果の理由を説明する割り当てがあります。
番号。 of Records実行時間(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よりも優れているため、そのような結果になります。しかし、私はできません。どこでもそのような推論を見つけてください。
何か提案がありますか?
mathworks ウェブサイトによって提示されたステートメント。これらは一般的に適用できるようです。
次の点が役立つ場合があります。
マルチスレッド:-JDBCはマルチスレッドです-ODBCはマルチスレッドではありません(少なくともスレッドセーフではありません)
柔軟性:-ODBCはWindows固有のテクノロジーです-JDBCはJavaに固有であるため、JavaをサポートするOSでサポートされます
Power:どのプラットフォームでも、ODBCで実行できるすべてのことをJDBCで実行できます。
言語:-ODBCは手続き型で言語に依存しません-JDBCはオブジェクト指向で言語に依存します(Javaに固有)。
高負荷:-JDBCは高速です-ODBCは低速です
ODBCの制限:これはリレーショナルAPIであり、長方形または2次元形式で表現できるデータ型でのみ機能します。 (Oracleの空間データ型などのデータ型では機能しません)
[〜#〜] api [〜#〜]:JDBCAPIは自然なJavaインターフェイスであり、ODBC上に構築されているため、JDBCは基本機能の一部を保持していますODBCの
環境全体ではなく、ドライバーを比較していますか?
ODBC Cプログラムを使用していることがわかります。JDBCのテストに使用しているのと同じプログラムでODBCドライバーを試してください。ただし、JDBC-ODBCブリッジを使用することがよくあります。もちろん、ブリッジはさらに時間を追加します。また、JMBはJITを使用することを忘れないでください。アプリケーションの動作時間が長いほど、パフォーマンスが向上します。
パフォーマンスは重要ですが、私にとってはるかに重要なのはドライバーの安定性です。さまざまなODBCドライバーで問題が発生し、現在はJDBCドライバーを好みます。しかし、ODBCドライバーでさえ、高負荷のマルチスレッドサーバーで何ヶ月も動作できます。 。
ODBC vs JDBC パフォーマンスについてのこれらのタイプの議論は、 JPA vs Hibernate に関する議論とは異なり、常に少し外れています。
Cで記述されたODBCドライバーを使用するC++アプリは、データベースとのやり取りのごく一部で非常に高速になる可能性があります。同様に、特定のデータベース用に最適化されたベンダーのドライバーを使用してデータベースに接続するJavaプログラムも、非常に高速です。
ただし、データベースを使用した要求と応答のサイクルを見ると、要求の作成に伴うネットワーク遅延はAPIのオーバーヘッドよりも大幅に大きくなっています。同様に、データベースの検索、レコードの更新、またはトランザクションの存続にかかる時間は、 [〜#〜]よりもODBCを選択することで得られる効率よりも桁違いに重要になります。 ] jdbc [〜#〜] 。
開発中の 言語 を前提として、ベンダーが推奨する ドライバー を使用してください。また、パフォーマンスの問題はデータベース管理者とSQL開発者に解決を任せてください。これは、データベースのボトルネックを解決する場所ではありません。