Block Mode で紐解くOracle Real Application Clusters の          Buffer Sharing          要はCR        ~ 要はCR Block ~        Copyr...
その前に、、、          Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   2
What’s Real Application Clusters ?Real Application Clusters とは、、、構成における特徴                                         機能における特徴...
What’s Real Application Clusters ?Real Application Clusters とは、、、  パフォーマンスアップに対するソリューション    スケールアップによる性能・コストの限界   スケールアウトに...
What’s Real Application Clusters ?スケーラビリティーの壁                                                                             ...
Data Blockブロックとは、、、、 IOの最小単位 表領域にセグメントを格納 セグメントは複数のエクステントで構成 エクステントはブロックの集まり ブロック内にレコードを格納 Diskから読み取ったブロックはSGA内の バッファ・キャッシ...
What’s Block Mode?Mode とは、 OWNER        OBJECT_NAM        OBJ BA                   DBABLK LRU_FLAG        CLASS        TCH...
What’s Block Mode?Block Mode とは、  XCUR      排他/カレントモード  CR        読み取り一貫性モード  FREE      開放モード               Copyright © 20...
What’s Block Mode?Block Mode とは、  XCUR      排他/カレントモード  ・ブロックの最新イメージ  ・シングルインスタンス環境では SELECT してバッファ・キャッシュに載った時   点で XCUR に...
What’s Block Mode?Block Mode とは、    CR              読み取り一貫性モード    ・読み取り一貫性を担保するために生成される一時的なブロック    ・ブロック一つに対して複数の CR ブロックが...
What’s Block Mode?Block Mode とは、      CR                  読み取り一貫性モード              SELECT        UPDATE                    ...
What’s Block Mode?CRブロックはカレントブロックと同じハッシュチェーン上にアロケートされる   .......................   CHAIN: 8669 LOC: 0x7c772878 HEAD: [0x6e...
What’s Block Mode?CRブロックはカレントブロックと同じハッシュチェーン上にアロケートされる    CHAIN:       1    CHAIN:       2    CHAIN:       3             :...
What’s Block Mode?Block Mode とは、  FREE      開放モード               Copyright © 2011 Insight Technology, Inc. All Rights Reser...
What’s Block Mode?Block Mode とは、(RACの場合)  XCUR     排他/カレントモード  CR       読み取り一貫性モード  FREE     開放モード  SCUR     共有/カレントモード  P...
What’s Block Mode?Block Mode とは、(RACの場合)  SCUR     共有/カレントモード  ・更新されていない最新イメージ  ・RACを構成しているインスタンスの間で共有可能  ・更新がかかると XCUR にな...
What’s Block Mode?Block Mode とは、(RACの場合)  PI       過去イメージモード  ・インスタンスリカバリ用のブロックイメージ  ・XCUR ブロックに対して別インスタンスで更新がかかると PI になる ...
What’s Block Mode?Block Mode とは、(RACの場合)     NODE1                                               NODE2       SCUR         ...
What’s Block Mode?Block Mode とは、(RACの場合)     NODE1                                               NODE2       XCUR       SC...
What’s Block Mode?Block Mode とは、(RACの場合)     NODE1                                               NODE2       XCUR       PI...
What’s Block Mode?Block Mode とは、(RACの場合)     NODE1                                               NODE2       CR       PI  ...
Block Concurrent under RAC EnvironmentReal Application Clusters 環境におけるブロック競合に対するアプローチ テーブル - INSERT 時は ASSM 管理によりインスタンスごとに...
Big Data on Oracle Database 11gRDBMS としてどうやって大量データに立ち向かうかそもそも、、、     Oracle Database はキャッシュシステムでも、、、、     大量データに対しては、むしろメモ...
How dose it work for Full Table Scan?Oracle 11gR2 で大量データを検索する、、、、         バッファ・キャッシュにはデータブロック         がキャッシュされない!!OWNER   ...
Full Table Scan ? Or Direct Path Read ?困ったときは tkprofRows (1st) Rows (avg) Rows (max)   Row Source Operation---------- ----...
How About Direct Path Read?最後はやっぱり 10046 tracePARSE #140036514701864:c=13997,e=188175,p=0,cr=6,cu=0,mis=1,r=0,dep=0,og=1,p...
Direct Path Read Role.Direct Path Read の条件は、、、    SMALL TABLE ?                                          LARGE TABLE ?    ...
Direct Path Read Role.Direct Path Read の条件は、、、  条件1:    セグメントサイズ > 5 x “_small_table_threshold” x blocksize  条件2:    セグメント...
Direct Path Read and …Direct Path Read といえば、、、、               Copyright © 2011 Insight Technology, Inc. All Rights Reserve...
How about PQ ?PQとは、、、                                                                    Coordinator             QC       ...
How about INPQ ?Inter Node PQとは、、、     QC     QS   QS   QS               QS               Copyright © 2011 Insight Technol...
How dose INPQ work ?Oracle 11gR2 でINPQを実行してみたら、、、、         バッファ・キャッシュにはデータブロック         がキャッシュされない!!OWNER        OBJECT_NAM...
How dose INPQ work ?別インスタンスで更新してINPQを実行してみた、、         でも、バッファ・キャッシュにはデータブロック         も CR ブロックもキャッシュされない!!OWNER        OBJ...
How dose INPQ work ?困ったときの tkprof 再び.Elapsed times include waiting on following events:  Event waited on                  ...
How dose INPQ work ?  “gc cr block 2-way”の正体は、、、PARSING IN CURSOR #139733560208016 len=62 dep=1 uid=83 oct=3 lid=83 tim=13...
How dose INPQ work ?“obj#=0”の正体は、、、   v$transaction で UNDO セグメントとブロック   を特定 SQL> select xidusn , xidslot , ubablk , ubafil...
How dose INPQ work ?  “gc cr block 2-way”の正体は、、、……………………*** 2011-10-17 11:57:01.123WAIT #140517772372624: nam=PX Deq Credi...
How dose INPQ work ?“obj#=0”の正体は、、、   UNDOブロックのダンプを取得  SQL>  SQL> alter system dump datafile 4 block 16366;               ...
Consitency Read on INPQ.つまりINPQ の読み取り一貫性は、、、、   CR ブロックではなく、UNDOブロックの送信に   よって担保されている。  バッファ・キャッシュ上には載らないのでx$bh  から CR ブロッ...
How dose Direct Path Read work ?(after flush.)更新(未コミット)状態で、バッファ・キャッシュ をflush した状態で、Direct Path Read したら、、、         call   ...
How dose Direct Path Read work ?(after flush.)更新(未コミット)状態で、バッファ・キャッシュ をflush した状態で、Direct Path Read したら、、、    Elapsed time...
How dose Direct Path Read work ?(after flush.)更新(未コミット)状態で、バッファ・キャッシュ をflush した状態で、Direct Path Read したら、、、    select * fro...
ConculutionBlock ModeConcurrent under RAC EnvironmentDirect Path Read on 11gR2Parallel Query (INPQ)                Copyrig...
ConclutionBlock Mode  ・Oracle Database はブロックという単位でデータにアクセスしている  ・ブロックには処理に応じたモードがある  ・読み取り一貫性を担保するための専用のブロックがある(CRブロック)Con...
ConclutionDirect Path Read on 11gR2  ・11gでは全件検索時に自動的に Direct Path Read を選択する場合がある  ・Direct Path Read でアクセスした場合バッファ・キャッシュには...
Any Question ?             Copyright © 2011 Insight Technology, Inc. All Rights Reserved.   46
無断転載を禁ずこの文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。株式会社インサイトテクノロジーは本書の内容に関していかなる保証もしません。また、本書の内容に関連したいかなる損害についても責任を負いかねま...
Upcoming SlideShare
Loading in …5
×

[INSIGHT OUT 2011] C22 RAC buffer sharing の仕組み(yamashita)

2,682 views

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,682
On SlideShare
0
From Embeds
0
Number of Embeds
441
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

[INSIGHT OUT 2011] C22 RAC buffer sharing の仕組み(yamashita)

  1. 1. Block Mode で紐解くOracle Real Application Clusters の Buffer Sharing 要はCR ~ 要はCR Block ~ Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 1
  2. 2. その前に、、、 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 2
  3. 3. What’s Real Application Clusters ?Real Application Clusters とは、、、構成における特徴 機能における特徴- 複数サーバで共有ストレージに接続 - 複数ノードで並行処理することによる- 全てのサーバはACTIVE パフォーマンスアップ- サーバ間を高速ネットワークで接続 - 複数のACTIVEサーバによる高可用性- 複数インスタンスでDBを共有 - ノード追加による拡張性 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 3
  4. 4. What’s Real Application Clusters ?Real Application Clusters とは、、、 パフォーマンスアップに対するソリューション スケールアップによる性能・コストの限界 スケールアウトによるリソース限界の打破 スケーラビリティーの壁 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 4
  5. 5. What’s Real Application Clusters ?スケーラビリティーの壁 キーワードは ブロックの モード サーバは分割してもデータは共有 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 5
  6. 6. Data Blockブロックとは、、、、 IOの最小単位 表領域にセグメントを格納 セグメントは複数のエクステントで構成 エクステントはブロックの集まり ブロック内にレコードを格納 Diskから読み取ったブロックはSGA内の バッファ・キャッシュで管理 表領域 エクステント セグメント ブロック Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 6
  7. 7. What’s Block Mode?Mode とは、 OWNER OBJECT_NAM OBJ BA DBABLK LRU_FLAG CLASS TCH STATUS ---------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- -------- TTT T_TTT 74984 0000000062152000 4120 1 8 1 xcur TTT T_TTT 74984 0000000065D08000 4121 1 9 1 xcur TTT T_TTT 74984 0000000061916000 4122 1 4 8 xcur TTT T_TTT 74984 000000006BD0E000 4123 1 1 8 xcur TTT T_TTT 74984 000000006914E000 4124 1 1 8 xcur TTT T_TTT 74984 0000000068A2C000 4125 1 1 8 xcur TTT T_TTT 74984 00000000696F4000 4126 1 1 8 xcur TTT T_TTT 74984 000000006439E000 4127 1 1 8 xcur TTT I_TTT 74985 00000000638D8000 4128 1 8 1 xcur TTT I_TTT 74985 0000000069B74000 4129 1 9 1 xcur TTT I_TTT 74985 000000006267E000 4130 1 4 5 xcur TTT I_TTT 74985 0000000069558000 4131 1 1 1 xcur Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 7
  8. 8. What’s Block Mode?Block Mode とは、 XCUR 排他/カレントモード CR 読み取り一貫性モード FREE 開放モード Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 8
  9. 9. What’s Block Mode?Block Mode とは、 XCUR 排他/カレントモード ・ブロックの最新イメージ ・シングルインスタンス環境では SELECT してバッファ・キャッシュに載った時 点で XCUR になる ・行やセグメントに対する”排他”ではなく、インスタンスに対する”排他” Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 9
  10. 10. What’s Block Mode?Block Mode とは、 CR 読み取り一貫性モード ・読み取り一貫性を担保するために生成される一時的なブロック ・ブロック一つに対して複数の CR ブロックが生成される場合がある ・ブロック一つに対して生成される CR ブロックの数には上限がある キーワード:_db_block_max_cr_dba ・CR ブロックは必ずしも SELECT の際にだけ発生するわけではない 参照: http://www.insight-tec.com/mailmagazine/ora3/vol171.html Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 10
  11. 11. What’s Block Mode?Block Mode とは、 CR 読み取り一貫性モード SELECT UPDATE COMMITSESSION:1 SCN:10 XCUR SCN:20 XCUR undo SCN:20 XCUR DATA : AA DATA : BB DATA : BB SESSION:2 SELECT SELECT SCN:10 CR DATA : AA Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 11
  12. 12. What’s Block Mode?CRブロックはカレントブロックと同じハッシュチェーン上にアロケートされる ....................... CHAIN: 8669 LOC: 0x7c772878 HEAD: [0x6ebcadf8,0x6d7b0118] BH (0x6ebcad48) file#: 8 rdba: 0x0200101b (8/4123) class: 1 ba: 0x6ea76000 ........ BH (0x61bd0858) file#: 8 rdba: 0x0200101b (8/4123) class: 1 ba: 0x61af2000 ........ BH (0x623c3070) file#: 8 rdba: 0x0200101b (8/4123) class: 1 ba: 0x621cc000 ........ BH (0x6d7c5528) file#: 8 rdba: 0x0200101b (8/4123) class: 1 ba: 0x6d5fe000 ........ BH (0x647ccaa8) file#: 8 rdba: 0x0200101b (8/4123) class: 1 ba: 0x6469e000 ........ BH (0x6bbd77f8) file#: 8 rdba: 0x0200101b (8/4123) class: 1 ba: 0x6bb8a000 ........ BH (0x6d7b0068) file#: 8 rdba: 0x0200101b (8/4123) class: rdba: 1 ba: 0x6d42e000 <<< XCUR ba: ........ Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 12
  13. 13. What’s Block Mode?CRブロックはカレントブロックと同じハッシュチェーン上にアロケートされる CHAIN: 1 CHAIN: 2 CHAIN: 3 : CHAIN:8669 cache buffer chain latch : CHAIN:nnnnn Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 13
  14. 14. What’s Block Mode?Block Mode とは、 FREE 開放モード Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 14
  15. 15. What’s Block Mode?Block Mode とは、(RACの場合) XCUR 排他/カレントモード CR 読み取り一貫性モード FREE 開放モード SCUR 共有/カレントモード PI 過去イメージモード Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 15
  16. 16. What’s Block Mode?Block Mode とは、(RACの場合) SCUR 共有/カレントモード ・更新されていない最新イメージ ・RACを構成しているインスタンスの間で共有可能 ・更新がかかると XCUR になる ・別インスタンスで更新がかかると CR になる Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 16
  17. 17. What’s Block Mode?Block Mode とは、(RACの場合) PI 過去イメージモード ・インスタンスリカバリ用のブロックイメージ ・XCUR ブロックに対して別インスタンスで更新がかかると PI になる ・別インスタンスのXCUR ブロックがディスクに書き出されると CR になる Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 17
  18. 18. What’s Block Mode?Block Mode とは、(RACの場合) NODE1 NODE2 SCUR SCUR Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 18
  19. 19. What’s Block Mode?Block Mode とは、(RACの場合) NODE1 NODE2 XCUR SCUR CR SCUR Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 19
  20. 20. What’s Block Mode?Block Mode とは、(RACの場合) NODE1 NODE2 XCUR PI CR XCUR Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 20
  21. 21. What’s Block Mode?Block Mode とは、(RACの場合) NODE1 NODE2 CR PI CR XCUR Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 21
  22. 22. Block Concurrent under RAC EnvironmentReal Application Clusters 環境におけるブロック競合に対するアプローチ テーブル - INSERT 時は ASSM 管理によりインスタンスごとにブロックが分かれるためパフォーマンス問 題は起こりにくい - 同一ブロック内のレコードに対する UPDATE / DELETE は競合する - ブロックサイズの調整やパーティション化などで対応するインデックス - インデックスの先頭列にシーケンスなどのカウントアップ型の値や、時刻など連続する値を配 置している場合、各インスタンスから INSERT するとリーフブロックが競合する - パーティション化やインデックスの先頭列の配置を工夫することで対応する Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 22
  23. 23. Big Data on Oracle Database 11gRDBMS としてどうやって大量データに立ち向かうかそもそも、、、 Oracle Database はキャッシュシステムでも、、、、 大量データに対しては、むしろメモリ管理がオーバーヘッドにっじゃ、、、、 大量データの時はバッファ・キャッシュを使わないことにしよう Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 23
  24. 24. How dose it work for Full Table Scan?Oracle 11gR2 で大量データを検索する、、、、 バッファ・キャッシュにはデータブロック がキャッシュされない!!OWNER OBJECT_NAM OBJ BA DBABLK LRU_FLAG CLASS TCH STATUS---------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- -------TTT T_TTT 74298 0000000061252000 129 0 9 1 scurTTT T_TTT 74298 000000006124C000 130 0 4 1 scurTTT T_TTT 74298 00000000616BC000 3968 0 8 1 scurTTT T_TTT 74298 0000000061766000 3969 0 8 1 scur CLASS BLOCK TYPE 1 DATA BLOCK 4 SEGMENT HEADER 8 FIRST LEVEL BITMAP BLOCK 9 SECOND LEVEL BITMAP BLOCK Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 24
  25. 25. Full Table Scan ? Or Direct Path Read ?困ったときは tkprofRows (1st) Rows (avg) Rows (max) Row Source Operation---------- ---------- ---------- --------------------------------------------------- 1000000 1000000 1000000 TABLE ACCESS FULL T_TTT (cr=70299 pr=3882 pw=0 time=1454934 us cost=1067size=23000000 card=1000000)Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ library cache lock 1 0.00 0.00 library cache pin 1 0.00 0.00 SQL*Net message to client 66668 0.00 0.10 Disk file operations I/O 2 0.00 0.00 3- gc current block 3-way 2 0.00 0.00 enq: KO - fast object checkpoint 3 0.00 0.00 reliable message 1 0.05 0.05 2- gc current block 2-way 2 0.00 0.00 direct path read 1 0.01 0.01 SQL*Net message from client 66668 81.79 552.67 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 25
  26. 26. How About Direct Path Read?最後はやっぱり 10046 tracePARSE #140036514701864:c=13997,e=188175,p=0,cr=6,cu=0,mis=1,r=0,dep=0,og=1,plh=892208080,tim=1318202199367035EXEC #140036514701864:c=0,e=18,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=892208080,tim=1318202199367143WAIT #140036514701864: nam=SQL*Net message to client ela= 2 driver id=1650815232 #bytes=1 p3=0 obj#=13755tim=1318202199367193WAIT #140036514701864: nam=Disk file operations I/O ela= 4 FileOperation=2 fileno=8 filetype=2 obj#=13755tim=1318202199367910 nam= =gc 3- ela= obj#=74298 tim=1318202199372868WAIT #140036514701864: nam=gc current block 3-way ela= 930 p1=8 p2=130 p3=4 obj#=74298 tim=1318202199372868WAIT #140036514701864: nam=enq: KO - fast object checkpoint ela= 446 name|mode=1263468550 2=65569 0=1obj#=74298 tim=1318202199385235WAIT #140036514701864: nam=reliable message ela= 54967 channel context=2105825176 channel handle=2003413296broadcast message=2106905888 obj#=74298 tim=1318202199440846WAIT #140036514701864: nam=enq: KO - fast object checkpoint ela= 672 name|mode=1263468550 2=65569 0=1obj#=74298 tim=1318202199441635WAIT #140036514701864: nam=enq: KO - fast object checkpoint ela= 175 name|mode=1263468545 2=65569 0=2obj#=74298 tim=1318202199441894 nam= =gc 2- ela= obj#=74298 tim=1318202199461953WAIT #140036514701864: nam=gc current block 2-way ela= 277 p1=8 p2=3968 p3=8 obj#=74298 tim=1318202199461953 nam= =gc 3- ela= obj#=74298 tim=1318202199462497WAIT #140036514701864: nam=gc current block 3-way ela= 411 p1=8 p2=129 p3=9 obj#=74298 tim=1318202199462497 nam= =gc 2- ela= obj#=74298 tim=1318202199463276WAIT #140036514701864: nam=gc current block 2-way ela= 241 p1=8 p2=3969 p3=8 obj#=74298 tim=1318202199463276WAIT #140036514701864: nam=direct path read ela= 18383 file number=8 first dba=131 block cnt=13 obj#=74298 direct readtim=1318202199487706 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 26
  27. 27. Direct Path Read Role.Direct Path Read の条件は、、、 SMALL TABLE ? LARGE TABLE ? _small_table_threshold (blocks) _very_large_object_threshold (MB) NAME VALUE DESCRIPTION ------------------------------ ---------- ------------------------------------------------------------ db_block_buffers 0 Number of database blocks cached in memory _db_block_buffers 23030 Number of database blocks cached in memory: hidden parameter _small_table_threshold 441 lower threshold level of table size for direct reads _very_large_object_threshold 500 upper threshold level of object size for direct reads Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 27
  28. 28. Direct Path Read Role.Direct Path Read の条件は、、、 条件1: セグメントサイズ > 5 x “_small_table_threshold” x blocksize 条件2: セグメントサイズ > “_very_large_object_threshold” 条件3: 10949 イベントで”条件1”を無効化 参照: http://www.insight-tec.com/technical-information/11gr2からのフルスキャン.html Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 28
  29. 29. Direct Path Read and …Direct Path Read といえば、、、、 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 29
  30. 30. How about PQ ?PQとは、、、 Coordinator QC Consumer Slave QS QS Producer QS QS Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 30
  31. 31. How about INPQ ?Inter Node PQとは、、、 QC QS QS QS QS Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 31
  32. 32. How dose INPQ work ?Oracle 11gR2 でINPQを実行してみたら、、、、 バッファ・キャッシュにはデータブロック がキャッシュされない!!OWNER OBJECT_NAM OBJ BA DBABLK LRU_FLAG CLASS TCH STATUS---------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- -------TTT T_TTT 74298 0000000061252000 129 0 9 1 scurTTT T_TTT 74298 000000006124C000 130 0 4 1 scurTTT T_TTT 74298 00000000616BC000 3968 0 8 1 scurTTT T_TTT 74298 0000000061766000 3969 0 8 1 scur 読み取り一貫性は CLASS BLOCK TYPE どうやって保ってい 1 DATA BLOCK るんだろう? 4 SEGMENT HEADER 8 FIRST LEVEL BITMAP BLOCK 9 SECOND LEVEL BITMAP BLOCK Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 32
  33. 33. How dose INPQ work ?別インスタンスで更新してINPQを実行してみた、、 でも、バッファ・キャッシュにはデータブロック も CR ブロックもキャッシュされない!!OWNER OBJECT_NAM OBJ BA DBABLK LRU_FLAG CLASS TCH STATUS---------- ---------- ---------- ---------------- ---------- ---------- ---------- ---------- -------TTT T_TTT 74298 0000000061252000 129 0 9 1 scurTTT T_TTT 74298 000000006124C000 130 0 4 1 scurTTT T_TTT 74298 00000000616BC000 3968 0 8 1 scurTTT T_TTT 74298 0000000061766000 3969 0 8 1 scur 読み取り一貫性は CLASS BLOCK TYPE どうやって保ってい 1 DATA BLOCK るんだろう??? 4 SEGMENT HEADER 8 FIRST LEVEL BITMAP BLOCK 9 SECOND LEVEL BITMAP BLOCK Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 33
  34. 34. How dose INPQ work ?困ったときの tkprof 再び.Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ PX Deq: Execution Msg 16 1.14 11.95 Disk file operations I/O 9 0.06 0.06 latch free 2 0.09 0.10 gc cr block 2-way 2- 2955 0.00 0.99 latch: gc element 37 0.10 1.06 PX Deq Credit: send blkd 374 1.66 183.26 PX Deq Credit: need buffer 18 1.62 9.04 direct path read 12 0.10 0.61 gc cr block congested 9 0.00 0.00 PX qref latch 57 0.00 0.00 latch: object queue header operation 1 0.05 0.05 asynch descriptor resize 18 0.00 0.00 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 34
  35. 35. How dose INPQ work ? “gc cr block 2-way”の正体は、、、PARSING IN CURSOR #139733560208016 len=62 dep=1 uid=83 oct=3 lid=83 tim=1318820049985006 hv=3663269604 ad=75e32a68 sqlid=g3q0k53d5k3r4‘ select /*+ full (t_ttt) parallel (t_ttt , 4) */ * from t_tttEND OF STMTPARSE #139733560208016:c=0,e=584,p=0,cr=0,cu=0,mis=0,r=0,dep=1,og=1,plh=1049962929,tim=1318820049984999WAIT #139733560208016: nam=PX Deq: Execution Msg ela= 12913 sleeptime/senderid=268566527 passes=1 p3=2018548888 obj#=-1tim=1318820050011499WAIT #139733560208016: nam=Disk file operations I/O ela= 826 FileOperation=2 fileno=8 filetype=2 obj#=-1 tim=1318820050012533WAIT #139733560208016: nam=latch free ela= 91087 address=1610912864 number=497 tries=0 obj#=75802 tim=1318820050191026WAIT #139733560208016: nam=Disk file operations I/O ela= 64416 FileOperation=2 fileno=0 filetype=15 obj#=75802 tim=1318820050352159*** 2011-10-17 11:54:10.956WAIT #139733560208016: nam=Disk file operations I/O ela= 20 FileOperation=2 fileno=0 filetype=15 obj#=75802 tim=1318820050956064WAIT #139733560208016: nam=Disk file operations I/O ela= 5 FileOperation=2 fileno=4 filetype=2 obj#=75802 tim=1318820051379726WAIT #139733560208016: nam=gc cr block 2-way ela= 755 p1=4 p2=216 p3=139 obj#=0 tim=1318820051444120 nam= =gc 2- ela= obj#=0 tim=1318820051444120WAIT #139733560208016: nam=gc cr block 2-way ela= 583 p1=4 p2=12669 p3=140 obj#=0 tim=1318820051613291 nam= =gc 2- ela= obj#=0 tim=1318820051613291*** 2011-10-17 11:54:11.701WAIT #139733560208016: nam=gc cr block 2-way ela= 397 p1=4 p2=12668 p3=140 obj#=0 tim=1318820051701977 nam= =gc 2- ela= obj#=0 tim=1318820051701977WAIT #139733560208016: nam=gc cr block 2-way ela= 262 p1=4 p2=12667 p3=140 obj#=0 tim=1318820051702529 nam= =gc 2- ela= obj#=0 tim=1318820051702529WAIT #139733560208016: nam=latch: gc element ela= 12457 address=2080875056 number=192 tries=0 obj#=0 tim=1318820051740024WAIT #139733560208016: nam=gc cr block 2-way ela= 344 p1=4 p2=12666 p3=140 obj#=0 tim=1318820051755882 nam= =gc 2- ela= obj#=0 tim=1318820051755882WAIT #139733560208016: nam=gc cr block 2-way ela= 711 p1=4 p2=12672 p3=140 obj#=0 tim=1318820051797398 nam= =gc 2- ela= obj#=0 tim=1318820051797398WAIT #139733560208016: nam=gc cr block 2-way ela= 389 p1=4 p2=12671 p3=140 obj#=0 tim=1318820051827351 nam= =gc 2- ela= obj#=0 tim=1318820051827351WAIT #139733560208016: nam=gc cr block 2-way ela= 324 p1=4 p2=12670 p3=140 obj#=0 tim=1318820051852407 nam= =gc 2- ela= obj#=0 tim=1318820051852407WAIT #139733560208016: nam=gc cr block 2-way ela= 295 p1=4 p2=12675 p3=140 obj#=0 tim=1318820051869057 nam= =gc 2- ela= obj#=0 tim=1318820051869057WAIT #139733560208016: nam=gc cr block 2-way ela= 328 p1=4 p2=12674 p3=140 obj#=0 tim=1318820051884177 nam= =gc 2- ela= obj#=0 tim=1318820051884177 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 35
  36. 36. How dose INPQ work ?“obj#=0”の正体は、、、 v$transaction で UNDO セグメントとブロック を特定 SQL> select xidusn , xidslot , ubablk , ubafil from v$transaction XIDUSN XIDSLOT UBABLK UBAFIL ---------- ---------- -------- ------- 62 10 16366 4 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 36
  37. 37. How dose INPQ work ? “gc cr block 2-way”の正体は、、、……………………*** 2011-10-17 11:57:01.123WAIT #140517772372624: nam=PX Deq Credit: send blkd ela= 410107 sleeptime/senderid=268566527 passes=1 qref=2018547544 obj#=0tim=1318820221123410WAIT #140517772372624: nam=gc cr block 2-way ela= 251 p1=4 p2=16366 p3=140 obj#=0 tim=1318820221123917 nam= =gc 2- ela= p1=4 p2=16366 obj#=0 tim=1318820221123917WAIT #140517772372624: nam=gc cr block 2-way ela= 386 p1=4 p2=16365 p3=140 obj#=0 tim=1318820221702652WAIT #140517772372624: nam=gc cr block 2-way ela= 355 p1=4 p2=16364 p3=140 obj#=0 tim=1318820221703160WAIT #140517772372624: nam=asynch descriptor resize ela= 2 outstanding #aio=0 current aio limit=362 new aio limit=360 obj#=0tim=1318820221703383WAIT #140517772372624: nam=PX Deq Credit: free buffer ela= 8 sleeptime/senderid=0 passes=0 qref=0 obj#=0 tim=1318820221703467…………………… UNDOセグメント? Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 37
  38. 38. How dose INPQ work ?“obj#=0”の正体は、、、 UNDOブロックのダンプを取得 SQL> SQL> alter system dump datafile 4 block 16366; 16366; ............................. frmt: 0x02 chkval: 0x8c6d type: 0x02=KTU UNDO BLOCK ............................. *----------------------------- * Rec #0x2 slt: 0x0a objn: 75802 slt: 75802(0x0001281a) objd: 75802 tblspc: 8(0x00000008) * Layer: 11 (Row) opc: 1 rci 0x01 Undo type: Regular undo Last buffer split: No Temp Object: No Tablespace Undo: No rdba: 0x00000000 *----------------------------- KDO undo record: KTB Redo op: 0x02 ver: 0x01 compat bit: 4 (post-11) padding: 1 op: C uba: 0x01003fee.0070.01 KDO Op code: URP row dependencies Disabled xtype: XAxtype KDO_KDOM2 flags: 0x00000080 bdba: 0x02000fff hdba: 0x0200101a ............................. Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 38
  39. 39. Consitency Read on INPQ.つまりINPQ の読み取り一貫性は、、、、 CR ブロックではなく、UNDOブロックの送信に よって担保されている。 バッファ・キャッシュ上には載らないのでx$bh から CR ブロックの存在を確認できない。 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 39
  40. 40. How dose Direct Path Read work ?(after flush.)更新(未コミット)状態で、バッファ・キャッシュ をflush した状態で、Direct Path Read したら、、、 call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- SQL ID: 94ya02q4qvw95 Plan Hash: 892208080 Parse 1 0.01 0.18 0 6 0 0 select * from t_ttt Execute 1 0.00 0.00 0 0 0 0 call count cpu elapsed disk query current rows Fetch 66668 0.91 2.44 3882 70299 0 1000000 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.02 14.57 0 0 0 0 total 66670 0.92 2.63 3882 70305 0 1000000 Execute 1 0.00 0.00 0 0 0 0 Fetch 66668 8.00 1201.26 15509 1074144 0 1000000 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 66670 8.03 1215.83 15509 1074144 0 1000000 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 83 Number of plan statistics captured: 1 Rows (1st) Rows (avg) Rows (max) Row Source Operation ---------- ---------- ---------- --------------------------------------------------- 1000000 1000000 1000000 TABLE ACCESS FULL T_TTT (cr=1074144 pr=15509 pw=0 time=1095448521 us cost=1067 size=23000000 card=1000000) Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 40
  41. 41. How dose Direct Path Read work ?(after flush.)更新(未コミット)状態で、バッファ・キャッシュ をflush した状態で、Direct Path Read したら、、、 Elapsed times include waiting on following events: Event waited on Times Max. Wait Total Waited ---------------------------------------- Waited ---------- ------------ library cache lock 1 0.25 0.25 KJC: Wait for msg sends to complete 2 0.00 0.00 library cache pin 1 0.03 0.03 SQL*Net message to client 66668 0.00 0.11 gc cr grant 2-way 4 0.00 0.00 db file sequential read 11627 0.48 792.21 enq: KO - fast object checkpoint 2 0.00 0.00 reliable message 1 0.58 0.58 direct path read 1 0.01 0.01 Disk file operations I/O 1 0.00 0.00 gc cr block 2-way 1 0.00 0.00 gc cr disk read 11623 0.00 3.96 SQL*Net message from client 66668 51.74 117.64 latch: gc element 7 0.57 0.68 latch: row cache objects 2 0.44 0.46 os thread startup 1 0.78 0.78 KSV master wait 2 14.68 14.73 ASM file metadata operation 1 0.03 0.03 latch: cache buffers lru chain 2 0.02 0.02 latch: object queue header operation 2 0.02 0.03 ******************************************************************************** Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 41
  42. 42. How dose Direct Path Read work ?(after flush.)更新(未コミット)状態で、バッファ・キャッシュ をflush した状態で、Direct Path Read したら、、、 select * from t_ttt ……………… WAIT #140098314552216: nam=enq: KO - fast object checkpoint ela= 372 name|mode=1263468550 2=65568 0=1 obj#=75802 tim=1318830775444681 ……………… WAIT #140098314552216: nam=enq: KO - fast object checkpoint ela= 1267 name|mode=1263468550 2=65568 0=1 obj#=75802 tim=1318830776242317 ……………… WAIT #140098314552216: nam=gc cr block 2-way ela= 237 p1=4 p2=216 p3=139 obj#=0 tim=1318830780933124 WAIT #140098314552216: nam=gc cr disk read ela= 578 p1=4 p2=2314 p3=140 obj#=0 tim=1318830780982193 gc read WAIT #140098314552216: nam=db file sequential read ela= 72697 file#=4 block#=2314 blocks=1 obj#=0 db read tim=1318830781133792 WAIT #140098314552216: nam=gc cr disk read ela= 412 p1=4 p2=2313 p3=140 obj#=0 tim=1318830781225220 gc read WAIT #140098314552216: nam=db file sequential read ela= 52559 file#=4 block#=2313 blocks=1 obj#=0 db read tim=1318830781277868 WAIT #140098314552216: nam=gc cr disk read ela= 378 p1=4 p2=2312 p3=140 obj#=0 tim=1318830781315380 gc read WAIT #140098314552216: nam=db file sequential read ela= 75882 file#=4 block#=2312 blocks=1 obj#=0 db read tim=1318830781391595 WAIT #140098314552216: nam=gc cr disk read ela= 405 p1=4 p2=2071 p3=140 obj#=0 tim=1318830781418874 gc read WAIT #140098314552216: nam=db file sequential read ela= 36178 file#=4 block#=2071 blocks=1 obj#=0 db read tim=1318830781455143 FETCH #140098314552216:c=16998,e=6643732,p=36,cr=319,cu=0,mis=0,r=1,dep=0,og=1,plh=892208080,tim=1318830781480 092 ……………… Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 42
  43. 43. ConculutionBlock ModeConcurrent under RAC EnvironmentDirect Path Read on 11gR2Parallel Query (INPQ) Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 43
  44. 44. ConclutionBlock Mode ・Oracle Database はブロックという単位でデータにアクセスしている ・ブロックには処理に応じたモードがある ・読み取り一貫性を担保するための専用のブロックがある(CRブロック)Concurrent under RAC Environment ・RAC環境ではブロックのモードを切り替えながらインスタンス間で排他・共有 の状態を制御している ・共有モードのブロックは各インスタンスで同時にキャッシュすることができる ・排他モードのブロックは一つのインスタンスでのみキャッシュすることができる Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 44
  45. 45. ConclutionDirect Path Read on 11gR2 ・11gでは全件検索時に自動的に Direct Path Read を選択する場合がある ・Direct Path Read でアクセスした場合バッファ・キャッシュにはデータブロック はキャッシュされないParallel Query (INPQ) ・RAC環境で Parallel Query を実行すると複数のノードに処理が分散される ・Parallel Query で Direct Path Read が実行された場合でも読み取り一貫 性は担保される(ただし、CRブロックではなく UNDO セグメントを使って) ・ただし、、、CRブロックがキャッシュから追い出されている場合は、UNDOセグ メントの読み込みに膨大な時間がかかるのでくれぐれも注意すること Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 45
  46. 46. Any Question ? Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 46
  47. 47. 無断転載を禁ずこの文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。株式会社インサイトテクノロジーは本書の内容に関していかなる保証もしません。また、本書の内容に関連したいかなる損害についても責任を負いかねます。本書で使用している製品やサービス名の名称は、各社の商標または登録商標です。 Copyright © 2011 Insight Technology, Inc. All Rights Reserved. 47

×