株式会社インサイトテクノロジー 発行
http://www.insight-tec.com
・;*;・゜’★,。・*;・゜’♪☆。・;*;゜’♪★。・;*;゜’☆ ●●●●
● Vol.57 ●●●
●● おら!オラ!Oracle −どっぷり検証生活− ●●
●●● ☆ 2001.05.23 ●
●●●●☆。・;*;・゜’★,。・*;・゜’♪☆。・;*;゜’♪★。・;*;゜;♪
◎● I┃ N┃ D┃ E┃ X┃!┃◎●
━┛━┛━┛━┛━┛━┛
┏━━━━━━━━━━━┓
┃★ Oracle検証生活 ★ ━━━━━━━━━━━━━━━━━━━━━━┓
┣━━━━━━━━━━━┛
┃
┣○ 【 ロ ッ ク に 関 す る 検 証 そ の 4 】
┃
┣━━━━━━━━━━━┓
┃★ 製 品 情 報 ★ ━━━━━━━━━━━━━━━━━━━━━…
┣━━━━━━━━━━━┛
┃
┣○ 【 Oracle管理ツール Performance Insight 】
┃ 国内3500ライセンスの販売実績を誇る最強のチューニングツール
┃
┣━● 【 Linux版 Performance Insight 】
┃ リリース予定
┃
┣○ 【 SQeeL(スキール)】
┃ WEBに適した新言語 ⇒ SQeeL!(オープンソースのフリーウェア)
┃
┣━━━━━━━━━━━┓
┃★ INFORMATION ★ ━━━━━━━━━━━━━━━━━━━━━…
┣━━━━━━━━━━━┛
┃
┣○ 【 連載情報 】
┣○ 【 書籍のご案内 】
┣○ 【 QAについて 】
┣○ 【 編集者より 】
┣○ 【 解 除 の 方 法 】
┃ http://www.insight-tec.com/jp/html/ora3/ora3.html
┃ 解除手続きは上記のURLよりお願い致します。原則として当方での解除
┃ は行っておりません、ご了承の程お願い申し上げます。
┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━…
┃
┣○ 【 注意事項 】
┃ 本文中にテーブルが含まれていますので、お読みになる際はMSゴシッ
┃ ク等、等幅フォントをお使いただくことをお勧めします。
┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ Oracle検証生活 □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
〜ロックに関する検証 その4〜
ペンネーム ちゃむ
前回は、トランザクションロックに関しての検証を行った。
今回は、インデックスが作成してあるテーブルに対して更新処理を行ったとき
の、トランザクションロックに関しての検証を行う。
実は、テーブルとインデックスを作成するときのinittransのデフォルト値は違
う。
テーブル インデックス
-------- ------------
inittrans 1 2
inittransは、トランザクションエントリの初期値を設定するものである。つま
り、事前にこの分だけトランザクションエントリを格納する領域を確保する。
なぜ、インデックスのデフォルト値は2なのであろうか。仕様だからと言ってし
まえばそれまでだが、インデックスを更新する際の動きに起因していると思う。
検証には、以下のテーブル a_2 と、インデックス a_2_idx を使用する。
t10man_orgは、empnoを連番にして、emp表を10万件に拡張したものである。
*************** テーブル a_2 及び インデックス a_2_idx ***************
SQL>create table a_2 as select * from t10man_org where rownum < 1000 ;
SQL>create index a_2_idx on a_2(empno) ;
**********************************************************************
まずは、TREEDUMPを取得して、テーブルの構造を把握する。
(TREE DUMPの詳細は、インデックスに関する検証を参照)
はじめに、インデックスのオブジェクトIDを検索する。
**********************************************************************
SQL> select object_id from dba_objects where object_name = 'a_2_idx' ;
OBJECT_ID
---------
5574
SQL> ALTER SESSION SET EVENTS 'IMMEDIATE TRACE NAME TREEDUMP LEVEL 5574' ;
**********************************************************************
その OBJECT_ID を指定して、TREEDUMPを取得する(この情報は、初期化パラメータ
のUSER_DUMP_DESTに出力される)。
-----------------------TREEDUMP-----------------------
branch: 0x100fc36 16841782 (0: nrow: 10, level: 1) ←ブランチブロック
leaf: 0x100fc37 16841783 (-1: nrow: 116 rrow: 116) ←EMPNO 1〜116
leaf: 0x100fc38 16841784 (0: nrow: 110 rrow: 110) ←EMPNO 117〜226
leaf: 0x100fc39 16841785 (1: nrow: 110 rrow: 110) ←EMPNO 227〜336
leaf: 0x100fc3a 16841786 (2: nrow: 110 rrow: 110) ←EMPNO 337〜446
leaf: 0x100fc3b 16841787 (3: nrow: 110 rrow: 110) ←EMPNO 447〜556
leaf: 0x100fc3c 16841788 (4: nrow: 110 rrow: 110) ←EMPNO 557〜666
leaf: 0x100fc3d 16841789 (5: nrow: 110 rrow: 110) ←EMPNO 667〜776
leaf: 0x100fc3e 16841790 (6: nrow: 110 rrow: 110) ←EMPNO 777〜886
leaf: 0x100fc3f 16841791 (7: nrow: 110 rrow: 110) ←EMPNO 887〜996
leaf: 0x100fc40 16841792 (8: nrow: 3 rrow: 3) ←EMPNO 997〜999
------------------------------------------------------
これを図で示したものを以下に示す。
http://www.insight-tec.com/html/reference/ref57_01.html
この構造を理解した上で、例えば、以下のSQL文を発行したらどうなるであろう
か?
**********************************************************************
SQL> update a_2 set empno=1000 where empno=1 ;
**********************************************************************
インデックス上では、EMPNO=1が格納されているブロックと、EMPNO=1000が格納
されているブロックが異なるため、それぞれのブロックでトランザクションエ
ントリが格納される。つまり、一回の更新処理で2つのトランザクションエント
リが格納されるのである。
以下にそのイメージ図を示す。
http://www.insight-tec.com/html/reference/ref57_02.html
また、以下に、EMPNO=1 と EMPNO=1000 が格納してあるインデックスのブロッ
クダンプの一部を示す。
***************************** EMPNO=1が格納されているブロック *****************************
Itl Xid Uba Flag Lck Scn/Fsc
0x01 xid: 0x0000.000.00000000 uba: 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x02 xid: 0x0007.00a.000000b2 uba: 0x00801e8c.0200.04 ---- 1 fsc 0x000e.00000000
row#0[1880] flag: ---D-, lock: 2 ← LOCKのフラグがセット(deleteフラグもセット)
col 0; len 2; (2): c1 02 ← EMPNO=1
col 1; len 6; (6): 01 00 e1 e4 00 00
row#1[1868] flag: -----, lock: 0
col 0; len 2; (2): c1 03 ← EMPNO=2
col 1; len 6; (6): 01 00 e1 e4 00 01
*******************************************************************************************
*************************** EMPNO=1000が格納されているブロック ****************************
Itl Xid Uba Flag Lck Scn/Fsc
0x01 xid: 0x0000.000.00000000 uba: 0x00000000.0000.00 ---- 0 fsc 0x0000.00000000
0x02 xid: 0x0007.00a.000000b2 uba: 0x00801e8c.0200.05 ---- 1 fsc 0x0000.00000000
col 1; len 6; (6): 01 00 fc 2b 00 0b
row#2[1853] flag: -----, lock: 0
col 0; len 3; (3): c2 0a 64 ← EMPNO=999
col 1; len 6; (6): 01 00 fc 2b 00 0c
row#3[1841] flag: -----, lock: 2 ← LOCKのフラグがセット
col 0; len 2; (2): c2 0b ← EMPNO=1000
col 1; len 6; (6): 01 00 e1 e4 00 00
*******************************************************************************************
インデックスのinittransのデフォルト値が2なのは、このように、update文を
発行したときに、複数のトランザクションエントリが必要になる可能性が高い
のも理由の一つと考えられないであろうか。
以上 茅ヶ崎にて
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ Oracle 管理ツール Performance Insight ■□÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Oracleを知り尽くしたメンバーが開発したOracleパフォーマンス監視ツール
の決定版。それがPerformance Insightです。インサイトテクノロジーの技術
者の知恵とノウハウがここに結集!
パフォーマンス監視だけでなくOracleを使用しているシステムの運用、管理、
そして開発にも役立つ機能がいっぱいです。
詳しくは以下のURLをご覧ください。
http://www.insight-tec.com/jp/html/products/products.html
また無料で試使用することも可能です。
是非お問い合わせください。
<マニュアル>
●Performance Insight3 マニュアル
Performance Insight3 User's Guide(マニュアル)の日本語版と英語版を
無料でダウンロード開始しました!
●POPSQL マニュアル
POPSQL マニュアルの英語版もダウンロード開始しました!
マニュアルのダウンロードは以下のURLから!
http://www.insight-tec.com/jp/html/products/manual.html
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ Linux版 Performance Insight■□÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Performance Insight の Linux版がリリースされる事になりました!
現在、5月末リリースに向けてテスト評価進行中です。
なお対応OSとしましては、Miracle Linux、RedHat 6.2を予定しています。
Oracle の対応バージョンとしましては、8.1.6 と 8.1.7でただいまテスト
中です。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ SQeeLのご案内 □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<プログラマ待望の言語SQeeL>
●手軽に使える、速い、そしてWEBに適した新言語SQeeL!
フリーソフトSQeeLは、以下のURLより好評ダウンロード中!
既に多くの方々にご利用いただいております。
あなたもSQeeLの世界を体験してみませんか?
http://www.SQeeL.org/
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ 連載情報 ■□÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<雑誌連載>
Oracleのエキスパートとして定評のある弊社のスタッフが執筆しております
連載記事に関してご紹介しています。
現在「DB Magazine」に、Oracleビギナー向け連載が掲載されています。
6月号が発売中ですので、是非ご覧下さい。
http://www.insight-tec.com/jp/html/topics/magazine.html
上記のURLでタイトルがご覧になれます。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ 書籍ご案内 □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<送料無料でお届けします>
1.「Oracle8 プロフェッショナルテクニック」
弊社のHPよりお申し込みいただいた方に限り、送料無料でお届けします。
専門書としては異例の速さで増刷が決定するほどの好評をいただいている
「Oracle8 プロフェッショナルテクニック」をぜひご活用ください。
2.「Oracleデータベース管理を極める13章」
「DB Magazine」に連載され大好評だった「体験的・DBAのお仕事」が
加筆され書籍化された同書は、おかげさまで発売以来3ヶ月足らずで第3刷
となりました。
好評につき、キャンペーンを拡大いたしました!上記の書籍はいずれも
消費税サービス+送料無料、つまり本体価格のみでご購入いただけます。
この機会をお見逃し無く。
さらに書籍をお買い上げいただいた方にはもれなく「Oracleの知恵袋」進呈中!
数に限りがございますので、在庫がなくなり次第終了とさせていただきます。
お早めに!
書籍ご購入のお申し込みは以下のURLより受付中!
http://www.insight-tec.com/jp/html/topics/books.html
<Oracleパーフェクトチューニングセミナー>
●6月にPerformance Insightを用いたチューニング手法を、余す所なく披露
しようと予定中です!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
■□ QAについて ■□÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<皆様からのQAを受付けております>
皆様のQAにはできるだけ、お答えしたいと思っています。
すべてのQAにお答えすることはできないかもしれませんが、
適宜メルマガ内でとりあげていく予定ですので、是非QAをお寄せください。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
□■ 編集者より □■÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
日曜日ついに、ディズニーランドデビューしてきましたー!朝が早かったの
もあって、ナチュラルハイではしゃいでいたら・・・。次の日に足が筋肉痛。
すっごい久しぶりに、健康的な遊びをしてスッキリした気分でしたね。でも
やっぱり体力が・・・。疲れが、全然とれないんですよー。少しずつでも体
を鍛えなきゃ!っと思わされましたねー・・。 by TI
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
<おら!オラ!Oracle−どっぷり検証生活−>
発行/編集:株式会社インサイトテクノロジー
http://www.insight-tec.com
マガジンID:0000030093
本メールマガジンに掲載された記事を許可なく転載することを禁じます。
Copyright (c) 1996-2001 , Insight Technology, Inc. All rights reserved.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━