- - PR -
SQL の劣化とは、ということで。
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-11-28 23:57
SQL の劣化とは、ということで。
データベース共通だと思いますが、 select * from table_name go というようにした時、 SQL は劣化(memory, cpu, harddisk に熱)すると理解しておくべきでしょうか?? そんなことはないでしょうか。 それと index が使われない書き方した場合、どうでしょうか。 やっぱり劣化するでしょうか。また、Oracle の場合、index が使われない書き方の種類とは?? varchar に 整数指定して書いた場合、index は全く機能しないとか、あったりして。。。。。。 また、Oracle の場合、上記事項を、どの SGA 用語と関連づけて考えるべきでしょうか。 SGA Fixed -- @ ライブラリーキャッシュ -- A DC キャッシュ -- B Java バッファ -- C その他 -- D 空き -- E 共有プール -- A = A+B+C+D+E DB バッファ -- B REDO バッファ -- C 総 SGA サイズ = @+A+B+C インスタンスのデータおよび、制御情報を含む共有メモリー領域 | ||||
|
投稿日時: 2006-11-29 00:29
おそらく 最適な実行手順が選択されないということでは
index が使われない最大のケースは SQlの問い合わせとINDEX項目が一致しないことです。 他にもいろいろありますが、とりあえずここでも読みましょう http://www.atmarkit.co.jp/fdb/rensai/orasql07/orasql07_1.html | ||||
|
投稿日時: 2006-11-29 00:55
SGA の構成ってこんな感じだったと思いますけど・・・
共有プール ライブラリキャッシュ ディクショナリキャッシュ Large プール Java プール DB キャッシュ Redo ログバッファ (Fixed) Overhead | ||||
|
投稿日時: 2006-11-29 09:41
索引については他の方が述べられていますので、、、略
劣化についてですが、、、、、 メモリーリークは別として、熱による劣化は私は考えたことがありません。 意識しているのは共有プールの使い方です。 使用したSQL文は共有プールに格納されます(ライブラリキャッシュ)。 その後、別のSession、または自身でも同一のSQL文を実行すると、共有プール内を検索して、 以前に使用されたSQLを探し出し、そのSQLを利用します。(解析済み、実行計画作成済み) 値だけ異なる同一内容のSQL文が同一とみなして実行するか、別として実行するかの判断は 初期化Paramaterで設定できます。(OracleVersionにもよりますが、、、) そのライブラリキャッシュがいっぱいになると最近使用されなかったSQL文が メモリーから消えます。逆に、最近使用されたSQL文が残ります。 この部分がスレ主さんの言う劣化?に相当しますか? | ||||
|
投稿日時: 2006-11-29 09:55
SQLでIN句とかBETWEENとか使うとインデックスが効かなくなるとかあったような・・・。
SQLはチューニングする? _________________ | ||||
|
投稿日時: 2006-11-29 10:29
同一人物としか思えないのだが、ということで。(プ http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=35192&forum=26 ハンドルを使い分けているのはなぜ?(そんでもって利用規約違反だったような気がする) | ||||
1
