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
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
JDBCの問題か Oracleの問題かを切り離して考える必要が
あるのではないでしょうか。
例えば、アプリケーションプログラム中からSQLを取り出したのち、
SQL*Plusを複数起動してそのSQLを同時に実行した場合との
実行時間をまず比較してみてはどうでしょうか。
この回答への補足
アドバイスありがとうございます。
実行時間の比較の方ですが、JDBCとsqlplusの単一クエリーでの差はそれほどありませんでした。複数同時接続があった場合の比較は行っていません。
# sqlplusで複数同時接続の試験方法が思いつかなかったので。
JDBCで複数同時接続しているときに、sqlplusでクエリーを投げてみましたが、その時のレスポンスは問題ないものでした。
No.2
- 回答日時:
補足していただいた内容を読んだ限り、
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- その他(SNS・コミュニケーションサービス) 爆サイやっていたら、下のような文字が出ました! これは何なのでしょうか? nginx error! 1 2023/06/09 12:27
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- 作詞・作曲 DTM DAWとmidiキーボードについて 1 2022/10/20 16:41
- サーバー Windows2019CALとRDS CALについて 1 2022/06/19 13:48
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Illustrator(イラストレーター) Illustrator『リアルタイムプレビュー』機能をオフにする方法 1 2023/03/05 20:38
- スピーカー・コンポ・ステレオ ホームシアターの構築方法についてアドバイスをいただきたいです。 2 2023/08/06 18:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessdでの「トランザクション...
-
INSERT分の処理速度がトランザ...
-
postgresql についてです
-
【DB】同じトランザクション内...
-
SQL Server 2005トランザクショ...
-
警察はスマホに保存した動画や...
-
accessの処理が遅い
-
PCが悪くなって新しいPCにSSMS...
-
DATファイルをEXCELで開きたい
-
復旧中のデータベースについて
-
業務用のデータベースサーバー...
-
DAOファイルのSQLクエリの部分...
-
ファイルメーカーで画像を参照...
-
accessの上限容量2Gでは容量が...
-
SQL*Loaderのコミットポイント...
-
Sqliteで使えない文字。
-
SQL Server Management Studio ...
-
oracleデータベースの更新履歴
-
SQLデータベースを削除する方法
-
パラメーターエラーで復元でき...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【DB】同じトランザクション内...
-
postgresql についてです
-
TPSとは・・・
-
Accessdでの「トランザクション...
-
一つのトランザクションでSELEC...
-
ADO Connection を再利用する方法
-
dbFailOnError とは?
-
SAPのSPROって何の略ですか?
-
OracleのROWIDについて…
-
SQL Server 2005トランザクショ...
-
汎用系システムのDBについて
-
INSERT分の処理速度がトランザ...
-
accessVBAでのワークスペース
-
jmeterについて、教えてください。
-
ロールフォワードとロールバッ...
-
ロールバックとロールフォワー...
-
DBサーバー妥当性
-
DBMSのロールフォワードについて
-
オラクルのロールバックセグメ...
-
MySQLとPostgleSQL、ど...
おすすめ情報