Insight Technology, Inc

インサイトテクノロジー

Japanese | English

株式会社インサイトテクノロジー 発行
http://www.insight-tec.com/jp/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━Vol.23
   ☆☆☆  おら!オラ! Oracle −どっぷり検証生活− ☆☆☆
                             2000.09.20
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
    他ではなかなか得られない、マニュアルを読んでもわからない、
   そういったOracleに関する技術情報をお届けするメルマガです。
   実際に検証した結果も交えてお伝えしていきます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┏━━━━◆ プログラマ待望の言語SQeeL、いよいよ登場!◆━━━━┓
★★  ┏━━━━━━━━━━━━━━━━━━━━━━━┓  ★★
★★  ┃ 手軽に使える、速い、そしてWEBに適した新言語 ┃  ★★
★★  ┃  フリーソフト、SQeeLを是非お試しください。 ┃  ★★
★★  ┃      ダウンロード本日開始!!      ┃  ★★
★★  ┗━━━━━━━━━━━━━━━━━━━━━━━┛  ★★
★★SQeeLに関する詳細は、弊社HPあるいはSQeeLのHPにて紹介中です★★
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
http://www.insight-tec.com/jp/sqeel/sqeel.html
http://www.sqeeL.org
★既に多くの方々がアクセス、ダウンロードして下さっているようです。★
★★心より御礼申し上げます。今後ともよろしくお願い申し上げます。★★


<<目次>>
■Oracle検証生活・・・続・INDEXに関する検証 その6
■お知らせ・・・ ○Oracle管理ツール Performance Insight
		○無料セミナーのご案内	○連載情報
		○書籍ご予約受付中	○QAについて
■編集者より

■■注意事項!!■■
本文中にテーブルが含まれていますので、お読みになる際はMSゴシック等、
等幅フォントをお使いただくことをお勧めします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle検証生活 ▼━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<続・INDEXに関する検証 その6> ペンネーム モンキーターン

前回のメルマガで、空の Leaf_BLOCKにアクセスしてしまう原因は、Branch_BLOCK
が空の Leaf_BLOCKまでも管理の対象にしてしまっているためであることは理解
していただけたと思う。

今回は、Branch_BLOCKが Leaf_BLOCKを管理するというインデックスの構造によっ
て、思わぬところでリーフ・分割が発生してしまうという現象を、検証結果を
交えながら説明していこう。


--- どっぷり検証生活 START! ---

<<<検証手順>>>

(1)構成
      テーブル名:EMP_TEST(EMPNO(インデックス・キー)以外はEMP表と同じ)
      データ件数:EMPNO 1001〜1123および 3001の計124件

(2)EMPNO = 3001を削除

(3)EMPNO = 2001を挿入

上記の手順で処理を行った際の、それぞれの TREEDUMPを比較しながら、リーフ・
分割が発生する様子を見て行こう。

<<<検証用テーブルとINDEXの作成>>>

  1.ユーザー SCOTTでテーブル EMP_TESTという 124件のテーブルを作成
    (EMPNO 1001〜1123および 3001の計 124件を挿入)

     ここで EMPNO 1001〜1123および 3001の値を挿入した理由は、1Leaf_BLOCK
     (先頭の Leaf_BLOCK)中に EMPNO 1001〜1123を FULLに格納し(計算上、
     1Leaf_BLOCK中に格納可能なキーの数が 123件(DEFAULT STORAGE句の設定
     によって異なる)、もう1つの Leaf_BLOCK(2番目の Leaf_BLOCK)には、
     EMPNO = 3001のみの 1件を格納したいためである。

  2.テーブル EMP_TESTの項目 EMPNOに対して、EMP_TEST_INDEXという INDEX
     を作成(INDEXは別の表領域に作成)


<<<結果>>>

Leaf_BLOCK(1)に EMPNO = 1001〜1123(123件)
Leaf_BLOCK(2)に EMPNO = 3001(1件)

注:括弧の数字(1)及び(2)は、下記の TREEDUMPの結果を参照。

----- begin tree dump
branch: 0x2400003 37748739 (0: nrow: 2, level: 1)
   leaf: 0x2400004 37748740 (-1: nrow: 123 rrow: 123) ---→(1)
   leaf: 0x2400005 37748741 (0: nrow: 1 rrow: 1) --------→(2)
----- end tree dump


次に、テーブル内の EMPNO = 3001を削除する。

DELETE FROM EMP_TEST WHERE EMPNO = 3001 ;

----- begin tree dump
branch: 0x2400003 37748739 (0: nrow: 2, level: 1)
   leaf: 0x2400004 37748740 (-1: nrow: 123 rrow: 123) ---→(1)
   leaf: 0x2400005 37748741 (0: nrow: 1 rrow: 0) --------→(2’)
----- end tree dump

(2’)の rrow = 0 により、EMPNO = 3001が削除され、Leaf_BLOCKが空になっ
たことが確認できる。


次に、テーブル EMP_TESTに EMPNO = 2001を挿入する。

INSERT INTO
     EMP_TEST
         VALUES (2001,'SMITH','CLERK',7902,
                 to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);

----- begin tree dump
branch: 0x2400003 37748739 (0: nrow: 3, level: 1)
   leaf: 0x2400004 37748740 (-1: nrow: 67 rrow: 67)---→(1)
   leaf: 0x2400006 37748742 (0: nrow: 57 rrow: 57)
   leaf: 0x2400005 37748741 (1: nrow: 0 rrow: 0)------→(2’)
----- end tree dump


上記の結果より、検証テーブル EMP_TESTに EMPNO = 2001を挿入することによ
って、リーフ・分割が発生している様子が確認できる。

シーケンシャルにデータを挿入する場合、Leaf_BLOCKが満杯になったら新たな
Leaf_BLOCKを用意し、その Leaf_BLOCKに対して順次挿入を行っていくので、リ
ーフ・分割など発生するはずがない。

しかし、今回のケースは、シーケンシャルに値を挿入しているにも関わらず、
リーフ・分割が発生しているのはなぜだろう?

Leaf_BLOCK(1)が満杯の状態でかつ、Leaf_BLOCK(2’)が空の状態であれば、
リーフ・分割することなく、Leaf_BLOCK(2’)に格納されることを予想した方
も少なくないであろう。

しかし、Leaf_BLOCK(2’)は、ブランチで 3001以上の値を格納するための
Leaf_BLOCKとして管理されているので、Leaf_BLOCK(1)とLeaf_BLOCK(2’)
の間に新たなブロックを用意し、その Leaf_BLOCKに値 2001(1件)のみを格納
するというのが、私自身が予想した結果であった。

にも関わらず、Leaf_BLOCK(1)に対してリーフ・分割が発生してしまっている。

理由として考えられるのが、インデックスの構造上、Leaf_BLOCKが満杯になっ
た場合、もし、その Leaf_BLOCKの隣に既存の Leaf_BLOCKが存在しかつ、ブラン
チ上でその Leaf_BLOCKが挿入されようとしている値よりも大きい値のキーを格
納するための Leaf_BLOCKとして管理されている場合、新たな Leaf_BLOCKを用意
するのではなく、リーフ・分割を発生させるものと考えられる(推測)。

数回に渡り、インデックスに関する構造上の問題や、空のブロックをアクセス
してしまう原因などを紹介してきたが、結論として強調したいのは、レンジ検
索である。インデックスの構造がある程度歪んでいても、イコール検索では、
そこそこの効果は得られるはずである。問題は、レンジ検索時に、削除処理に
よって空になった Leaf_BLOCKや、リーフ・分割によって密度が薄くなった
Leaf_BLOCKなどを大量にアクセスしてしまうことである。

是非、TREEDUMPを活用し、読者(貴社)なりの REBUILDのタイミング(周期)を
掴んでもらいたいものである。



今回でモンキーターンが送るメルマガは最終回です。
約1ヶ月半の間、ご購読ありがとうございました。
少しは、読者の皆様のお役に立てたでしょうか?
より良いメルマガにするために、感想等をメールでお聞かせくだされば幸いです。
また、いつか会うときまで・・・さようなら・・・

引き続き、ご購読よろしくお願いします。

冒頭で説明したORACLEと親和性のあるWEBに適した新言語 自社開発フリーソフト
言語「SQeeL」のこともよろしくお願いします!!!!

http://www.insight-tec.com/jp/sqeel/sqeel.html
http://www.sqeeL.org



今までありがとうございました。

茅ヶ崎にて

〜続・INDEXに関する検証 その6〜

by モンキーターン


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ Oracle 管理ツール Performance Insight ▼━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Oracleを知り尽くしたメンバーが開発したOracleパフォーマンス監視ツール
の決定版。それがPerformance Insightです。インサイトテクノロジーの技術
者の知恵とノウハウがここに結集!
パフォーマンス監視だけでなくOracleを使用しているシステムの運用、管理、
そして開発にも役立つ機能がいっぱいです。
詳しくは以下のURLをご覧ください。

http://www.insight-tec.com/jp/products/products.html

また無料で試使用することも可能です。
是非お問い合わせください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 無料セミナーのご案内 ▼━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<スキルアップセミナー>
●実践から学ぶDBチューニング第1回「INDEX利用の落とし穴」

きたる9月29日、上記の無料セミナーが開催されます。
また同時に、Oracleの運用管理ツールとして多くのお客様にご利用いただいて
おりますPerformance Insightの新バージョンのご紹介も行います。
有意義な内容のセミナーに無料で参加できるチャンスをどうぞお見逃しなく。
詳細およびお申し込みは以下のURLにて。

http://www.insight-tec.com/jp/topics/seminar.html


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 連載情報 ▼━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<雑誌連載:体験的・DBAのお仕事(DB Magazine(翔泳社))>
Oracleのエキスパートとして定評のある弊社のスタッフが執筆しております
連載記事です。Oracle関連業務に携わる方、是非ご一読ください。
10月号が発売中です。

http://www.insight-tec.com/jp/topics/magazine.html
上記のURLで各回のタイトルがご覧になれます。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 書籍ご予約受付中 ▼━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<送料無料でお届けします>
「Oracle8 プロフェッショナルテクニック」は大好評につき、現在在庫切れと
なっており、ご注文いただいた皆様にはたいへんご迷惑をおかけしております。
まもなく入荷する予定ですので、今しばらくお待ちください。
これからご注文いただく方も、入荷次第発送させていただくということで
予約注文を受付けておりますのでよろしくお願い申し上げます。

また弊社のHPよりお申し込みいただいた方に限り、送料無料でお届けします。
専門書としては異例の速さで増刷が決定するほどの好評をいただい
ている「Oracle8 プロフェッショナルテクニック」をぜひご活用ください。

http://www.insight-tec.com/jp/topics/books.html
ホームページより受付中です。お早めに!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ QAについて ▼━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<皆様からのQAを受付けております>
皆様のQAにはできるだけ、お答えしたいと思っています。
すべてのQAにお答えすることはできないかもしれませんが、
適宜メルマガ内でとりあげていく予定ですので、是非QAをお寄せください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▼ 編集者より ▼━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
冒頭でご紹介しているSQeeLのホームページに、予想を上回るたくさんのアク
セスがありました。本当にありがとうございます。まだアクセスしていらっ
しゃらない方も、是非一度お試しくださいネ。
今後ともスタッフ一同、よりよい技術を提供していけるよう努力して参ります
ので、今後ともよろしくお願いします。			 by UA

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
登録・解除は以下のURLで行うことができます。
http://www.insight-tec.com/jp/em/mail_magazine.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<おら!オラ!Oracle−どっぷり検証生活−>
発行/編集:株式会社インサイトテクノロジー
http://www.insight-tec.com/jp

マガジンID:0000030093
本メールマガジンに掲載された記事を許可なく転載することを禁じます。
Copyright (c) 1996-2000, Insight Technology Inc., All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━



 

 メールマガジン登録/解除