It may amuse some to learn that I’ve started taking driving lessons. Hurrah! Having spent the last three mornings dribbling around roads near Stockport I can safely say that this driving thing isn’t half as difficult as I thought it would be. I’ve a mild tendency to nearly crash into things, but I’m sure that will happily evolve into a habit of actually crashing into things, given enough time. All I can say is that it’s now a long time since I was 17 and it’s about time.
In other news an interesting thing happened at work. Whilst building an ASP.NET application designed to serve the needs of a few thousand people, we (the team! go team!) were considering ways in which the implementation costs could be cut down. Being a big(ish) company, we have things called “standards” which the cynics amongst us would claim only exist to get in everyone’s way. Of course, it’s actually a good idea to only have a few selected bits of technology and platforms on which everything is built, because then it’s a lot easier to support, but I digress.
The “standard” in this case was to build the database on Microsoft SQL Server. Now, unfortunately, this is about $20k per CPU. Given our habit of building things a) twice and b) on big hardware, this would have been an outlay of (2x 4-way boxes) $160k. This is a lot of money, easily dwarfing the amount that needed to be spent on trivial things like, hardware, people, that kind of thing. So we needed an alternative. As far as I knew, the only other standard was Oracle, which is ridiculous. So, throwing caution to the wind, I put the whole thing on MySQL running on RedHat and didn’t tell anyone.
I was surprised. It ran a lot quicker. I didn’t quite believe this, so I did some tests using JMeter. Surprisingly, I found that under load, the MySQL backend gave about a 3-fold performance improvement to the application over the MSSQL backend. I should point out that not much else changed - the db schema was the same, with the same triggers, stored procedures and indexes etc. Now, some people may say that this says a lot about my ability to tune a MySQL database versus a MSSQL database and they’re probably right. However, I’m not a database expert and managed to get the MySQL db running a lot faster using only the internet (specifically the fabulous site: The MySQL performance blog) and a bit of guesswork. To me, that says a lot.
As it happens, the hand of the standards police has pointed at me, and it turns out that PostgreSQL on Solaris is also a standard. This has the advantage of being both cheap and supported, so I now have to once again go through a lengthy migration process to move everything over. Hopefully I’ll learn something in the meantime.
So, the moral of the story is: Don’t listen to people. Mostly.