Gabriel Solomon Asked: 2011-02-16 04:09:36 +0800 CST2011-02-16 04:09:36 +0800 CST 2011-02-16 04:09:36 +0800 CST 你如何计算 mysql max_connections 变量? 772 你如何计算 mysql max_connections ? 你有什么考虑? mysql configuration 3 个回答 Voted Best Answer Derek Downey 2011-02-16T09:42:06+08:002011-02-16T09:42:06+08:00 将发布此作为答案,并附上相关信息。基本公式是: 可用 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 randomx 2011-02-16T15:43:52+08:002011-02-16T15:43:52+08:00 警告!这是从 2011 年开始使用 MySQL 5.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 并且您是特权用户。但是您可以通过插入您想要的任何数字来使用最大连接数并查看结果。 rvs 2011-02-16T11:11:52+08:002011-02-16T11:11:52+08:00 我盯着我从简单计算中得到的数字:expected_number_of_requests_per_second * expected_average_request_processing_time * 2。 对于以后的调整,我总是使用带有历史数据的监控系统,并尝试保留 20% 以防出现峰值。当您使用一些连接池(这通常是一个好主意)时,它会稍微复杂一些 - 然后您需要监控池中已使用连接的数量。
将发布此作为答案,并附上相关信息。基本公式是:
要获取缓冲区列表及其值:
这是缓冲区的列表以及它们是全局的还是线程的:
全局缓冲区: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 年开始使用 MySQL 5.1.x。使用风险自负
---- 原帖 ----
这是存储过程形式的另一个替代公式:
我假设您使用 MySQL 数据库 > 版本 5.1.x 并且您是特权用户。但是您可以通过插入您想要的任何数字来使用最大连接数并查看结果。
我盯着我从简单计算中得到的数字:expected_number_of_requests_per_second * expected_average_request_processing_time * 2。
对于以后的调整,我总是使用带有历史数据的监控系统,并尝试保留 20% 以防出现峰值。当您使用一些连接池(这通常是一个好主意)时,它会稍微复杂一些 - 然后您需要监控池中已使用连接的数量。