OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

JDBCのパフォーマンス

  • すぐに回答を!
  • 質問No.159387
  • 閲覧数495
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 25% (1/4)

JDBCのパフォーマンスがあがらず困っています。

LinuxマシンでOracleを稼働しており、そこにJDBCで接続しています。単一でのアクセスでは全く問題のないパフォーマンスですが、同時接続数が2以上になると途端に悪くなります。

# スレッド1→スレッド10でレスポンスに5倍の時間がかかってしまう。。。

OracleでMTS設定なども行ってみましたが、変わりませんでした。コネクションプールも行っています。

JDBCを用いてマルチスレッドでアクセスするときにボトルネックとなるポイント、チェック項目等、アドバイスをいただければ助かります。

よろしくお願いいたします。

[環境]
Linux RedHat6.2J(カーネル2.2.14smp)
Oracle8.1.6
JDK1.3.0
JDBCドライバ Oracleで配布しているclasses12.zip
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル6

ベストアンサー率 66% (6/9)

JDBCの問題か Oracleの問題かを切り離して考える必要が あるのではないでしょうか。 例えば、アプリケーションプログラム中からSQLを取り出したのち、 SQL*Plusを複数起動してそのSQLを同時に実行した場合との 実行時間をまず比較してみてはどうでしょうか。 ...続きを読む
JDBCの問題か Oracleの問題かを切り離して考える必要が
あるのではないでしょうか。
例えば、アプリケーションプログラム中からSQLを取り出したのち、
SQL*Plusを複数起動してそのSQLを同時に実行した場合との
実行時間をまず比較してみてはどうでしょうか。
補足コメント
jellyfish69

お礼率 25% (1/4)

アドバイスありがとうございます。

実行時間の比較の方ですが、JDBCとsqlplusの単一クエリーでの差はそれほどありませんでした。複数同時接続があった場合の比較は行っていません。

# sqlplusで複数同時接続の試験方法が思いつかなかったので。

JDBCで複数同時接続しているときに、sqlplusでクエリーを投げてみましたが、その時のレスポンスは問題ないものでした。
投稿日時 - 2001-10-30 14:38:10
  • 回答No.2
レベル6

ベストアンサー率 66% (6/9)

補足していただいた内容を読んだ限り、 SQL自体に問題があるようには見えないようです。 とすると、あとは Oracleへの接続部分か Javaでのロジックをどうにかすることでしょうか。 念のため確認ですが、INSERT/UPDATE文はがんがん実行されているのでしょうか。その場合、Connectionクラスの setAutoCommitメソッドを実行した覚えはあるのでしょうか。 JD ...続きを読む
補足していただいた内容を読んだ限り、
SQL自体に問題があるようには見えないようです。

とすると、あとは Oracleへの接続部分か
Javaでのロジックをどうにかすることでしょうか。

念のため確認ですが、INSERT/UPDATE文はがんがん実行されているのでしょうか。その場合、Connectionクラスの setAutoCommitメソッドを実行した覚えはあるのでしょうか。

JDBCのデフォルトでは setAutoCommit(true)、すなわち一行文を実行する毎にコミットがかかります。INSERT/UPDATEがあり、トランザクション的に自動コミットがかかるとまずい場合があるので、まず、setAutoCommit(false); として、更にトランザクションの最後に(明示的に) commitメソッドを実行します。もし問題があれば、rollbackメソッドを使って、トランザクションをキャンセルするようにしましょう。ただし、複数のユーザが同一のConnectionクラスのインスタンスを共有している場合にはこの手法は使えないと思います。

この手の話は Oracleの Oracle8i JDBC Developer's Guide and Reference (Oracle8i JDBC開発者ガイドおよびリファレンス)の第6章 Coding Tips and Trouble Shootingに記述されています。
# 恐らく日本語化されて、紙ベースで存在すると思いますが、手元にあるのが US Oracle/technet のドキュメントしかないため、本当に日本語化されているか確認できません。ごめんなさい(^^;
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ