bringing internals to the surface internals concepts for highly effective engines mark scranton...

30
Bringing Bringing Internals to the Internals to the Surface Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver www.markscranton.com

Upload: primrose-poole

Post on 02-Jan-2016

215 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

Bringing Internals to Bringing Internals to the Surface the Surface

Internals Concepts for Highly Effective

Engines

Mark ScrantonPrincipal Consultant/Trainer

Informix Denverwww.markscranton.com

Page 2: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

2

useruser .conference.conferenceInformixInformix

Who Am I?Who Am I?

• Principal Consultant/Trainer, Informix Denver

• I do engines - XPS and IDS

• 5+ yrs with Informix

• website - www.markscranton.com• tips/tricks• sql/scripts• documents, presentations

• Principal Consultant/Trainer, Informix Denver

• I do engines - XPS and IDS

• 5+ yrs with Informix

• website - www.markscranton.com• tips/tricks• sql/scripts• documents, presentations

Page 3: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

3

useruser .conference.conferenceInformixInformix

Presentation OverviewPresentation Overview

• This presentation will identify “internals” concepts that appear to be trivia

• But they could be useful daily for maintenance and support of IDS

• A strong working knowledge of IDS is assumed

• More info available in the “IDS Internal Architecture” class

• This presentation will identify “internals” concepts that appear to be trivia

• But they could be useful daily for maintenance and support of IDS

• A strong working knowledge of IDS is assumed

• More info available in the “IDS Internal Architecture” class

Page 4: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

4

useruser .conference.conferenceInformixInformix

TopicsTopics

• Physical pages vs. logical pages? • Discussion about the value of knowing

the difference

• The dog has swallowed it’s tail • ...or the tale of physical log overflow

• PARTNUMs - and the story of getting to data• We’ve all seen them…what does it really mean?

• Physical pages vs. logical pages? • Discussion about the value of knowing

the difference

• The dog has swallowed it’s tail • ...or the tale of physical log overflow

• PARTNUMs - and the story of getting to data• We’ve all seen them…what does it really mean?

Page 5: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

5

useruser .conference.conferenceInformixInformix

TopicsTopics

• The maximum number of extents for a table? • Is there REALLY a max?

• Where did my row go?• The long tale of the forward pointer

• The last topic

• The maximum number of extents for a table? • Is there REALLY a max?

• Where did my row go?• The long tale of the forward pointer

• The last topic

Page 6: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

6

useruser .conference.conferenceInformixInformix

Topic 1: Logical Pages vs. Physical PagesTopic 1: Logical Pages vs. Physical Pages

• Understanding the difference can help in:• Interpretation of msg log assertion failures• Interpretation of the extent list of a partition page• Lock level identification with respect to rowid(s)• Oncheck usage• A bunch of other stuff

• Understanding the difference can help in:• Interpretation of msg log assertion failures• Interpretation of the extent list of a partition page• Lock level identification with respect to rowid(s)• Oncheck usage• A bunch of other stuff

Page 7: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

7

useruser .conference.conferenceInformixInformix

Physical PagesPhysical Pages

• Always with respect to a chunk

• Numbering starts with 0

• Format:

0xCCCPPPPP

ccc - chunk numberppppp - page offset into the chunk

• Always with respect to a chunk

• Numbering starts with 0

• Format:

0xCCCPPPPP

ccc - chunk numberppppp - page offset into the chunk

Page 8: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

8

useruser .conference.conferenceInformixInformix

Physical PagesPhysical Pages

30023c 30023d

300243300242300241300240

30023f30023e

300247300246300245300244

Chunk 3

0xCCCPPPPPc - chunk #p - page offset

Page 9: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

9

useruser .conference.conferenceInformixInformix

Logical PagesLogical Pages

• Always with respect to a tablespace

• Numbering starts with 0

• Format simply 0 through x

• Always with respect to a tablespace

• Numbering starts with 0

• Format simply 0 through x

Page 10: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

Logical PagesLogical Pages

30023c 30023d

300243300242300241300240

30023f30023e

300247300246300245300244

extent 1 for sparky

0

54

21

3

logicalpage num

create tablesparky...

physicalpage num

Page 11: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

11

useruser .conference.conferenceInformixInformix

Usage Examples - Extent ListUsage Examples - Extent List

extent list on a partition page (oncheck -pt skippy:sparky)

chunk 0x4 page 0x33

Page 12: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

12

useruser .conference.conferenceInformixInformix

Usage Examples - Bad PageUsage Examples - Bad Page

Page 13: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

13

useruser .conference.conferenceInformixInformix

Usage Examples - Lock LevelUsage Examples - Lock Level

onstat -k

rowid format: 0xLLLLLLSSL - logical page in the tableS - slot/row # on the page

oncheck -pp 0x100016 2

Page 14: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

14

useruser .conference.conferenceInformixInformix

Topic 2: Physical Log OverflowTopic 2: Physical Log Overflow

Physical Log File

1st before images of modified cache pages

75% full: checkpoint request is raised

what happens now?

back to the beginning, and keep writing!

Page 15: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

15

useruser .conference.conferenceInformixInformix

Physical Log OverflowPhysical Log Overflow

Physical Log File

75% full: checkpoint request is raised

• Two potential scenarios:• the chkpt completes, and we give the physical log a

new logical beginning. In that case, we don’t care about the overwritten pages

• if the engine falls over, you’ll most likely get stuck in fast recovery when trying to come back up

• Two potential scenarios:• the chkpt completes, and we give the physical log a

new logical beginning. In that case, we don’t care about the overwritten pages

• if the engine falls over, you’ll most likely get stuck in fast recovery when trying to come back up

Page 16: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

16

useruser .conference.conferenceInformixInformix

Topic 3: PartnumsTopic 3: Partnums

• Three areas focused on here:• What is a partnum? • How do we use it to get to stuff• What is a tablespace tablespace?

• Three areas focused on here:• What is a partnum? • How do we use it to get to stuff• What is a tablespace tablespace?

Page 17: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

17

useruser .conference.conferenceInformixInformix

DefinitionsDefinitions

• Tablespace tablespace• Keeps track of tablespaces, or partitions,

in a dbspace• Each dbspace has one• Typical allocation is 50 pages for each extent

• Partition page• A page in a tablespace tablespace• Typically one page per tablespace• It “describes” the tablespace

• Tablespace tablespace• Keeps track of tablespaces, or partitions,

in a dbspace• Each dbspace has one• Typical allocation is 50 pages for each extent

• Partition page• A page in a tablespace tablespace• Typically one page per tablespace• It “describes” the tablespace

Page 18: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

18

useruser .conference.conferenceInformixInformix

partnumpartnum

D D D L L L L L

dbspace number(starting at 1)

Logical page numwithin the tablespace tablespace (starting at 0)

1 1/2 bytes(3 nibbles, or 3 hex digits)

2 1/2 bytes(5 nibbles, or5 hex digits)

4 bytes

0x

Page 19: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

19

useruser .conference.conferenceInformixInformix

dbspace4

rootdbs

systablesname partnumdatabase

sparky

0020000311-11-1999informixsparky

database tablespace

partnumflagscreatedownername

0020003cmudtable mud

extentsfor mud

tablespace tablespace page 3c

CREATE DATABASE sparky IN dbspace4;CREATE TABLE mud;

DATABASE sparky;SELECT * FROM mud;

Page 20: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

20

useruser .conference.conferenceInformixInformix

Topic 4: Max Number of ExtentsTopic 4: Max Number of Extents

• What’s the maximum number of extents for a tablespace?

• Consider the previous topic, and the use of the partition page for a tablespace

• What’s the maximum number of extents for a tablespace?

• Consider the previous topic, and the use of the partition page for a tablespace

Page 21: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

21

useruser .conference.conferenceInformixInformix

The Partition PageThe Partition Page

Page 22: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

22

useruser .conference.conferenceInformixInformix

The Partition PageThe Partition Page

oncheck -pt skippy:sparky

Page 23: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

23

useruser .conference.conferenceInformixInformix

Oh by the Way...Oh by the Way...

• Do you really want to know the max?

• Fragmentation changes the max for a logical table

• 4K vs. 2K pages

• Do you really want to know the max?

• Fragmentation changes the max for a logical table

• 4K vs. 2K pages

Page 24: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

24

useruser .conference.conferenceInformixInformix

Topic 5: Forward PointersTopic 5: Forward Pointers

• Forward pointer - a 4-byte number that “points” to the remainder pieces of a row that spans pages

• Used with rows longer than a page

• Format is same as a rowid, although it’s NOT the rowid for the row

• Used with varchars or really long rows (rows longer than a page typically)

• We’ll focus on varchars ...

• Forward pointer - a 4-byte number that “points” to the remainder pieces of a row that spans pages

• Used with rows longer than a page

• Format is same as a rowid, although it’s NOT the rowid for the row

• Used with varchars or really long rows (rows longer than a page typically)

• We’ll focus on varchars ...

Page 25: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

25

useruser .conference.conferenceInformixInformix

Forward Pointers w/ varcharsForward Pointers w/ varchars

• Problem - you can easily end up with a “chain” of forward pointer/remainder portions of rows

• This can happen when you’ve updated a varchar column and increased it’s size

• The new row size won’t fit into it’s old slot, and so we:• Move the row - all or some of it - to another page• Leave back a 4-byte forward pointer

on the home page

• Problem - you can easily end up with a “chain” of forward pointer/remainder portions of rows

• This can happen when you’ve updated a varchar column and increased it’s size

• The new row size won’t fit into it’s old slot, and so we:• Move the row - all or some of it - to another page• Leave back a 4-byte forward pointer

on the home page

Page 26: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

26

useruser .conference.conferenceInformixInformix

Forward Pointers w/ varchars Forward Pointers w/ varchars

• This can happen as many times as it needs

• Every move adds an additional 8 bytes to the row length• 4 bytes for the forward pointer in the home page• 4 bytes for the slot table entry on the

new/remainder page

• This can happen as many times as it needs

• Every move adds an additional 8 bytes to the row length• 4 bytes for the forward pointer in the home page• 4 bytes for the slot table entry on the

new/remainder page

Page 27: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

27

useruser .conference.conferenceInformixInformix

Forward PointersForward Pointers

Page 28: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

28

useruser .conference.conferenceInformixInformix

What Can I Do? What Can I Do?

• To rid yourself of the “chaining” effect:• Unload/reload the table

• If the row will fit onto a single page, then there is no need for the forward pointer

• If it’s grown to be larger than a page (actual row length), then you’ll have at least one. This can’t be avoided - the row is now longer than a page

• Alter index to cluster• Same caveats as above

• To rid yourself of the “chaining” effect:• Unload/reload the table

• If the row will fit onto a single page, then there is no need for the forward pointer

• If it’s grown to be larger than a page (actual row length), then you’ll have at least one. This can’t be avoided - the row is now longer than a page

• Alter index to cluster• Same caveats as above

Page 29: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

29

useruser .conference.conferenceInformixInformix

Topic 7: How Do You Find Out More? Topic 7: How Do You Find Out More?

• Attend the “IDS Internal Architecture” class• 5 days - very intense use of oncheck, and topics

covered in this presentation• Taught in Denver, Chicago, Menlo Park most often

• Watch TechNotes for a full white paper on this topic

• Send me email - [email protected]

• Checkout the website - www.markscranton.com

• Attend the “IDS Internal Architecture” class• 5 days - very intense use of oncheck, and topics

covered in this presentation• Taught in Denver, Chicago, Menlo Park most often

• Watch TechNotes for a full white paper on this topic

• Send me email - [email protected]

• Checkout the website - www.markscranton.com

Page 30: Bringing Internals to the Surface Internals Concepts for Highly Effective Engines Mark Scranton Principal Consultant/Trainer Informix Denver

30

useruser .conference.conferenceInformixInformix

Thanks...Thanks...

• For listening. Hope you learned something

• See you in class

• For listening. Hope you learned something

• See you in class