« 関わらないで済むなら済ませたいものがある | メイン | 掠れてるぜ »
2005年08月22日
おばかさん
リプレイスが一応完了する。マシンのスペックが(文字通り)桁違いなので、もう処理に全然ストレスを感じない……
………………
ってどうして旧マシンで一瞬の処理が5秒も掛かってるんだこいつ。
SQLをアナライズしてみる。
SQL> ALTER SESSION SET SQL_TRACE=TRUE;
としてトレース情報を取得開始。
SQL> select * from tblA a, tblB b where a.no=b.no;
そしてSQL実行。tblBのnoにはインデックス作成済み。ていうか主キー。
SQL> ALTER SESSION SET SQL_TRACE=FALSE;
トレースの終了。
bdumpディレクトリに移動して、トレースファイルから結果テキストを作成します。
$ tkprof ora_xxx.trc xxx.prf explain=ID/パスワード
実行計画を見てみると、やたら掛かっている文がある。さてさて……?
> TABLE ACCESS FULL OF 'tblB'
( ゚д゚)
(つд⊂)ゴシゴシ
(;゚д゚)
(つд⊂)ゴシゴシ
_, ._
(;゚ Д゚)
> TABLE ACCESS FULL OF 'tblB'
ちょwwwwwwwおまwwwwwwwwww
何全表走査してんだよ馬鹿wwwwwwっうぇwwwww!!!
同じSQLを旧サーバで走らせてみる。もちろんインデックス検索をしている。
バージョン上げたら馬鹿になったのかと本気で心配する。
よくよく調べていくと、どうもオプティマイザ(SQL処理エンジンみたいなもん)の処理判定方式にコストベースとルールベースというのがあって、
コストベースだと判定が狂ってインデックスが使われないことがあるっぽい。
統計情報があるとコストベースにされる。新旧のDBで統計情報の有無を見てみると、
旧サーバには統計情報が無く、新サーバには統計情報がある。
試しに統計情報を消してみるとインデックスを使って検索してくれました何このコ。
ていうか他にも同じような結合して統計とってる表たくさんあるのになんでこの表だけ全表走査されるのかぜんぜんわかんない
っていうか統計情報超ヤクタタズ?
_| ̄|○
もうちょっとこのコに振り回されるのもカンベンしてほしくなってきた……
投稿者 kagerou : 2005年08月22日 03:16
トラックバック
このエントリーのトラックバックURL:
http://scriptlife.hacca.jp/cgi-bin/MT/mt-tb.cgi/166