Hi all,
In the light of my recent experiences with tuning my MySQL server, I had a
few ideas about how getting optimum performance from your MySQL server could
be made a little easier for everyone.
My idea is to have some kind of facility to 'auto-tune' the server
configuration variables for you. Although tuning manually seems to be more
trial-and-error than deduction and formulation, I'm sure that it's possible
to work out rules for what needs to be configured and how from information
that is usually readily available about the environment that the server is
running in.
Here are some examples of what I mean:
1. The key_buffer_size variable could probably be fairly accurately set
according to available system memory, sizes of indexes on current tables and
by analysing EXPLAIN output from common SELECT queries from logs.
2. Parameters that are very OS-specific, such as flush_time for Win9x
systems and thread_concurrency on Solaris.
3. Things like tmp_table_size could be set according to available system
memory and answers from the user about what kind of disk subsystem they're
using (maybe not even this - a simple disk benchmark may provide useful info
here).
These are just initial thoughts, so I could be wrong, but I'm sure there's a
grain of sense in there somewhere.
What I envisage is something that could operate in either (or maybe both) of
two ways. Overall it would be some kind of program that will grab
information about the system (i.e. CPU type, RAM, disk subsystem, etc.),
status and variable information from MySQL and recent logs it is given
access to - maybe even a few answers from the user about things it can't
deduce on it's own. It could produce a report about what things are most
significant about your usage and environment and some recommendations for
configuration settings (maybe even implement them for the user, although
that may be a bit *too* automated). It might either be something that you
run on a one-off basis, or something that you run persistently over a period
of time that would record information it needs at regular intervals in order
to get a 'bigger picture' and make more informed recommendations.
I'd like to know what people think - whether it's just crazy and would never
be feasible or if it could genuinely be something possible and something
useful. If it only inspires the MySQL developers to contemplate something
like this for a future version of MySQL, then that would great. But
otherwise, I like to think that someday I might be able to accomplish it,
given some more experience and the time to research everything (and of
course, learn some C/C++).
Regards,
------------------------------------------------
Basil Hussain ([EMAIL PROTECTED])
---------------------------------------------------------------------
Before posting, please check:
http://www.mysql.com/manual.php (the manual)
http://lists.mysql.com/ (the list archive)
To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php