One of the little features of WordPress is that you can see where incoming readers came from (their search criteria, or a site that redirected them). Yesterday I was quite interested to see a few viewers coming in from a Burleson Consulting article which referenced a page I had written about getting some help from statspack for a recent trouble-shooting exercise.
Naturally I had to see what Mr. Burleson had to say – unsurprisingly he was fairly selective in what he said, picking the bits that best suited the purpose of advertising one of his books and closing with an advert for a website that he has helped develop and which he claims to be an “expert system” to help you learn how to spot system-wide performance problems.
Most significantly, Mr. Burleson managed to miss the fact that when I fixed the most “obvious” and resource-intensive problem reported by statspack, the batch response time did not improve. He also missed the summarising statement:
The moral of the story: statspack can help you spot the heavy hitters, but sometimes you really need to know which items are in the critical path.
He even managed to claim that someone commenting on my note had used a “similar approach” (which, by this point in his screed, implied the methods he had quoted from his book) to get massive performance improvements – when the commentator had explicitly followed up my points about “the critical path”, and “only doing the work that needed to be done”.
Despite the general misdirection of this article it does highlight one interesting point. In a section headed:
Superfluous updates – Oracle flaw, or Oracle feature ?
Mr. Burleson says, regarding my observation about the resources wasted by a “no-change” update:
We would have expected (at least, I did, anyway) that Oracle would check to see if a SQL update statement failed to result in any row changes.
Personally I wouldn’t expect anything, I would start by asking the question “I wonder what happens when …”, and then check – because it’s very easy to test (and, of course, that’s a test I did many years ago – and repeat from time to time).
But there is an important strategic discussion embedded in the approach that Oracle takes – is it sensible to update values which aren’t going to change, or should Oracle check and avoid generating the undo and redo ?
I’ll leave this question, temporarily, as an exercise for the reader – and address it in a couple of days’ time.