I had heard about the publication of Troubleshooting Oracle Performance well in advance and I was eagerly awaiting getting my hands on a copy. I have to say Christian Antognini’s book has been well worth the wait. I have found this to be a fantastic book and well worth the investment of time and money.
The book has the following structure:
This is a short section on basic concepts, there is an interesting page on the lifecycle of a cursor.
This section/chapter is all about how you find out where your performance problem lies, lots of information on tracing and TKPROF. There is also mention of a command line tool, TVD$XTAT written in conjuction with Trivadis that gives extended information over and above what TKPROF can do.
This section includes a great chapter on reading execution plans with several detailed examples, in fact there are examples sprinkled throughout the book that really explain and reinforce the message that Christian is driving at. There is also a big chapter in gather statistics. Then the final chapter of this section is on SQL tuning techniques. Here Christian falls into a rhythm of explaining how a technique works, when to use it, and equally as crucially when not to use it. This style is continued in some of later chapters and I think is a great way of talking about various topics, in fact this style reminds me of one of my all time favourite Oracle books, Practical Oracle 8i by Jonathan Lewis.
The last section of the book, covering over 200 pages is entitled Optimization, in here you will find excellent information on how the various types of joins work and which is the optimum join under which conditions. Other chapters in this section include a discussion on parsing and optimizing data access.
I have enjoyed reading this, and I think what made it so good were the clear explanations of concepts always backed up with examples – there are explain plans sprinkled liberally throughout the book.
All in all this book is packed with interesting insight and I’m sure you will learn something new about Oracle by reading it. For example does the positional order of a column in a table that you are retrieving data from have an impact on performance? If you don’t know, read Troubleshooting Oracle Performance and you’ll soon know the answer ;-)