[Seasar-user:22076] Re: 実行環境によるSQL処理の差異について
kubo
[E-MAIL ADDRESS DELETED]
2015年 7月 30日 (木) 15:51:55 JST
久保(jflute)です
成田さん、こんにちは
色々と登場人物が多いので、
まずはちょっと状況の整理からできればと。
> 2.INSERT TEMP_TABLE2 SELECT * FROM TEMP_TABLE1 ;(※)
> (処理件数123391件)
このSQLを、アプリケーションの中から、
実行したら30分かかったということでしょうか?
o そのSQLはDBFluteの外だしSQLを使って実行している?
o 30分待てば終わる? (or 永遠に終わりそうにない?)
o 何度実行しても必ず遅い?
o どの環境でも再現する?
処理が遅いのか、ロック待ちしているのか、
で全然解決方法が違うと思うので、
とりあえずこのへんの情報を整理できるといいかと。
あと、1と2でトランザクションを分けるとどうなるか?
とかの検証にしてみたいところですね。
2015-07-30 15:00 GMT+09:00 Nari <trickster.m.3 @ gmail.com>:
> お世話になります。成田と申します。
>
> 以前はOracleのLikeSearchの件でお世話になりました。
>
> 今回、dbfluteを利用しているアプリにて
> 気になる事象がありましたので
> 何か知見ありましたらご教授いただけますと幸いです。
> ------------------------------------------------------------------------
> ■環境
> java:jdk1.7.0_51
> tomcat:7.0
> framework:Spring Framework 3.2.8.RELEASE
> DB:Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
> O/Rマッパー:dbflute
> jdbc:ojdbc7-12.1.0.1.0.jar
>
> ■概要
> Webアプリケーション上の一部の処理で、
> パフォーマンスが極端に悪い事象が確認されました。
> 該当の処理は、1度のSQLで実行すると非常に動作が遅いため、
> 一時テーブルを利用し、
> いくつかの処理に分解して実行しています。
>
> ■事象
> 同一Transaction内で、OracleのGLOBAL TEMPORARY TABLEを利用し、
> 以下のような処理をしております。
>
> ------------------------------------------------
> 1.INSERT TEMP_TABLE1 SELECT * FROM MV_USER ;(※)
> (処理件数143170件)
>
> 2.INSERT TEMP_TABLE2 SELECT * FROM TEMP_TABLE1 ;(※)
> (処理件数123391件)
> ・・・・・・
>
> ※各テーブル名は以下の表またはビューとなります。
> TEMP_TABLE1:GLOBAL TEMPORARY TABLE
> TEMP_TABLE2:GLOBAL TEMPORARY TABLE
> MV_USER:MATERIALIZED VIEW
> ------------------------------------------------
>
> 上記の場合、アプリケーションから2のSQLを実行した所、
> パフォーマンスが悪くDBに滞納が確認されました。
> sys権限でV$LOCK内のロック時間を確認すると
> 30分以上、滞納していることが確認できました。
>
> 一方、同様のSQLをOracleのクライアントツール(Osqledit:odbc)を
> 用いて実行すると、約2秒ほどで1、2のSQLを実施できました。
>
> ■補足
> jdbc、odbcによる影響もあるかとしツールでの差異を確認しましたが
> SQLDeveloper(jdbc)でも処理が早いことを確認しております。
>
> 本件の原因、理由が特定できていないため、
> 過去の事例や、どういった原因が考えられるか
> アドバイスを頂けますでしょうか。
>
>
> 以上、よろしくお願いいたします。
> --
>
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内