- ベストアンサー
処理高速の為にすること(oracle8.1i)
oracle8.1iを使っています。 データ量が増えてきたために、処理が遅くなってきました。 下記のことを行うと思っていますが (1)データをEXPORTしたのち、DBを削除し、再度DBを作成し、EXPORTしたデータをIMPORTする (2)INDEXをはりなおす。 (1)と(2)は同じ効果がありますか? どちらの方が効果がありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>(1)と(2)は同じ効果がありますか? >どちらの方が効果がありますか? どちらが効果があるかという問いに対しては(1)だと思います。 (2)はインデックスの断片化を解消するだけですから。 ただ、状況を把握しないうちに何かのアクションを起こしても効果が薄いと思います。 たとえば、コストベースで運用しているのにシステム統計情報が古いものを使用している場合、インデックスの再構成してもあまり効果が得られない場合があります。この場合は統計情報を収集しなおします。 インデックスの再構成が必要かはANALYZE INDEX xxx VALIDATE STRUCTUREコマンドとINDEX_STATSデータディクショナリビューをつかって確認してみてください。 Full Table Scanで遅いようならハイウォータマーク(HWM)を確認してHWM高くなっているのであれば、データをExportしてImportしなおす等の考慮が必要です。
その他の回答 (3)
- trictrac
- ベストアンサー率38% (10/26)
両方とも効果がありますよ。 但し(1)、(2)どちらも張り直す場合は容量計算をして、 InitalExtent、NextExtentを考えて張らないと、意味はないですが。 また、Oracle7.3以降、標準はコストベースですが、 ANALYZEを使用しない限り、Oracleはルールベースで読みます。 ちなみに、ANALYZEをしてもルールヒント句を使えば、 ルールベースで読みますよ。 処理が遅くなってきたとの事なので、SQL文のEXPLAIN PLANで その結果のFULL SCANをUNIQUE SCANやRANGE SCANになるように する方法もあるます。 但し、RANGE SCANでも遅い場合もあり、かえってFULL SCAN の方が速い場合もあります。 FULL SCANの方が早い場合もあります。
- atkuma
- ベストアンサー率11% (5/45)
データ量が増加してきた場合のパフォーマンスダウンは、1と2であれば、1です。2は意味なし。 なんでもかんでも、Index検索をするのがパフォーマンスアップに繋がるとは限らないよ。 Oracle8なら、インスタンスは変更してない?標準はコストベースだから、統計情報が古くなって、キャッシュヒット率も低下してるのでしょう。 システム管理として、ANALYZEは定期運用を考慮されていますよね。その他、ディスク分散などは?
- zap35
- ベストアンサー率44% (1383/3079)
Oracleの検索が遅くなる要因はいろいろありますが、データ量の増加によるものについて言及します。 SQLはルールベースですかコストベースですか? コストベースだと最適な検索方法をOracleが判断するため、データ量が増えてくるとその判断が実データと合わずに遅くなる(Full scanが発生する)ことがあります。 まず最初にTBLSPACEに対してANALYZE処理を実行して見て下さい。それでもFull scanが発生しているようなら適切なINDEXを追加する方が効果的です (INDEXを張りなおすの意味は少し違うように感じました) TBLSPACEの自動拡張を行う設定になっていてEXTENT数が多くなっている場合は(1)も意味があると思います。