In my professional opinion, if your performance work is to have any credibility then you need to agree with and abide by this philosophy. I think it’s really what separates the real experts from the amateurs.
“Measurement is the first step that leads to control and eventually to improvement. If you can’t measure something, you can’t understand it. If you can’t understand it, you can’t control it. If you can’t control it, you can’t improve it.” – Dr. H. James Harrington
Discuss.name="googleone_share_1" style="position:relative;z-index:5;float: right; margin-left: 10px;">
Paraphrasing Yogi Berra:
If you’re wondering why it’s worth remembering this odd comment – it addresses the (commonly asked) question:
The answer is: yes.
When a session is creating redo change vectors it doesn’t know whether it is going to commit or rollback. But a session has to be able to store an arbitrarily large list of change vectors somewhere, and that list has to appear in the redo log (ideally “instantly”) if the session commits – so Oracle avoids delays on commit by putting the change vectors into the redo log as they are created***.
If you view the question from the opposite extreme, the recovery mechanism has to be able to deal with uncommitted data anyway because there are, after all, several scenarios where data that definitely was committed cannot be recovered; for example, recovery until end of log file 9998 because log file 9999 was destroyed and simply doesn’t exist – how can the code handle transactions that were not committed until part way through file 9999 if it only knows how to handle committed transactions ?)
*** Not strictly true from 10g onwards where Oracle introduced a delaying effect aimed at reducing competition for the redo allocation and redo copy latches for “small” transactions.
If you see a comment like “X is a bad idea” this does not mean “some mechanism that is vaguely ‘not X’ is a good idea”.
If, for example, I say:
that is absolutely not the same as saying
If this were a purely mathematical world we could invoke symbolic logic and point out:
(A => B) <=> (¬B => ¬A)
which means my statement is equivalent to:
Of course, being Oracle, you may find that someone, somewhere, has exactly such a histogram that appears to work brilliantly for them – but that will be because the optimizer has messed up the arithmetic so much that they are getting a great execution plan for completely the wrong reason … so they need to watch out for the next upgrade or patch release in case the optimizer gets enhanced.
Here’s a useful description I heard recently from philosopher Daniel Dennett:
The canons of good spin:
It seems to describe a lot of the stuff that our industry publishes on the internet.
The English language is full of irregular verbs, for example: I am hypothesising about possible explanations You are guessing He’s talking rubbish [Back to Philosophy 10] Filed under: humour, Philosophy
The most significant question to ask when thinking about adding a new index: “Will the index eliminate significantly more work than it introduces (at the moments when it really matters) ?” A few examples of “moments that matter”: Bulk housekeeping Highly concurrent OLTP activity Frequent high-precision reporting Acceptance testing for side effects [Back to Philosophy [...]