MySQL Startup Options
MySQL AB provides a wealth of information regarding the tuning of server parameters, much of which the average user will never need to use. So as not to completely overwhelm you with information, this section will contain only a few of the common startup options for a finely tuned MySQL server.
By the Way
You can read more in the MySQL manual, at http://dev.mysql.com/doc/mysql/en/System.html
When you start MySQL, a configuration file called my.cnf is loaded. This file contains information ranging from port number to buffer sizes, but can be overruled by command-line startup options. At installation time, my.cnf is placed in the /etc directory, but you can also specify an alternate location for this file during start-up.
To use any of these as the base configuration file, simply copy the file of your choice to /etc/my.cnf (or wherever my.cnf is on your system) and change any system-specific information, such as port or file locations.
Key Startup Parameters
The value of key_buffer_size is the size of the buffer used with indexes. The larger the buffer, the faster the SQL command will finish and a result will be returned. Try to find the fine line between finely tuned and over-optimized; you might have a key_buffer_size of 256MB on a system with 512MB of RAM, but any more than 256MB could cause degraded server performance.
A simple way to check the actual performance of the buffer is to examine four additional variables: key_read_requests, key_reads, key_write_requests, and key_writes. You can find the values of these variables by issuing the SHOW STATUS command:
mysql> show status;
A long list of variables and values will be returned, listed in alphabetical order. Find the rows that look something like this (your values will differ):
| Key_read_requests | 10182771 | | Key_reads | 9326 | | Key_write_requests | 48487 | | Key_writes | 2287 |
If you divide the value of key_read by the value of key_reads_requests, the result should be less than 0.01. Also, if you divide the value of key_write by the value of key_writes_requests, the result should be less than 1. Using the previous values, we have results of 0.000915861721998 and 0.047167281951863, respectively, well within the acceptable parameters. You couldtry to get these numbers even smaller by increasing the value of key_buffer_size, but these numbers are fine as they are.
The other important server parameter is table_cache, which is the number of open tables for all threads. The default is 64, but you might need to adjust this number. Using the SHOW STATUS command, look for a variable called open_tables in the output. If this number is large, the value of table_cache should be increased.
The sample configuration files included with your MySQL installation use various combinations of key_buffer_size and table_cache. You can use these combinations as a baseline for any modifications you need to make. Whenever you modify your configuration, you have to restart your server for changes to take effectsometimes with no knowledge of the consequences of your changes. In this case, be sure to try your modifications in a development environment before rolling the changes into production.