1/43 Tanel PoderEoug User2User day Freelists vs ASSM in Oracle9i Tanel Poder independent technology consultant 20-Oct-03 OracleWorld.

Slides:



Advertisements
Similar presentations
CHAPTER 4 Tablespaces and Datafiles. Introduction After installing the binaries, creating a database, and configuring your environment, the next logical.
Advertisements

Rollback Segments Nilendu Misra (MAR99)
The Architecture of Oracle
Module 2: Database Architecture
More on File Management
<Insert Picture Here>
DB-03: A Tour of the OpenEdge™ RDBMS Storage Architecture Richard Banville Technical Fellow.
Enqueue Waits : Locks. #.2 Copyright 2006 Kyle Hailey Wait Tree - Locks Waits Disk I/O Library Cache Enqueue Undo TX 6 Row Lock TX 4 ITL Lock HW Lock.
CS4432: Database Systems II Buffer Manager 1. 2 Covered in week 1.
5 Copyright © 2005, Oracle. All rights reserved. Managing Database Storage Structures.
Free Space and Allocation Issues
Buffer Cache Waits. #.2 Copyright 2006 Kyle Hailey Buffer Cache Waits Waits Disk I/O Buffer Busy Library Cache Enqueue SQL*Net Free Buffer Hot Blocks.
File Systems.
Oracle Architecture. Instances and Databases (1/2)
Page Footer Keed Education Oracle Database Administration Basic Copyright 2009 Keed Education BV Version Concept.
Primer on Structure& Storage Analysis Primer on Structure & Storage Analysis This presentation is supposed to give a simple and brief overview for storage.
Basic Storage Concepts and Settings
File Systems Examples.
Chapter 11: File System Implementation
CS 333 Introduction to Operating Systems Class 18 - File System Performance Jonathan Walpole Computer Science Portland State University.
Harvard University Oracle Database Administration Session 5 Data Storage.
Oracle Database Administration Database files Logical database structures.
CHAPTER 11 Large Objects. Need for Large Objects Data type to store objects that contain large amount of text, log, image, video, or audio data. Most.
ICS 220 – Data Structures and Algorithms Week 7 Dr. Ken Cosh.
Database Administration TableSpace & Data File Management
Chapter Oracle Server An Oracle Server consists of an Oracle database (stored data, control and log files.) The Server will support SQL to define.
CS 346 – Chapter 12 File systems –Structure –Information to maintain –How to access a file –Directory implementation –Disk allocation methods  efficient.
CSE 781 – DATABASE MANAGEMENT SYSTEMS Introduction To Oracle 10g Rajika Tandon.
7202ICT Database Administration Lecture 7 Managing Database Storage Part 2 Orale Concept Manuel Chapter 3 & 4.
Extents, segments and blocks in detail. Database structure Database Table spaces Segment Extent Oracle block O/S block Data file logical physical.
1 RAC Internals Julian Dyke Independent Consultant Web Version juliandyke.com © 2007 Julian Dyke.
File System Implementation Chapter 12. File system Organization Application programs Application programs Logical file system Logical file system manages.
9 Storage Structure and Relationships. 9-2 Objectives Listing the different segment types and their uses Controlling the use of extents by segments Stating.
Database structure and space Management. Database Structure An ORACLE database has both a physical and logical structure. By separating physical and logical.
7 Copyright © 2005, Oracle. All rights reserved. Managing Undo Data.
Database structure and space Management. Segments The level of logical database storage above an extent is called a segment. A segment is a set of extents.
File System Implementation
Week 3 Lecture 2 Basic Storage Concepts and Settings.
14 Copyright © 2006, Oracle. All rights reserved. Tuning Block Space Usage.
Database Storage Structures
12.1 Silberschatz, Galvin and Gagne ©2003 Operating System Concepts with Java Chapter 12: File System Implementation Chapter 12: File System Implementation.
Harvard University Oracle Database Administration Session 6 Object Storage.
CE Operating Systems Lecture 17 File systems – interface and implementation.
1 Logical I/O Julian Dyke Independent Consultant Web Version juliandyke.com © 2005 Julian Dyke.
Oracle 10g Database Administrator: Implementation and Administration Chapter 5 Basic Storage Concepts and Settings.
Managing Tablespaces and Data Files
The Self-managing Database: Proactive Space and Schema Object Management Amit Ganesh Director, Data, Space and Transaction Processing Oracle Corporation.
10 Managing Rollback Segments Objectives Planning the number and size of rollback segments Creating rollback segments using appropriate storage.
IT Database Administration Section 07. Space Management Managing Space: An Introduction  Organizing database storage is a major responsibility.
Chapter 5 Index and Clustering
11.1 Silberschatz, Galvin and Gagne ©2005 Operating System Principles 11.5 Free-Space Management Bit vector (n blocks) … 012n-1 bit[i] =  1  block[i]
Managing Storage.
IT Database Administration Section 05. Rollback Segments: An Introduction  What are they?  Space within a database used to store “before” images.
W4118 Operating Systems Instructor: Junfeng Yang.
Select Operation Strategies And Indexing (Chapter 8)
Data, Space and Transaction Processing
Jonathan Walpole Computer Science Portland State University
Database structure and space Management
CS522 Advanced database Systems
Chapter 11: File System Implementation
Storage Structure and Relationships
Oracle 10g Database Administrator: Implementation and Administration
Lecture 10: Buffer Manager and File Organization
Chapter 11: File System Implementation
Chapter 11: File System Implementation
Introduction To Oracle 10g
File-System Structure
Chapter 11: File System Implementation
Database administration
Presentation transcript:

1/43 Tanel PoderEoug User2User day Freelists vs ASSM in Oracle9i Tanel Poder independent technology consultant 20-Oct-03 OracleWorld 2003 EOUG User2User day

2/43 Tanel PoderEoug User2User day High concurrency environment issues Oracle storage & free space management Freelist Segment Management internals Automatic Segment Space Management internals FLM vs ASSM Comparision Converting to ASSM Conclusion Questions Agenda

3/43 Tanel PoderEoug User2User day High Concurrency Environments Main performance problems Serialization vs Corruption Locking & Latching Freelists Treelists Hashing Load balancing Different methods solve different issues

4/43 Tanel PoderEoug User2User day Cache Layer (KC) –Organizes data into Oracle datablocks –Manages buffer cache, concurrency control –Does redo logging Transaction Layer (KT) –Generates undo & rollback –Read consistency and ITL –Does extent allocation –Manages segment space –PCTFREE, Freelist & ASSM … Data layer Transaction layer Cache layer … Oracle Data Storage

5/43 Tanel PoderEoug User2User day HDR Freelist Managed Segment CREATE TABLE T1 (col1 datatype) ; Cache Layer Extent Table Segment Ctl HWM … Space Mgmt. Chunk of free space allocated to extent Header tracks allocated extents Data blocks unformatted HWM 1st datablock

6/43 Tanel PoderEoug User2User day Freelist Extent Management HDR Ext Ctl: Ext#=5 Extent Map 0: DBA, Len: 7 1: DBA, Len: 8 2: DBA, Len: 8 3: DBA, Len: 8 4: DBA, Len: 8 Seg Ctl ->HWM First unformatted block

7/43 Tanel PoderEoug User2User day FLM: First insert into segment HDR INSERT INTO T1 VALUES (‘x’) ; x HWM is advanced _bump_highwater_mark_count Block is put on freelist Change in segment header block Only used blocks are formatted PCTFREE

8/43 Tanel PoderEoug User2User day Freelist Usage Freelist is a data structure for keeping track of blocks candidates for inserts Is a Last-in First-out type linked list –No space overhead Gets new free blocks by bumping up HWM –HWM can be lower than formatted blocks until committed in case of direct load insert When an insert would cause a block to be filled over PCTFREE and block is already over PCTUSED, the block is unlinked !

9/43 Tanel PoderEoug User2User day Three Types of Freelists Segment Freelist or Master Freelist (MFL) –The default, also called common pool Process Freelist (PFL) –Is created with FREELISTS clause Transaction Freelist (TFL) –Used implicitly when DML reduces block space utilization under PCTUSED Every freelist Group uses one extra data block after segment header –Consists of MFL, PFLs and TFLs

10/43 Tanel PoderEoug User2User day Master Free List (MFL) Created with every segment Common pool for free blocks for everyone All freelists reside in segment header or in special blocks in case of FREELIST GROUPS One MFL per freelist group + one remains in segment header (mostly unused) HDR/ HWM MFL Freelist Group 1 Freelist Group 2 HWM

11/43 Tanel PoderEoug User2User day Process Free List (PFL) Created with FREELISTS clause Free block pool serving group of processes –Spreads concurrent insert operations using PID Max number determined by block size –99 for 8k block (internally one more is stored for MFL) MFL PFL1 PFL2 PFL3 PFL4 HWM HWM

12/43 Tanel PoderEoug User2User day Transaction Free List (TFL) Is only used when a delete or update operation reduces block space utilization under PCTUSED Freelist is only accessible to transaction which caused the transition After commit, the block remains in TFL –Is not used for any inserts since TFL is tied to specific transaction –Until all other freelists in current freelist group are empty - the blocks are moved to MFL or PFL

13/43 Tanel PoderEoug User2User day Freelist Groups To reduce contention on segment header Especially useful in OPS and RAC, when sharing one buffer would result in excessive pinging or GC traffic HDR/ HWM MFL PFL1 PFL2 PFL3 PFL4 TFL1 TFL2 MFL PFL1 PFL2 PFL3 PFL4 TFL1 TFL2 Freelist Group 1 Freelist Group 2 MFL PFL1 PFL2 PFL3 PFL4 TFL1 TFL2 MFL PFL1 PFL2 PFL3 PFL4 TFL1 TFL2 Freelist Group 3 Freelist Group 4

14/43 Tanel PoderEoug User2User day Block States in Freelists MFL PFL Time Space utilization MFL PFL Big insert attempt Update TFL MFL PFL Update delete PCTFREE PCTUSED

15/43 Tanel PoderEoug User2User day Block States in Freelists II MFL PFL Case 1 Space utilization Big insert attempt MFL PFL PCTFREE PCTUSED Direct load or array insert Case 2

16/43 Tanel PoderEoug User2User day Freelist search stages 1) Uncommitted TFL (for current transaction) 2) Search PFL & Use if found 3) Search MFL & Move to PFL if found 4) Search Committed TFL & Move to MFL 5) Search Common pool (MFL in seg. header) 6) Bump HWM & Move to PFL 7) Allocate extent 8) Extend datafile 9) Error

17/43 Tanel PoderEoug User2User day Freelist Search parameters Every freelist block traversed has to be read in order to get address of next block _walk_insert_treshold (default 5) –Freelist blocks to scan before turning to higher level list or bump HWM (if walking on TFL, PFL and MFL are searched next) _release_insert_threshold (default 5) –How many unsuitable blocks to unlink from freelist before bump HWM

18/43 Tanel PoderEoug User2User day Automatic Segment Space Mgmt. ASSM free space structure is somewhat similar to a B-tree index structure Tree traversing is used for getting to block utilization information ASSM tree is only 3 levels high –Root, branch and leaf nodes Every datablocks “freeness” is represented using few bits in leaf nodes Free space searching is faster but space overhead is greater

19/43 Tanel PoderEoug User2User day ASSM Segment BMB=Bitmap Block L3 = Root Block L2 = Branch Block L1 = Leaf BMB L3 can reside in segment header L1 BMB is always first in extent L L1 BMB L3 L1 BMB L2 BMB HDR L3 BMB

20/43 Tanel PoderEoug User2User day L1 BMB L2 BMB HDR + L3 BMB ASSM Segment Header CREATE TABLE T1 (col1 datatype) ; Header tracks allocated extents Data blocks unformatted L2 Hint specifies L2 BMB to search Cache Layer Aux Extent Tbl HHWM LHWM L2 BMB List L2 BMB Hint

21/43 Tanel PoderEoug User2User day ASSM: First insert into segment INSERT INTO T1 VALUES (‘x’) ; L1 Bitmap statuses: 0000 Unformatted block 0001 Block logically full % free space HHWM is advanced Up to 16 blocks are formatted at once Change in segment header block Most activity is spread to L1 and L2 blocks L1 BMB L2 BMB HDR + L3 BMB

22/43 Tanel PoderEoug User2User day Level 1 BMB Level 1 BMBs indicate the “freeness” of blocks in DBA range using bitset vector DBA range represents contiguous set of blocks within an extent From DBA ranges per L1 BMB With smaller segments the relative amount of L1 BMBs is bigger to maintain concurrency benefits (one L1 for 16 blocks) L1 BMB is the smallest unit of space which has affinity for an instance

23/43 Tanel PoderEoug User2User day Level 2 BMB Contains search hint for first L1 BMB Count L1 BMBs with free status helps to skip L2 blocks in space search L1 DBA Array: –L1 Data Block Address –Instance it is mapped to (can be dynamically changed) –Maximum freeness in any block Statuses from 1-6, from unformatted to full L1 BMB L2 BMB HDR + L3 BMB Big extent size L1 BMB

24/43 Tanel PoderEoug User2User day Level 3 BMB Reside in segment header Organized as linked list Contain pointers to L2 BMBs In case of insufficient space in header, separate L3 BMBs are created –Original L2 pointers remain in segment header L1 BMB L3 BMB HDR + L3 BMB Big tablespace size L2 BMB

25/43 Tanel PoderEoug User2User day ASSM Block Formatting SQL> create tablespace ts datafile 'ts.dbf' size 1m extent management local uniform size 64k segment space management auto; SQL> create table t (a number) tablespace ts; SQL> select file_id, block_id, blocks from dba_extents where segment_name = 'T'; FILE_ID BLOCK_ID BLOCKS SQL> insert into t values (1); SQL> alter system dump datafile 9 block min 9 block max 17; L L2HDR

26/43 Tanel PoderEoug User2User day frmt: 0x02 chkval: 0x0000 type: 0x20=FIRST LEVEL BITMAP BLOCK Dump of First Level Bitmap Block nbits : 4 nranges: 1 parent dba: 0x a poffset: 0 unformatted: 0 total: 8 first useful block: 3 owning instance : 1 instance ownership changed at 10/10/ :43:55 Last successful Search 10/10/ :43:55 Freeness Status: nf1 0 nf2 0 nf3 0 nf4 5 First free datablock : 3 Bitmap block lock opcode 0 Locker xid: : 0x Highwater:: 0x ext#: 0 blk#: 8 ext size: DBA Ranges : x Length: 8 Offset: 0 0:Metadata 1:Metadata 2:Metadata 3:75-100% free 4:75-100% free 5:75-100% free 6:75-100% free 7:75-100% free

27/43 Tanel PoderEoug User2User day insert into t select 1 from sys.obj$ where rownum <= 3400; 3400 rows created. frmt: 0x02 chkval: 0x0000 type: 0x21=SECOND LEVEL BITMAP BLOCK Dump of Second Level Bitmap Block number: 2 nfree: 1 ffree: 1 pdba: 0x b opcode:0 xid: L1 Ranges : x Free: 1 Inst: 1 0x Free: 5 Inst: L1 Bitmap statuses: 0000 Unformatted block 0001 Block logically full % free space FS1=0010 FS2=0011 FS3=0100 FS4=0101 L2 Bitmap Block Maximum freeness

28/43 Tanel PoderEoug User2User day L3 Bitmap Block frmt: 0x02 chkval: 0x0000 type: 0x22=THIRD LEVEL BITMAP BLOCK Dump of Third Level Bitmap Block number: 107, next : 0x L2 Ranges : x07112f1e 0x071154c6 0x07117a6e 0x0711a016 0x0711c5be 0x0711eb66 0x e 0x071236b6 0x07125c5e... number shows number of L2 entries in current L3 block next references next L3 block in list, last block if zero is referenecd by First Level 3 BMB in segment header

29/43 Tanel PoderEoug User2User day Freelist vs ASSM Datablock FREELISTASSM fnx - next block in freelistbdba - L1 BMB address fsl - free space lockbrn - DBA range number opcode noneinc - incarnation of block (if HWM is pulled back) Block header dump: 0x e Object id on Block? Y seg/obj: 0x18a9 csc: 0x00.126b4 itc: 2 flg: E typ: 1 - DATA brn: 0 bdba: 0x ver: 0x01 inc: 0 exflg: 0 Itl Xid Uba Flag Lck Scn/Fsc 0x01 0x x fsc 0x x02 0x x fsc 0x

30/43 Tanel PoderEoug User2User day LHWM vs HHWM All blocks are formatted below LHWM All blocks are unformatted above HHWM Some blocks are formatted in between Unformatted blocks issue L L2HDR LHWM HHWM

31/43 Tanel PoderEoug User2User day Block State Transition PCT FREE 70% Block full Block free FS1 FS2 FS3 FS4 Block space usage must drop to another freeness state (FS) below PCTFREE in order to get free

32/43 Tanel PoderEoug User2User day Searching for Space 1) Use L2 hint in seg. header to begin search –if not cached DBA –lock L2 BMB in shared mode 2) Find most free L1 BMB in L2 block –requests hashed by instance_number, PID –if no free enough L1 BMB, repeat with next L2 3) Build L1 array with enough free space –max 10 BMBs with correct instance affinity –if not enough space in L1, get another L2 –L1 BMBs can be “stealed” from other instances 4) Extend the segment and release L2 lock

33/43 Tanel PoderEoug User2User day RAC: Stealing Blocks 1) If instance owning L1 BMB is dead, then steal the BMB 2) If instance is live, do a consistent read of the L1 BMB block –If sufficient time has passed since L1 BMB allocation or last “steal”, steal the BMB –Controlled by _inst_locking_period, _last_allocation_period parameters –If BMB can’t be stolen, skip to next 3) Bump up HWM

34/43 Tanel PoderEoug User2User day There is a Grid in Oracle9i as well! …but only meaning that a 2-dimensional array is made for searching free datablocks 1) Get L1 shared mode –hashed by PID 2) Scan array in steps –find 5 candiate blocks –skipping n elements in grid 3) Format unformatted blks –reget BMB in EXCL mode Searching for Space … 16 elements … … … n elements

35/43 Tanel PoderEoug User2User day Allocating Space in Datablocks Try to acquire a candidate block in NOWAIT mode –If a block is already pinned, skip it –Try NOWAIT on 5 blocks –if it fails, release L1 BMB lock and try to pin datablock normally with WAIT Unformatted blocks encountered during search are formatted and used –Reget L1 BMB in exclusive mode (FB enqueue) Setting HHWM and LHWM

36/43 Tanel PoderEoug User2User day PCTFREE Recalculation There is no automatic PCTFREE recalculation in case of ALTER TABLE in ASSM L1 “freeness” values are updated on subsequent DML access Manual segment level recalculation using dbms_repair.segment_fix_status –Recalculates statistics if with default parameters –Can change specific block freeness values manually

37/43 Tanel PoderEoug User2User day Converting to ASSM Very simple: SQL> alter table t move tablespace users nologging; Table altered. COMPATIBLE parameter at least For ASSM LOB segments -> Possible segment growth Check for CLASS# 8, 9, 10 blocks from V$BH or X$BH

38/43 Tanel PoderEoug User2User day Freelist Pros & Cons Pros: Virtually no space overhead Mature functionality Tunable Cons: Contention on header blocks Default settings unreasonably low Premature unlink Large deletes - non-distributed list Unnecessary HWM bumping MFL PFL Time Space utilizatio n MFL PFL Big insert attempt Update TFL MFL PFL Update delete PCTFREE PCTUSE D

39/43 Tanel PoderEoug User2User day ASSM Pros & Cons Pros: Reducing contention on freelist buffers & segment header Great for RAC Good for varying witdth rows Easy to set up Internal maintenance Cons: Space usage Slower for FTS Fresh functionality Automatic - not tunable L L1 BMB L3

40/43 Tanel PoderEoug User2User day Freelists vs ASSM in Performance Contradicting results from users Everything depends on data usage patterns and workload Just creating and scanning a table doesn’t give correct estimate of performance (de)improvements –Segment size is larger initially, but afterwards? In RAC it is not enough just to run concurrent insert on two instances –Adding and removing nodes, different workloads

41/43 Tanel PoderEoug User2User day Conclusion Indexes still have contention problem! If can afford being lazy, go with automatic If you want control, go with manual

42/43 Tanel PoderEoug User2User day Questions? Freelists vs ASSM in Oracle9i integrid.info

43/43 Tanel PoderEoug User2User day Freelists vs ASSM in Oracle9i Tanel Poder Thank you! integrid.info