Sounds a bit far fetched (pun intended ;-), but we're doing it.
This is not inside of the MySQL server, but rather the overall
application design. Let me run you through the logic...
Some key aspects to scaling are: not doing unnecessary queries,
and caching what you can. Just a quick baseline. The fastest
query is the one you don't do, or the one you've already done
before - the latter being caching.
A simple yet brilliant example of this is the Youtube trick where
a script reads the relay log, converting updates into appropriate
selects and running them so that the InnoDB cache will have the
blocks in memory when the slave SQL thread executes the actual
update. Maatkit now has a tool for this, so it's publically
available. It's not quite predictive, but it's a neat trick
anyway that sometimes comes in handy. Search engines use similar
tricks.
Extending on this, with certain applications you actually …
Sounds a bit far fetched (pun intended ;-), but we’re doing it. This is not inside of the MySQL server, but rather the overall application design. Let me run you through the logic…
Some key aspects to scaling are: not doing unnecessary queries, and caching what you can. Just a quick baseline. The fastest query is the one you don’t do, or the one you’ve already done before - the latter being caching.
A simple yet brilliant example of this is the Youtube trick where a script reads the relay log, converting updates into appropriate selects and running them so that the InnoDB cache will have the blocks in memory when the slave SQL thread executes the actual update. Maatkit now has a tool for this, so it’s publically available. It’s not quite predictive, but it’s a neat trick anyway that sometimes comes in handy. Search engines use similar tricks.
Extending on this, with certain applications you actually tell …
[Read more]