Answers:
将用相关信息将此发布为答案。基本公式为:
可用RAM =全局缓冲区+(线程缓冲区x max_connections)
max_connections =(可用RAM-全局缓冲区)/线程缓冲区
要获取缓冲区列表及其值:
SHOW VARIABLES LIKE '%buffer%';
这是缓冲区的列表,以及它们是全局缓冲区还是线程缓冲区:
全局缓冲区:key_buffer_size,innodb_buffer_pool_size,innodb_log_buffer_size,innodb_additional_mem_pool_size,net_buffer_size,query_cache_size
线程缓冲区:sort_buffer_size,myisam_sort_buffer_size,read_buffer_size,join_buffer_size,read_rnd_buffer_size,thread_stack
警告!这是从2011年开始使用MySQL5.1.x。使用风险自负
----原帖----
这是存储过程形式的另一个替代公式:
DELIMITER //
CREATE PROCEDURE sproc_show_max_memory ( OUT max_memory DECIMAL(7,4))
BEGIN
SELECT ( @@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 ) ) / 1073741824 AS MAX_MEMORY_GB INTO max_memory;
END//
DELIMITER ;
CALL sproc_show_max_memory(@show_max_memory);
SELECT @show_max_memory;
我假设您使用的是MySQL数据库>版本5.1.x,并且您是特权用户。但是您可以通过插入所需的任何数字来使用最大连接数,并查看结果。