お世話になります。
WebサーバとDBサーバを使用して構築したシステムが
あります。
テスト環境と本番環境があり、それぞれ、以下の様になってます。
テスト環境
Webサーバ
Windows2000 Server+IIS5.0+ .NET Framework
DBサーバ
Windows2000 Server+Oracle8.0.6
本番環境は
Webサーバ
Windows2000 Server+IIS5.0+ .NET Framework、
DBサーバ
Solaris(バージョン分からず)+Oracle8.0.6
となっています。
テスト環境と本番環境の違いについてですが、
Webサーバの方は、スペックは違いますが、
その他の環境は同じです。
DBサーバの方は、OSの違いとOracleのデータベースの定義に少し違いがあるかもしれませんが、
データの件数とテーブルの定義は同じです。
そこで肝心の質問の件なのですが、
テスト環境と本番環境で、同システムを実行した際に、
DBからのデータ取得にかなりの時間の差があるのです。
テスト環境で、2~3分で終わる処理が
本番環境だと、30分くらいかかってしまいます。
何が原因でこのような状態になっているか分からず、
すごく悩んでいます。
ネットワークの速度にはそれほど違いはないのですが・・・。
また、マシンスペックは本番環境の方が高いです。
どんな細かい情報でもかまいませんので、
ここが怪しいのではないか?とかありましたら、
ご教授お願いします。
また、他に必要な情報とかありましたら、
できる限り調べますので、どうぞよろしくお願いします。
No.2ベストアンサー
- 回答日時:
こんにちわ。
先ずは#1 の方が言われているように、検索条件となる
項目に索引が定義されているか確認して下さい。
本番環境にも索引が定義されているようであれば、念のため
索引を再作成してみてください。
→ alter index 索引名 rebuild; で再作成できます。
それでも性能が悪いようであれば、Oracle の初期化
パラメータファイルを見直してみてください。
バッファサイズや、shared pool サイズに問題がある
場合もあります。
それでも解決しなければ、SQL Trace を取って
tkprof するしかないですね。
No.4
- 回答日時:
こんにちわ。
#2 のmuyoshid です。
索引を使用しなかった場合、データ件数が同じでも
検索時間に差が出る事があります。
Oracle は、「最後のデータ」と言う管理を行って
いませんので、索引を使用しない検索 (全表検索)
した場合、高水準位指標までの読込みを行います。
一度100万件のデータが登録されると、データが削除
されても、100万件分のデータブロックの読込みが
行われます。
exp user/pass tables=(表名) file=data.dmp
としてデータを一旦バックアップして、
SQL> truncate table 表名
imp user/pass file=data.dmp ignore=y
としてデータの復旧をしてみて下さい。
デーブルのアクセスパターンに応じて、適宜
索引の定義も検討して下さい。
No.3
- 回答日時:
インデックスじゃないとすると、そうですねぇ…
もし可能であれば、本番系のデータ全部エクスポートして、テスト系に丸々インポートしてみたらどうなんでしょうか。
これによって、表定義とか統計情報については同一に出来ると思うんで。
それでもまだ違いが出るっていうのであれば、テーブルスペースとかのDB定義の方の設定が違ってるんじゃないかなぁ。(先に書いたように、この辺に関してはさほど強くは無いんで、あまり突っ込んだ話は出来ないんですが。)
インポートしたテスト系のほうでもパフォーマンスの低下が起こるようであれば、多分、なんかのデータが悪さをしてるんじゃないかと(^^;
No.1
- 回答日時:
それほどまでに差があるとすると、例えば、インデックスの張り忘れなんかが頭をよぎります。
他にもリーフ分割など、インデックスがらみで遅くなる可能性はありますので、一度再生成されてみたらいかがでしょうか。
あとは、メモリやディスク領域の設定とか、あるいは統計情報なんかもパフォーマンスに関わってくるんですが… Oracleのチューニングについてはさほど詳しくは無いので、他の方にお任せします。
>例えば、インデックスの張り忘れなんかが頭をよぎります。
テスト機、本番機ともにインデックスは貼っていない模様です。
でもデータベースの設計などが、問題の原因なのかもしれないんですね。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー Webサイト構築フリーランスの案件受注について 1 2022/03/27 18:16
- その他(ネットショッピング・通販・ECサイト) JALの予約サイトについて 2 2023/03/09 00:33
- その他(ニュース・時事問題) マイナンバーカードの批判 25 2023/06/30 21:30
- イヤホン・ヘッドホン・補聴器 HD660SかHD650のヘッドホン購入を考えています。今回、ヘッドホンを購入は初めてでありますが、 1 2022/10/27 10:18
- 経済学 因子分析における因子得点の解釈について 1 2022/12/10 02:05
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- ネットワーク クラウド環境の範囲について教えてください。 7 2023/03/09 15:50
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
可変個数のデータはどう納める?
-
文字列中のスペースを排除する...
-
SQL*Loaderで、データを加工し...
-
アナライズとインデックス作成...
-
SQLのIN句について
-
SQL*LOADER実行時の...
-
データ表示順序
-
【ANALYZE】 テーブル・インデ...
-
ユニークインデックスについて
-
SQLの速度を調べるには…
-
oracle10g統計情報取得の確認方法
-
データを削除しても表領域の使...
-
datapumpの実行方法について
-
CLOB型へのINSERT
-
異なるスキーマからデータを抽...
-
特定のスキーマのテーブルを一...
-
Data Pump で大量データインポ...
-
postgreSQLのint型は桁数指定が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Viewにインデックスは張れ...
-
INDEXの無効化
-
SQL*Loaderで、データを加工し...
-
可変個数のデータはどう納める?
-
アナライズとインデックス作成...
-
主キー以外の項目にNotNull制約...
-
論理読み込みブロック数とは?
-
テスト環境と本番環境で、DBか...
-
文字列中のスペースを排除する...
-
インデックス作成後アナライズ...
-
索引の再構築をすべき?
-
Wordで複数の索引を作りたい
-
Oracle Databaseのインデックス...
-
統計情報について
-
SQLのIN句について
-
SQL*LoaderとInsertの違いについて
-
OracleTextの索引再構築について
-
目的のインデックスが使用され...
-
blevel=3のデータ作成
-
オラクル クラサバ環境で動作...
おすすめ情報