the S-word
Categories: mysql, scalability
Written By: todd
These days, everybody claims to be building the next YouTube, the next Google, “the Flickr of …” something. They talk about slick AJAX web2.0 interfaces, or the awesome features they are building, or how great the content is.
But deep down, every one of these Web2.0-could-be site’s operator has a dreadful, paralyzing fear of the S-word:
Scalability.
Sooner or later, any moderately successful web application will need support a large number of users, lots of requests, and consume tons of bandwidth. I wonder what percentage of those “google adsense whores” paychecks go to paying their bandwidth bills?
There exists all over the net tips to improve your website performance — from configuring Apache with Worker threads, to tuning your CSS — but usually the biggest performance bottleneck in a web application is the database.
I was having a chat last week with a web startup (that shall remain nameless) about how hard it is to get support for their MySQL database. MySQL is the most popular open-souce and free database, but they also sell a commercial version. This company was trying to buy the commercial product — trying to give MySQL their money! — and having trouble getting the support they wanted. The developers at this startup reminded me, that when you call Oracle and ask to buy their expensive database, a swarm of sales engineers descend upon your site to help you get the most out of it. Why doesn’t MySQL (the company) rush to support buyers of MySQL (the database) ?
So why is it so hard to find resources for this stuff? If you want to learn Java, there are 10 million places to start learning. But if you need to learn how to scale your site, how to increase performance and sustain higher traffic, there’s no one-stop destination for this. Some of the best tips I’ve found are at Jeremy Zawodny’s blog, but the problem remains: there are 1000 different little tips and tweaks to try, and depending on your situation it may do nothing for you.
So I want to pull together a top-5 list of MySQL (and webapp in general) performance tuning tips. Where to start looking if you’re having trouble handling heavy load.
My next post will give my top-5 (or so) tips and strategies for tuning MySQL. At the least, I hope it will provide developers and site administrators a place to start looking to enhance their database performance.
