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を実行しているアイロンウェアがどれくらい大きいのかよく分かりませんが、データセンターに住んでいます。
感謝していただきました。
フェッチサイズを500ほど大きく設定しようとしましたか? SQuirreLの場合、File> New Sessionのプロパティー> Generalのようなものだと思います。 また、別のトラブルシューティングノートでは、列を選択しなかった場合のクエリー速度はどのようになりますか?例えば'select 1 from tab where indexed_field = 'value'' – kfinity
パフォーマンスのチューニングは、データ量とスキュー、ディストリビューション、インデックス、統計などのすべてに関するものです。 – APC