I regret not being able to write new things more often, but in fact it only means I am OK: very busy with work, doing private stuff (which is important since life is not all about working), enjoying the three young kids and trying to achieve some good results in track and field. And for that last goal, I can say I did. After a few months of struggling to find a tiny piece of shape comparable to last years shape, just in time I found it. I won the gold medal in the Dutch Championships 400 metres hurdles. OK, be honest, for the ‘older’ men (40+). Still, my time was certainly not bad and about 2 seconds ahead of all other competitors of 35 years and older. And it brought me back in the top 30 of all Dutch 400 metres hurdles runners (Juniors and Seniors) in 2010. Nice. Just as nice was that I met Alex Nuijten (Amis) who volunteered there and even wrote about it on this nice blog. Thanks Alex.
I am probably in worse shape this year because I spend so much time doing things like the PL/SQL Challenge and doing a presentation for the Dutch User Group on Performance Tuning and Troubleshooting. Ofcourse the first one is mostly fun and it does not take so much time: the statistics on the site even show clearly how much time I needed to answer all those questions so far (it started the 8th of April). It is a superb idea worked out by Finn Elebaek Nielsen and Steven Feuerstein, whom I got to know rather well in the last decade since I used to work intensively with his PL/Generator and invited him a few times for the Dutch User Group. Great guy and very enthusiastic about spreading the word of PL/SQL. It encourages me to play at my best in this Challenge and so far I am doing much better than expected (currently in second place and have been in first place for several days). And we are reaching Quarter’s end, meaning the top players will do a play-off to decide who will be 1st, 2nd and 3rd. And these will win some serious cash prices. It is serious stuff 😉 and I hope to be able to be in that top 10 to give it a shot.
The second thing, the presentation for the Dutch User Group, was at May 26 where I was able to talk to almost 100 Oracle minded people. An unexpected high number of people subscribed for my presentation. Not often a waiting list is needed for this monthly event, where the User Group invites a speaker on a certain topic. This time it was about Database Performance Tuning and Troubleshooting and they found me on LinkedIn. I can only say: it seems to work and to pay off to have a profile on such a social network. Even though I am not fond of exposing on all kinds of social networks, I find LinkedIn an almost “must have” for professional people. But that is very personal and I know people who stay away from it as far as possible. But for me it works. So I was invited to speak about Database Tuning. Since I do not do presentations that often, I did not have a ready-made set of slides yet and all you people who present once and a while know how much energy this takes. I must say it was in my head almost 24*7. Oh yes, I was thinking of ways to present this with this joke and to present that with that joke and I was having a lot of fun before I fell asleep each night. I know, it sounds sad, especially since I seemed to forget about all those jokes as soon as I thought of a new one. Is that the age-thing…? As said earlier, I have reached my 40’s. It was so bad that I almost wanted to start with the sentence: “If I remembered all the jokes I had in mind for this evening, you people would have had a splendid and joyful evening!” Now, reality was that it became much more serious than that. I kept the jokes to an acceptable minimum :-). Still I think I kept almost all attendees awake for almost 2,5 hours and got some nice feedback afterwards. To me it was a success for a first “big” presentation and I had to battle against a beamer that did not want to recognize my Dell laptop. Which was a bit of a shame, since the prepared demo’s could only run on that laptop and not on the one I borrowed from a former colleague who was in the room.
I talked about several things that are important in my work as a Performance Troubleshooter. I included some highlevel thoughts for which I am mostly inspired by Cary Millsap and his great book “Oracle Performance Tuning”, but also from his Masterclass. By that I mean things like doing diagnosis in the proper scope and not being blinded by averages and totals that make real performance problems invisable. But also that I feel a modern DBA and most certainly one that is involved in solving performance problems needs to communicate. Not only talk to other technical people (like developers), but also communicate with people in the business. They determine your priorities, since your priorities need to allign with the business priorities. Example: 1,5 years ago someone told me that we needed to focus on performance of some part of the system, since some dashboard showed a decreasing performance line. So we did some extra analysis and did not really find a performance problem. Users were also not complaining. Then I said I wanted to be able to talk to key users who could tell me their worst problems. It was a great thing: their impression of that “bad” part of the system was in fact the same as ours after that analysis: that part had no real performance problems according to all those users but most of them asked if we could have a similar conversation soon about a totally other part of the system which had some real bad problems. After all it turned out that “dashboard” that showed the so-called “performance problem” was not accurate: it was running on a laptop with performance problems of its own. Our communication with the users revealed no problem, but lead us to a part that we did need to look at and focus on. One for which we did not have an accurate performance monitor for. Without those users showing us their real problems, we would have focussed on the wrong part of the system. It can be that simple, sometimes.
For the rest I presented some more technical things:
- I told about some mysteries and fallacies of the optimizer (in which part I referred to Wolfgang Breitling’s “Tuning by cardinality”) and showed some fixes you can do when the optimizer cannot get it right
- I talked about indexing strategy in an OLTP and OLAP system and showed some thoughts of Tapio Lahdenmäki (3-star indexes and the difference between single block reads and multi block reads)
- And finally I had some slides on one of my personal favorites: clustering of data
One of the backgrounds for the presentation was that I wanted to show things you can do when a system has problems, without immediately buying faster or more hardware. There is often so much you can achieve with simple solutions. Only well tuned systems are hard to tune, but in my experience and opinion, a great deal of systems out there are not even near being well-tuned. And there you can save a lot of money by having someone with Oracle knowledge and the ability to understand what the business wants and how the application works, take a look at your application. It becomes hard when the application itself is the biggest problem, but even a bad application can be helped with proper indexes, data clustering or optimizer related improvements, without touching the application itself.