ちゃむ今回から、ソートに関しての検証を行なう。ソートがシステムのボトルネックになることは、度々ある。大量更新を行なっていない時間帯にあるディスクに書き込みが集中していて、調べていくとHEAVYなSORTを伴うSQL文によって一時表領域(ソート用の表領域)の書き込み量が激しいなんてことはよくある。どのような処理がソートを伴なうのか見ていこう。INDEX、UNION、INTERSECT、MINUS、ソート・マージ結合、ANALYZEコマンドなどがソートを伴う処理である。ソートを伴う処理を実行して実際にソートを行なったかどうかを確認してみよう。その前に、V$SYSSTATのソートに関する統計情報の説明をしよう。(disk)の情報をとってソート全体の回数に対してメモリー上で何パーセント行われているか(メモリーソート率)をチェックする方法は以下のSQLで確認できる。99.969947実際は、上記のSQL文よりも、チューニングしたい時間帯でvalueの差分を取ってメモリーソート率を求めるほうが有効である。(上記のSQLはORACLEが起動してからのメモリーソート率である。)<実際にソートを伴なう処理かどうかを確認する方法>実際にソートを行なう処理かを確認する方法としては、システム全体の統計情報を格納しているV$SYSSTATではなく、セッション別に統計情報を格納してあるV$SESSTATで見ることにする。(rows)の累計値の差分をとって実際にソートをしたどうか確認しよう。1.セッションIDを確認する。10もし、V$MYSTATへのSELECT権限があるなら以下のSQLでもわかる。2;2.そのセッションからソートをすると思われる処理を実行する。E.DEPTNO=D.DEPTNO;3.別のセッションからソートを行なっているセッションのSORT回数を検索する。先ほど検索したSID=10で絞り込むことがポイントである。'sorts%';上記のSQL文でソート前とソート後の統計情報の値を確認する。ENAME12行が選択されました。(NT版のEMP表を作成するscott.sqlというスクリプトは、そのままではEMPNO=7788と7876のデータはINSERT文で失敗するバージョンがある。みなさんの環境では14件かもしれないが私の環境では14-2=12件しか入っていない。=263-251=12行これは、メモリ上でソートを1回行なったことを示す。(memory)の値が増えてしまう。(memory)が1増える。(リカーシブコールの中にはSORTを行なっているようなSQL文は見あたらない。なんで増えるが不思議)この方法は、ソート回数に限らず、他の統計情報に対しても同様なやり方で利用できるので応用していただきたい。途中で取りやめました。今回のアンケートに答えていただき、抽選に参加していただければと思います。reserved.トップページ企業概要プライバシーポリシ。