• 締切済み

チューニングでテスト環境でOKなのに本番環境で駄目です。

こんにちは。 Oracleのチューニングについてお伺いします。 本番データをImportしてテスト環境を作成し、 SQL文を変更しての速度アップのチューニングを行っています。 テスト環境では問題なく速度向上ができましたが、 本番でやったところ思ったような速度向上ができませんでした。 実行計画を見るとやはり違っていますので、ここらへんが問題とは思いますが、原因不明のため本番でのテストも仕方なくしています。 この先PL/SQLなど複雑に呼び出している部分があり、この部分に踏み込まなければいけない状況まできていますが、本当はテスト環境で何とかしたく思っています。 そのような状況ですが、テスト環境を使っての何か良いデバック方法や対策などご存知の方いましたらご教授願いたく思っております。 Oracle8i/VB6.0環境です。

みんなの回答

  • SUPER-NEO
  • ベストアンサー率38% (706/1857)
回答No.2

こんばんは。 どのようなチューニングを行ったのかはわかりませんが、 質問文から推測いたしますと、SQL文のチューニング程度、と伺えます。 恐らく、投入するSQL文は催促と思います。 デバッグ方法ですけど、実行するSQL文を SQL Plus などで実行してみては どうでしょうか? 即座にレスポンスが得られるのならオラクル側には問題ないと思います。 しかし、その段階でレスポンスに影響が出るのならば、 インデックスが設定されていない、など疑うべき点を徹底的につぶしていく しか方法は無いと思います。 原因がどこにあるのか、という点ですが、 アプリに問題があるのか、ミドルウェアに問題があるのか、 データベースに問題があるのか、という視点で、 プログラムから実行、という考えを捨てて、考えてみてください。 ボトルネックがどこに存在しているのか、という部分を調べます。 それによって、どこを調べなければいけないのか、という部分を整理する ことができます。 あと、テスト環境と本番環境でのハードウェアの違いなども注目する必要があります。 例えば、テスト環境(=開発環境?)と本番環境とで搭載するメモリの容量が 異なる、というような場合はキャッシュ関係でも差が出てくるかもしれません。 開発環境と本番環境とでのハードウェアの違い、ソフトウェアの違い、 オラクルの設定値の違い、などなど総当りで調べるのも手段の1つです。 何か心当たりなどはございますでしょうか?

i_september
質問者

お礼

ご回答有難う御座います。 暫く見ていなかったので気づきませんでした。 参考にさせて頂きたく思っております。

回答No.1

CBO(コストベースオプティマイザ)をお使いなのだと思いますが、 CBOの場合、データの格納状況と統計情報の状態によって、結果が変わります。 (CBOの良いところであり、悪いところです) 理想的には、テスト環境の状態を物理的に同じ状態にするのが望ましいです。 (IMPORT&EXPORTだと、データの格納の際に綺麗に詰め直しがされるので、 同じ結果にならない可能性があります。) データ量やハードウエア環境の制約で、環境の再現が難しいのであれば、 せめて、改善前に運用環境と同じ現象が確認できている状況で、改善効果を はかる必要があります。

i_september
質問者

お礼

ご回答有難う御座います。 参考にさせて頂きたいと思います。

関連するQ&A