In trying to configure my mysqld appropriately for my all-InnoDB application environment (mysql DB is still MyISAM, of course) I keep seeing varients of this formula to determine total memory usage:
key_buffer_size + query_cache_size + tmp_table_size + innodb_buffer_pool_size + innodb_additional_mem_pool_size + innodb_log_buffer_size + max_connections * (read_buffer_size + read_rnd_buffer_size + sort_buffer_size + join_buffer_size + binlog_cache_size + thread_stack)
This sum is greater than my available physical memory, and may result in paging. I certainly am seeing a performance hit compared to my alternate server (which has more ram).
I am trying, and failing, to find which of these variables are not useful to InnoDB (are only useful to MyISAM) and can be greatly reduced to shrink my total memory allocation.
Question, which config variables can I tune down to reduce MySQL's total memory allocation?
After much checking, and much more fuss, I discovered that it doesn't matter. Apparently MySQLd sparsely allocates buffers, meaning that if I am not using MyISAM, the buffers that only benefit MyISAM won't grow to take significant portions of physical memory and the calculated "total memory allocation" will not actually be allocated.
You might try Percona's configuration wizard. It should be a good start. The Percona folks know their MySQL.
Warning: It'll ask you to sign up to get the final results.
You'll probably need to do some benchmarking to tune for your specific load pattern beyond that.