Oracle Performance Firefighting
by Craig Shallahamer

Get the book here



Craig Shallahamer's Blog

You were brought to this page based on an internet search and as a free service to Oracle DBAs.

The text below is an except from the book, Oracle Performance Firefighting, written by Craig Shallahamer of OraPub, Inc. Figures and tables are not included on this page, only their reference.
To order the book in either print or PDF form, click here.


©2009, 2010 by Craig Shallahamer. This is copyrighted material.
Please—Out of respect for those involved in the creation of the book and also for their familes, we ask you to respect the copyright both in intent and deed. Thank you.

-------------------------------

Simply put, indexes are ordered structures. This ordering allows indexes to be used to quickly search. Any changes to the index must result in the order being maintained. If order is not maintained, searching could not occur quickly, and the index would be both worthless and corrupt. So order in an index must be maintained. This has profound performance implications.

While index ordering enables quick searching, in a high-concurrency insert situation, it can cause severe performance problems. For example, suppose an index is based on an increasing sequence number (for example, 1, 2, 3, and so on), which is commonly called a monotonically increasing value. If a table column contains this sequence number and that column is indexed, the respective index entries will be placed next to each other in an index leaf block. Why? Because an index must maintain sorted order, and this index is based on an ascending sequential number.

The problem can occur when many sessions concurrently insert rows. As each insert statement gets the next sequence number, the index entry will likely be physically placed into the same index leaf block or less likely into the adjacent index leaf block. If the concurrency increases enough, sessions will need to wait a relatively long time for another session to complete its leaf block change. When the session waits, it will post a buffer busy waits event, and the buffer it is waiting on will be an index leaf block. This situation can become extremely serious and a massive performance killer.

©2009, 2010 by Craig Shallahamer. This is copyrighted material.
Please—Out of respect for those involved in the creation of the book and also for their familes, we ask you to respect the copyright both in intent and deed. Thank you.


Know what's important before it's too late!

OraPub's
Performance Training

is like no other...





More Class Pics...
Get student testimonials!