ダウンロード
Magazine
開発
アカウント
ダウンロード
Magazine
開発
ログイン
アカウント/パスワードを忘れた
アカウント作成
言語
ヘルプ
言語
ヘルプ
×
ログイン
ログイン名
パスワード
×
アカウント/パスワードを忘れた
日本語の翻訳状況
カテゴリ:
ソフトウェア
人物
PersonalForge
Magazine
Wiki
検索
OSDN
>
ソフトウェアを探す
>
システム
>
TERASOLUNA Framework
>
フォーラム
>
公開討議
>
iBatisを使用したselect文発行について
TERASOLUNA Framework
概要
プロジェクト概要
開発ダッシュボード
Webページ
開発メンバー
画像ギャラリー
公開フィード一覧
活動
統計情報
活動履歴
検索キーワード
プロジェクトレビュー
ダウンロード
リリース一覧
統計
ソースコード
コードリポジトリリスト
Subversion
リポジトリ閲覧
チケット
チケット一覧
マイルストーン一覧
チケットの種類一覧
コンポーネント一覧
よく使われるチケット一覧のリスト/RSS
新規チケット登録
文書
Wiki
FrontPageの表示
ページ一覧
最近の更新
文書マネージャ
文書一覧
コミュニケーション
フォーラム
フォーラム一覧
公開討議 (1265)
メーリングリスト
MLの一覧
terasoluna-information
ニュース
フォーラム:
公開討議
(スレッド #37135)
話題(スレッド)一覧に戻る
RSS
iBatisを使用したselect文発行について (2015-09-15 17:27 by
バッチFW初心者
#76875)
返信
チケットに引用
iBatisを使用した可変パラメータによる、selectの処理速度向上についてご相談させて下さい。
terasoluna batchを使用して以下のようなシステムの構築を行っております。
1.fileChunkCollectorを使用して、会員情報入力ファイルを1件ずつ取得する。
2.blogicにて1で取得した会員情報ファイルの会員IDを元に、会員の過去購入履歴を取得する。
3.過去購入履歴から取得した購入金額を会員IDごとに集計し、会員情報出力ファイルにCSVFileLineWriterを使用して1件ずつ出力を行う。
上記の処理を実装し、動作の確認を行ったところ10Mのファイルの入出力処理に30分以上かかってしまいました。(ファイル件数は200000件ほどです)
どの処理がボトルネックになっているのか確認したところ、上記2の処理でiBatisを使用して会員情報をselectしてくる箇所で時間がかかってしまっていました。
具体的なselect手順以下となっております。
sqlMapにて以下のような定義を行う。
<select id="getNyukinData" parameterClass="java.lang.Integer"
resultClass="jp.terasoluna.batch.sample.uc0003.JB0003nyukinData">
SELECT NYUKIN FROM NYUKINTABLE WHERE ID = #value#
</select>
BLogicにて以下のように取得しています。
NyukinData nyukinData = queryDAO.executeForObject("UC0003.getNyukinData",Integer.valueOf(data.getId()) , JB0003nyukinData.class);
動作の検証を行うために、パラメータ無しで同テーブルに対してselectを発行するようにし処理速度を計測したところ処理時間が10分の1ほどに短縮されました。
使用しているDBはHSQLDBとなります。
想像でしかないのですが、パラメータ有りの場合、毎回SQLの作成・発行を行っているため時間がかかってしまっているのかと思われるのですが、このような処理を高速化するための方法をご存じの方がいらっしゃいましたらご教示お願いします。
メッセージ #76875 への返信
×
題名
本文
メッセージ #76875 への返信 > iBatisを使用した可変パラメータによる、selectの処理速度向上についてご相談させて下さい。 > > terasoluna batchを使用して以下のようなシステムの構築を行っております。 > > 1.fileChunkCollectorを使用して、会員情報入力ファイルを1件ずつ取得する。 > 2.blogicにて1で取得した会員情報ファイルの会員IDを元に、会員の過去購入履歴を取得する。 > 3.過去購入履歴から取得した購入金額を会員IDごとに集計し、会員情報出力ファイルにCSVFileLineWriterを使用して1件ずつ出力を行う。 > > 上記の処理を実装し、動作の確認を行ったところ10Mのファイルの入出力処理に30分以上かかってしまいました。(ファイル件数は200000件ほどです) > どの処理がボトルネックになっているのか確認したところ、上記2の処理でiBatisを使用して会員情報をselectしてくる箇所で時間がかかってしまっていました。 > > 具体的なselect手順以下となっております。 > > sqlMapにて以下のような定義を行う。 > <select id="getNyukinData" parameterClass="java.lang.Integer" > resultClass="jp.terasoluna.batch.sample.uc0003.JB0003nyukinData"> > SELECT NYUKIN FROM NYUKINTABLE WHERE ID = #value# > </select> > > BLogicにて以下のように取得しています。 > NyukinData nyukinData = queryDAO.executeForObject("UC0003.getNyukinData",Integer.valueOf(data.getId()) , JB0003nyukinData.class); > > 動作の検証を行うために、パラメータ無しで同テーブルに対してselectを発行するようにし処理速度を計測したところ処理時間が10分の1ほどに短縮されました。 > > 使用しているDBはHSQLDBとなります。 > > 想像でしかないのですが、パラメータ有りの場合、毎回SQLの作成・発行を行っているため時間がかかってしまっているのかと思われるのですが、このような処理を高速化するための方法をご存じの方がいらっしゃいましたらご教示お願いします。
Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。
ログインする
ニックネーム
プレビュー
投稿
キャンセル