There has been some great discussion lately about internal database schedulers and I/O handling on the Drizzle mailing list, and I thought I’d blog about it to summarize and see what others thought. These are ideas we’re toying around with for Drizzle, but they could be interesting for other databases (or other types of servers). The key things we are focusing on are modularity and concurrency. We also need well defined interfaces to allow anyone to come along and write/rewrite a component for their own needs.
First, a little background for those not familiar with Drizzle or MySQL internals. In MySQL, a client is accepted, assigned to a THD (thread) object, and is given an actual thread to run in. The client basically sits in a loop of reading a command, parsing it, executing it, and writing the result back. This works fine when …[Read more]