Birth, Death, Infinity Gus Björklund. Progress. Dan Foreman. BravePoint. PUG Challenge Americas, 9-12 June 2013.

Slides:



Advertisements
Similar presentations
The Architecture of Oracle
Advertisements

DB-7: OpenEdge® Database Performance Tuning
DB-03: A Tour of the OpenEdge™ RDBMS Storage Architecture Richard Banville Technical Fellow.
CS4432: Database Systems II Buffer Manager 1. 2 Covered in week 1.
Some More Database Performance Knobs North American PUG Challenge
T OP N P ERFORMANCE T IPS Adam Backman Partner, White Star Software.
©Silberschatz, Korth and Sudarshan12.1Database System Concepts Chapter 12: Part C Part A:  Index Definition in SQL  Ordered Indices  Index Sequential.
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.
©Silberschatz, Korth and Sudarshan12.1Database System Concepts Chapter 12: Indexing and Hashing Basic Concepts Ordered Indices B+-Tree Index Files B-Tree.
Acknowledgments Byron Bush, Scott S. Hilpert and Lee, JeongKyu
Oracle Architecture. Instances and Databases (1/2)
Page Footer Keed Education Oracle Database Administration Basic Copyright 2009 Keed Education BV Version Concept.
1 - Oracle Server Architecture Overview
Harvard University Oracle Database Administration Session 2 System Level.
Harvard University Oracle Database Administration Session 5 Data Storage.
Chapter 15.7 Buffer Management ID: 219 Name: Qun Yu Class: CS Spring 2009 Instructor: Dr. T.Y.Lin.
Tree-Structured Indexes. Range Searches ``Find all students with gpa > 3.0’’ –If data is in sorted file, do binary search to find first such student,
DB Audit Expert v1.1 for Oracle Copyright © SoftTree Technologies, Inc. This presentation is for DB Audit Expert for Oracle version 1.1 which.
New Generation of OpenEdge ® RDBMS Advanced Storage Architecture II Tomáš Kučera Principal Solution Engineer / EMEA Power Team.
MOVE-4: Upgrading Your Database to OpenEdge® 10 Gus Björklund Wizard, Vice President Technology.
1 Copyright © 2005, Oracle. All rights reserved. Introduction.
Backup & Recovery 1.
1 Copyright © 2009, Oracle. All rights reserved. Exploring the Oracle Database Architecture.
Birth, Death, Infinity Gus Björklund. ???. Dan Foreman. BravePoint. PUG Challenge Dusseldorf 2014.
Real-Time Concepts for Embedded Systems Author: Qing Li with Caroline Yao ISBN: CMPBooks.
9/11/2015ISYS366 - Week051 ISYS366 – Week 5-6 Database Tuning - User and Rollback Data Spaces, Recovery, Backup.
Chapter Oracle Server An Oracle Server consists of an Oracle database (stored data, control and log files.) The Server will support SQL to define.
Basic Oracle Architecture
DBMS Transactions and Rollback Recovery Helia / Martti Laiho.
By Lecturer / Aisha Dawood 1.  You can control the number of dispatcher processes in the instance. Unlike the number of shared servers, the number of.
CSE 781 – DATABASE MANAGEMENT SYSTEMS Introduction To Oracle 10g Rajika Tandon.
Strength. Strategy. Stability.. Progress Performance Monitoring and Tuning Dan Foreman Progress Expert BravePoint BravePoint
A first look at table partitioning PUG Challenge Americas Richard Banville & Havard Danielsen OpenEdge Development June 9, 2014.
Architecture Rajesh. Components of Database Engine.
Database Systems Slide 1 Database Systems Lecture 5 Overview of Oracle Database Architecture - Concept Manual : Chapters 1,8 Lecturer : Dr Bela Stantic.
7202ICT – Database Administration
1 Oracle Architectural Components. 1-2 Objectives Listing the structures involved in connecting a user to an Oracle server Listing the stages in processing.
Copyright  Oracle Corporation, All rights reserved. 1 Oracle Architectural Components.
Copyright © Oracle Corporation, All rights reserved. 1 Oracle Architectural Components.
An Oracle server:  Is a database management system that provides an open, comprehensive, integrated approach to information management.  Consists.
Chapter 4. INTERNAL REPRESENTATION OF FILES
Introduction to the new mainframe © Copyright IBM Corp., All rights reserved. Chapter 12 Understanding database managers on z/OS.
Database structure and space Management. Database Structure An ORACLE database has both a physical and logical structure. By separating physical and logical.
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.
Recovery Log Notes Gus Björklund, Progress Dan Foreman, Bravepoint 2014 Americas PUG Challenge Westford, MA June 8 – June
1 Logical I/O Julian Dyke Independent Consultant Web Version juliandyke.com © 2005 Julian Dyke.
DB-08: A Day in the Life of a Type II Record Richard Banville Progress Fellow.
Connect with life Vinod Kumar Technology Evangelist - Microsoft
Over view  Why Oracle Forensic  California Breach security Act  Oracle Logical Structure  Oracle System Change Number  Oracle Data Block Structure.
Preface 1Performance Tuning Methodology: A Review Course Structure 1-2 Lesson Objective 1-3 Concepts 1-4 Determining the Worst Bottleneck 1-5 Understanding.
Backup and Recovery - II - Checkpoint - Transaction log – active portion - Database Recovery.
Files An operating system, maintains descriptive information about files in a data structure called a file descriptor. NameDeletion control Storage Organization.
CS 405G: Introduction to Database Systems Instructor: Jinze Liu Fall 2007.
Retele de senzori Curs 2 - 1st edition UNIVERSITATEA „ TRANSILVANIA ” DIN BRAŞOV FACULTATEA DE INGINERIE ELECTRICĂ ŞI ŞTIINŢA CALCULATOARELOR.
Select Operation Strategies And Indexing (Chapter 8)
Oracle 11g: SQL Chapter 5 Data Manipulation and Transaction Control.
Oracle Database Architectural Components
1 Copyright © 2005, Oracle. All rights reserved. Oracle Database Administration: Overview.
Database Applications (15-415) DBMS Internals- Part III Lecture 13, March 06, 2016 Mohammad Hammoud.
Chapter 21 SGA Architecture and Wait Event Summarized & Presented by Yeon JongHeum IDS Lab., Seoul National University.
SQL Server Internals & Architecture Naomi Williams, SQL DBA LinkedIn
Introduction to OpenEdge Change Data Capture
Database structure and space Management
Behind The Scenes: Updating A Record
Walking Through A Database Health Check
Lecture 10: Buffer Manager and File Organization
Database Applications (15-415) DBMS Internals- Part III Lecture 15, March 11, 2018 Mohammad Hammoud.
Database Internals: How Indexes Work
CS347 Spring 2017 – Quiz 5 Preparation - Solutions UTEID _________
Presentation transcript:

Birth, Death, Infinity Gus Björklund. Progress. Dan Foreman. BravePoint. PUG Challenge Americas, 9-12 June 2013

© 2013 Progress Software Corporation. All rights reserved. 2 Birth, Death, Infinity abstract In this talk we follow the life of a database record from its initial conception, creation, reading, & updates, to eventual deletion. The discussion will include the environment that record CRUD activities take place in and the different resources that are impacted: disk, memory, latches, semaphores, record locks, blocks, etc. We will also touch on the aspects of a record's life that directly and indirectly impact performance. This may sound like a mega-geek presentation, and it is, however there are many practical aspects to this information that have a direct impact on DBAs as well as developers.

© 2013 Progress Software Corporation. All rights reserved. 3 Birth, Death, Infinity who are we ?

© 2013 Progress Software Corporation. All rights reserved. 5 Birth, Death, Infinity Conception

© 2013 Progress Software Corporation. All rights reserved. 6 Birth, Death, Infinity A Table is defined  Use the Data Dictionary Tool Type in all the information  Load a "df" file run prodict/load_df.p (os-getenv ("SCHEMADIR") + "/" "customer.df").  Execute a SQL DDL statement CREATE TABLE pub.customer (cust-num integer,... ) AREA "a51"; Methods for defining a new table:

Where does the definition go?

© 2013 Progress Software Corporation. All rights reserved. 8 Birth, Death, Infinity Table definitions _file _field One _field record (row) for each field (column) of a table The _* tables live in the Schema Area. Put yours elsewhere.

© 2013 Progress Software Corporation. All rights reserved. 9 Birth, Death, Infinity List Your Tables and Their Fields output to tables.txt. for each _file where (0 < _file-num): put _file-name skip. for each _field of _file: put “ “ _field-name skip. end. put “” skip. end. output close.

© 2013 Progress Software Corporation. All rights reserved. 10 Birth, Death, Infinity Index definitions _file _index _index-field One _index record for each index of a table One _index-field record for each key component of an index _index

© 2013 Progress Software Corporation. All rights reserved. 11 Birth, Death, Infinity List indexes and key components by table output to index.txt. for each _file where (0 < _file-num): put _file-name skip. for each _index of _file: put " " _index-name skip. for each _index-field of _index: find _field where recid (_field) = _field-recid. put " " _field-name skip. end. put "" skip. end. output close.

Where do the default values go?

© 2013 Progress Software Corporation. All rights reserved. 13 Birth, Death, Infinity the template record  Each table has a template record  Column values in the template become the default values  Template records NOT stored with schema metadata go in table's home area or schema area (v11) have to read from database to get template  TODAY and NOW defaults replaced with current values

© 2013 Progress Software Corporation. All rights reserved. 14 Birth, Death, Infinity Birth

© 2013 Progress Software Corporation. All rights reserved. 15 Birth, Death, Infinity CREATE a new row in a 4GL program create customer.

© 2013 Progress Software Corporation. All rights reserved. 16 Birth, Death, Infinity CREATE a new row in a 4GL program create customer. what happens? we read template record from database (if we don't have it already) client buffer is filled with a copy of the template record current values inserted for TODAY, NOW no write to database – db knows nothing about the create at this point.

© 2013 Progress Software Corporation. All rights reserved. 17 Birth, Death, Infinity Where does customer row go? CONDB customer order Etc. DBDES CI for customer FDTBL for database foo ICB for table customer row buffer

© 2013 Progress Software Corporation. All rights reserved. 18 Birth, Death, Infinity assign column values Address Address2 City Contact Curr-bal Cust-num Discount Max-credit Mnth-sales Name Phone Sales-region Sales-rep St Tax-no Terms Ytd-sls Zip

when do we send it to the database ?

© 2013 Progress Software Corporation. All rights reserved. 20 Birth, Death, Infinity database accelerator

© 2013 Progress Software Corporation. All rights reserved. 21 Birth, Death, Infinity send row to database client's row buffer server's network message buffer server's row buffer client's network message buffer TCP/IP

where do we put it ?

© 2013 Progress Software Corporation. All rights reserved. 23 Birth, Death, Infinity Database Pages (Blocks)  Database divided into fixed-size blocks or “pages”  Adjacent pages form clusters  Different kinds of pages store different kinds of data  Disk i/o done in page size units  Each page has unique identifier – its “dbkey” see these slides for space allocation algorithm details Space, the final frontier

© 2013 Progress Software Corporation. All rights reserved. 24 Birth, Death, Infinity Find data block, read into database buffer pool Hash Table LRU Chain “oldest” “newest” Page Writer Queue MMM MM MMMM Checkpoint Queue

© 2013 Progress Software Corporation. All rights reserved. 25 Birth, Death, Infinity Update data block  acquire exclusive lock on buffer  generate "create" bi note  spool bi note  copy from row buffer to data block  update block free space if needed  mark buffer modified  release buffer lock note: simplified. some details omitted to protect the innocent

© 2013 Progress Software Corporation. All rights reserved. 26 Birth, Death, Infinity Record In A Row Data Block (aka RM Block) block header RM block header dir entry 0 free space record 0 Newly created row is stored in some row data block and assigned an available directory entry. The chosen block and directory entry determine the ROWID record 1 record 2 record 3 dir entry 1 dir entry 2 dir entry 3

© 2013 Progress Software Corporation. All rights reserved. 27 Birth, Death, Infinity Birth Alternatives

© 2013 Progress Software Corporation. All rights reserved. 28 Birth, Death, Infinity Other ways records are born  sql: INSERT INTO customer (cust-no, name street, city, state) VALUES (642, 'gus', '14 oak park', 'bedford', 'ma');  sql: INSERT INTO customer (cust-no, name street, city, state) SELECT... FROM... WHERE... ;  binary load: proutil foo -C load bar.bd

© 2013 Progress Software Corporation. All rights reserved. 29 Birth, Death, Infinity Possible Problems

© 2013 Progress Software Corporation. All rights reserved. 30 Birth, Death, Infinity Things to consider  When record is sent to database before all the values are assigned, one database operation create  becomes several create update etc.  The record expands as more values are assigned fragmentation will occur

© 2013 Progress Software Corporation. All rights reserved. 31 Birth, Death, Infinity Life

© 2013 Progress Software Corporation. All rights reserved. 32 Birth, Death, Infinity READ find customer where cust-num = 3447.

© 2013 Progress Software Corporation. All rights reserved. 33 Birth, Death, Infinity READ  Compiler determines index to use (perhaps cust-num) R-code has index information Query used to form equality or range bracket  At runtime, load schema cache into memory  Look up the table number (# 3)  Find _storage-object records for table #3 (for tenant #t)  Look up the index number (# 113)  Find _storage-object records for index #113 (for tenant #t)  Load into “om cache” so we can use again (set -omsize)  Get location of index root block from _storage-object  Traverse index b-tree to leaf, perhaps cust-num = 3447  Get row's rowid 9006 from index leaf block  Get share lock on row 9006  Read data block(s) containing row fragments  Copy row fragments to 4GL buffer or network buffer

© 2013 Progress Software Corporation. All rights reserved. 34 Birth, Death, Infinity Find row in database Block’s DBKEYTypeChainBackup Ctr Next DBKEY in ChainBlock Update Counter Free Space Free Dirs. Rec 0 OffsetRec 1 Offset Rec 2 OffsetRec n Offset Num Dirs. Free Space Used Data Space Record 0 Record 2 Record 1 server’s row buffer Share locked RM block in buffer pool client’s network message buffer client's row buffer server’s network message buffer TCP/IP

© 2013 Progress Software Corporation. All rights reserved. 35 Birth, Death, Infinity row buffer connected CONDB customer order Etc. DBDES CI for customer FDTBL for database foo ICB for table customer row buffer (cust 3447)

© 2013 Progress Software Corporation. All rights reserved. 36 Birth, Death, Infinity UPDATES do transaction: find customer where cust-num = 3447 exclusive-lock: customer.city = "Westford". end. end.

© 2013 Progress Software Corporation. All rights reserved. 37 Birth, Death, Infinity Assign new value to city “Westford” 4GL runtime stack row buffer (cust 3447) Boston ICB for table customer CI for customer field n

© 2013 Progress Software Corporation. All rights reserved. 38 Birth, Death, Infinity Assign new value to city “Westford” 4GL runtime stack row buffer Westford ICB for table customer CI for customer field n

when do we send it to the database ?

© 2013 Progress Software Corporation. All rights reserved. 40 Birth, Death, Infinity send row to database client's row buffer server's network message buffer server's row buffer client's network message buffer TCP/IP

© 2013 Progress Software Corporation. All rights reserved. 41 Birth, Death, Infinity Update data block  Acquire exclusive lock block buffer  read data block into buffer pool  generate "record difference" bi note  spool bi note  modify data block  update free space  mark block modified  release buffer lock

© 2013 Progress Software Corporation. All rights reserved. 42 Birth, Death, Infinity Update other data blocks  Indexes have to be updated too (city is a key field)  delete existing index entry for "Boston"  insert new index entry for "Westford"

© 2013 Progress Software Corporation. All rights reserved. 43 Birth, Death, Infinity Fragment chain block header RM block header dir entry 0 free space record 0 record 1 record 2 record 3 (part 1 of row) dir entry 1 dir entry 2 dir entry 3 block header RM block header dir entry 0 free space record 0 record 1 (part 2 of row) dir entry 1

© 2013 Progress Software Corporation. All rights reserved. 44 Birth, Death, Infinity Death

© 2013 Progress Software Corporation. All rights reserved. 45 Birth, Death, Infinity Deleting do transaction: for each customer where city = "Boston": delete customer. end. end.

© 2013 Progress Software Corporation. All rights reserved. 46 Birth, Death, Infinity Deleting (sql) delete from customer where city = "Boston";

© 2013 Progress Software Corporation. All rights reserved. 47 Birth, Death, Infinity Update data block  Acquire exclusive lock block buffer  read data block into buffer pool  generate "record delete" bi note  spool bi note  modify data block  update free space  mark block modified  release buffer lock

© 2013 Progress Software Corporation. All rights reserved. 48 Birth, Death, Infinity Update other data blocks  Indexes have to be updated too  After each record delete delete existing index entry for "Boston" delete all the other index entries too  For unique index entries, replace with a reservation (placeholder) the key value cannot be used until deleting transaction commits

© 2013 Progress Software Corporation. All rights reserved. 49 Birth, Death, Infinity deleted ROWID Reservation block header RM block header dir entry 0 free space record 0 record 1 record 2 dir entry 1 dir entry 2 dir entry 3 ROWID cannot be recycled until after the deleting transaction commits. Why ?

© 2013 Progress Software Corporation. All rights reserved. 50 Birth, Death, Infinity deleted ROWID Reservation block header RM block header dir entry 0 free space record 0 record 1 record 2 dir entry 1 dir entry 2 dir entry 3 ROWID cannot be recycled until after the deleting transaction commits. Why ? What ELSE can go wrong during UNDO ?

What could go wrong ?

© 2013 Progress Software Corporation. All rights reserved. 52 Birth, Death, Infinity deleted ROWID Reservation block header RM block header dir entry 0 free space record 0 record 1 record 2 dir entry 1 dir entry 2 dir entry 3 ROWID cannot be recycled until after the deleting transaction commits. Why ? What ELSE can go wrong during UNDO ?

© 2013 Progress Software Corporation. All rights reserved. 53 Birth, Death, Infinity deleted ROWID Reservation block header RM block header dir entry 0 free space record 0 record 1 record 2 dir entry 1 dir entry 2 dir entry 3 ROWID cannot be recycled until after the deleting transaction commits. Why ? What can go wrong during UNDO ? Not enough space. another transaction has taken it.

Infinity

How can a row live after death ?

© 2013 Progress Software Corporation. All rights reserved. 56 Birth, Death, Infinity Life after death  Your records live on forever in: Backup archives Archived after-image extents Audit data Archived audit data Binary dump files Reports Dropbox etc.  If you have any of these, where? Can you find a specific record?  Are the data encrypted? Where are the keys ?  Can we subpeona your records ? We may.

© 2013 Progress Software Corporation. All rights reserved. 57 Birth, Death, Infinity That’s all we have time for today, except

© 2013 Progress Software Corporation. All rights reserved. 58 Birth, Death, Infinity Answers