2017-08-02 17 views
0

Oracleデータベースからデータを取得しようとしていますが、パフォーマンスが非常に低下しているようです。Oracleデータベースのパフォーマンスの問題

私たちは約10Mの行のテーブルを持っています。私たちは、1.3k行{select * from tab where indexed_field = 'value'}(簡略化した形式)を取り上げています。

SQuirreLは、「実行:0.182s、建物出力:28.921s」というクエリを報告します。返されるデータは、340kBのようなものを占めます(例えば、テキストファイルにコピー/ペーストされたとき)。

建物の出力段階では、特にクエリが実行されたときにはるかに時間がかかります(5分超)。それを繰り返すほうがはるかに速く走っているようです - 例えば、上記の29sの値。これは、データベースの一時的な過負荷の結果である可能性がありますか?リピートデータのバッファリングによる可能性がありますか?

50行(13kB)につき2番目の数字が合理的な数字か、またはこれは予想外に大きいですか?

データが物理的に(物理的な順序はインデックスの順序と同じになるように)グループ化され、実行されているという事実を利用できない可能性はありますか行ごとに別々のディスクを読み込み、もしそうなら、どのようにしてより効率的であると説得することができますか?

データにはあまり奇妙なものはありません。通常、行数が22行で、通常varchar2(250)と定義されますが、通常は数十文字になります。私は、Oracleを実行しているアイロンウェアがどれくらい大きいのかよく分かりませんが、データセンターに住んでいます。

感謝していただきました。

+0

フェッチサイズを500ほど大きく設定しようとしましたか? SQuirreLの場合、File> New Sessionのプロパティー> Generalのようなものだと思います。 また、別のトラブルシューティングノートでは、列を選択しなかった場合のクエリー速度はどのようになりますか?例えば'select 1 from tab where indexed_field = 'value'' – kfinity

+0

パフォーマンスのチューニングは、データ量とスキュー、ディストリビューション、インデックス、統計などのすべてに関するものです。 – APC

答えて

0

oracleの10M行のテーブルの1.3k行はそれほど大きくありません。

2番目の結果が最初の結果より速い理由は、oracleがfisrtクエリのRAMにデータをロードし、2番目の結果をRAMから読み込むためです。

インデックスがうまく使用されていますか?たぶんあなたは説明の計画をして、結果を見せてくれるでしょうか?取るべき

-1

ほとんど即時アクションは、次のとおりです。

  1. は、テーブル上のインデックスを再構築します。
  2. テーブルに統計情報を収集します。
  3. 実行計画を抽出するためにクエリを再実行する前に、次の手順を実行します。

    sql> set autotrace traceonly enable;

ターンこのオフによって:

また
sql> set autotrace off ; 

、以下の結果を提供します。

sql> sho parameter SGA 
sql> sho parameter cursor 
sql> select banner from v$version; 
  • Abhi
1

kfinity>を、あなたのフェッチを設定しようとしたことがありサイズが大きい、500ほどそう?

これが1つです。それを一気にスピードアップします。 2.5秒で1.3k行、19秒で9.5k行その提案をありがとう。

ところで、select 1を実行すると、ディスクアクセスがボトルネックではないことが推測される約10%のスピードアップしか得られません。

他者> フェッチプランです:

Operation   Options     Object  Mode  Cost Bytes Cardinality 
0 SELECT STATEMENT           ALL_ROWS 6  17544 86 
1 TABLE ACCESS  BY INDEX ROWID BATCHED TAB   ANALYZED 6  17544 86 
2 INDEX    RANGE SCAN    TAB_IDX  ANALYZED 3    86 

私の限られた理解した上で、OKに見えています、。

「翔パラメータ」物事が離れて与えた選択から、(SQLエラーを)動作しませんでした:

Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production 
PL/SQL Release 12.1.0.2.0 - Production 
CORE 12.1.0.2.0 Production 
TNS for Linux: Version 12.1.0.2.0 - Production 
NLSRTL Version 12.1.0.2.0 - Production 

私は唯一の優れた質問がにフェッチサイズを設定する欠点何」であると思います大きな値? "私たちが常に結果セット全体を読み終えることを考えれば(例外がなければ)私の推測は「それほどではありません」であろう。そうですか?

とにかく、お返事いただいた方々に感謝し、解決に感謝します。

関連する問題