Archive for 26/4/2007

MySQL at Google

MySQL: The Real Grid Database, Mark Callaghan, Chip Turner

A tremendous amount of work also done by Wei Li and Gene Pang.

Google has a large MySQL deployment, and they enhance it as needed.

MySQL@Google: too many queries, transactions, data, and rapid growth. Real workload with OLTP and reporting. Workload at Google is *critical*.

The well known solution is to deploy a “grid database”:

  • use many replicas to scale read performance
  • shard your data over many masters to scale write performance (vertical partitioning of data)
  • sharding is easy, resharding is hard

Large number of small servers, not much capacity lost when a server fails, support as many servers as possible with a few DBAs.

Manageability is important at Google – make all tasks scriptable. Gives you time to solve more interesting problems, and also support hundreds of servers with one DBA.

Google prefers under-utilizing servers – better to have 3 servers at 50%, rather than 2 servers at 75%. Less maintenance, less tuning, load spikes tolerated better.

Monitor everything you can: vmstat, iostat, MySQL error logs, /var/log/messages, SHOW STATUS & SHOW PROCESSLIST output, etc. Archive it for as long as you can. And automate all this as much as possible. Allow to query/visualize data from the archive. There are tools out there, and Google has some internal ones that they use.

They tend to not store the logs in a database. Its more efficient to bzip it or something (I’m thinking the ARCHIVE storage engine might be appropriate for them, possibly).

Many fast queries can be as much of a problem as one slow query.

mypgrep is an open source tool that Google has released.

Changed MySQL to count activity per account, table, and index:

  • SHOW USER_STATISTICS – Displays per account activity
  • SHOW TABLE_STATISTICS – each table, number of rows fetched/changed
  • SHOW INDEX_STATISTICS – rows fetched per index, find indexes that were never used

MySQL High Availability, with even brighter future – with DRBD for instance. Cluster and Replication rock, however they need features right now. Committed to InnoDB and MySQL Replication

Zero transaction loss on failures of a master. Minimal downtime on failures of a master (if they can get downtime within 1-2 minutes, they’ll be happy). Reasonable cost in performance (added latency for a single workload), and dollars.

Readers and writers don’t lock each other.

Failure happens everywhere: OS (kernel OOM or panic), still running a lot of 32-bit servers, mysqld crashes due to code they themselves write, corrupted write (so InnoDB checksums rock), file system becomes inconsistent after an unplanned reboot (they use ext2), bad RAM, people (! rebooting by mistake :) ).

Features they want to see in MySQL: synchronous replication as an option, product that watches a master and initiates a failover, archives of the master’s binlog stored elsewhere (in case the master becomes unreachable), state stored in the filesystem to be consistent after a crash (a more modern FS besides ext2 will make this better).

And everyone’s been pretty much talking about how Google is contributing to MySQL, with some interesting twists to why they’re contributing back and open sourcing their code. google-mysql-tools.

Technorati Tags: , , , , , ,

Extreme Makeover: Database or MySQL@YouTube

Arguably one of the most interesting keynotes (and technical to boot!), Paul Tuckfield not only entertained us in his 40 minute keynote, he also did so outside when the keynotes ended.

Just the DBA at PayPal, just the DBA at YouTube. Only 3 DBAs at YouTube that make it all happen. Only a MySQLer for ~8 months (Oracle for ~15 years). So guess PayPal is a Oracle shop.

MySQL is one (important) piece of the scalability picture.

Technologies: Python, Memcache, MySQL replication. Praises Python, a lot (its much quicker, than C++, to implement goodness).

Click tracking on a separate MyISAM site. But Read/write on InnoDB, using replication. Far more reads than writes at YouTube

4x2ghz Opteron core, 16GB ram, 12x10krpm scsi – constantly crashing, replication saved them

5.0 “mystery cache hits” – when you export and import (mysqldump and load back into 5.0), you boost your performance, rather than if you upgrade in place, because there’s a compact row format. They moved from 4.1 -> 5.0.

Cache is king. Writes, cache by RAID controller rather than the OS. Only the DB should cache reads (not raid, not linux buffer cache)

Software striping atop hardware array.

The oracle caching algorithm – in academia. Not something I’ve heard much about, and definitely need to look into it further.

The talk was too long, but would make a most interesting read, and an actual presentation rather than a keynote. I hope his presentation makes it online, sometime soon.

Note-to-entrepreneurs: If building a web business, and you want to be acquired by Google, its quite largely possible that their due diligence includes “python” compatibility. Most of their released tools, are all python-related or based. Oh, and make sure you use commodity hardware (in fact, do that if you want to get VC funded, even.)

Update: A little note on the oracle algorithm. If anyone has papers, and more credible links, please do drop me a line.

Technorati Tags: , , , , , ,

Lightning talks with Community Contributors

I think this was a really interesting talk (because of all the contributors talking), and my only minor complaint was that it was up against some really good talks, and we didn’t get more people showing up to a talk that was very largely on the great Architecture of Participation. It also is interesting, as it goes to show that blogging can get you good rewards – most of everyone listed below, is a somewhat active blogger.

Martin Friebe – bug reports, patches
Why? Its just cool to contribute. Improves your knowledge. MySQL rewards you (named on the website, Enterprise, etc.).
How? Write code. Look for limitations. Just use MySQL.

Peter Zaitsev
Hates submitting bugs, but he needs a bug free MySQL for himself and customers. Therefore, report them, and scream loud!
Be an early adopter.
Regular hardware, for storage engine benchmarks. Patches, and other cool bits for MySQL.

Sheeri Kritzer – blogger, user group meetings, podcasts
Bugs, but contributing is not only technical. “Just do it” (in terms of user groups)
You set your own deadlines, and you look like a hero when you’re a community member, as opposed to it being your job.
Don’t overcommit: back out earlier, rather than later
“chronic volunteer”

Paul McCullagh – PBXT storage engine
While testing PBXT, he found a few bugs, and thats how he became a Quality Contributor. He didn’t get such a status by writing PBXT. I do think thats wrong, and maybe MySQL needs to drop Quality, and just have it as the Contributor program?

Baron Schwartz – innotop, blogger
MySQL is not perfect, and he misses a lot of Microsoft SQL Server’s tools. His motto is “don’t complain, do something about it.” And the opportunity is obvious.
innotop started as an InnoDB transaction monitor, sort of like mytop for InnoDB.
Next, MySQL Toolkit.

Beat Vontobel – blogger
User since 3.23, active since 5.0-alpha – lots of new features to blog about and a lot of bugs to post about. Surprised that most of his bugs got fixed very quickly. Blogging as a means of sharing knowledge.
Advises to be a customer, as bug reports are free, but if it hits the internal bug database, you’re set at it getting fixed quicker

Yoshiaki Tajika – NEC Japan, MySQL Customer Support
3 years ago, NEC began to support MySQL.
He likes the bug reporting system, as compared to the Microsoft SQL system – bug reports posted anytime, without any cost, and talking with the developers directly happen.

Mike Kruckenberg
Find things that are interesting, write about it, report it, change it.

Jeremy Cole – bug reports, patches, blogging
SHOW PROFILE in 5.0.37! DorsalSource. Builds of MySQL with patches and other interesting stuff. Go to website, upload patch, and you get builds on many different architectures.

Bill Karwin – prolific forum poster!
SHA2() patch – comment that federal government wanted sha2 support in all applications in govt. Then he felt bad, so he wrote a feature! Passes the tests, and this is how a feature got enabled.

Works at Zend Technologies, doing Zend Framework supporting MySQL. Writes articles on Forge.

Ask Bjorn Hansen
Used MySQL since around ’96-1997. Started with mSQL first! Everything thats paid for his bills for ~10 years, have relation to MySQL!
Read the *excellent* documentation (a few times)!
“File a bug a week” goal – this is way too easy. Install a new Linux distribution, read the documentation and file away!
3 underrated MySQL features: Standards!
1. Timezone support (save all your date/datetime columns in UTC)
2. Unicode support (he wants an application that he can place his name in the right way!). Tmp table memory requirements go up, but its OK…
3. Use strict mode! (STRICT_TRANS_TABLES and if brave use STRICT_ALL_TABLES)

Technorati Tags: , , , ,