mysql max_connectionsをどのように計算しますか?
何を考慮していますか?
mysql max_connectionsをどのように計算しますか?
何を考慮していますか?
回答:
これを回答として、関連情報とともに投稿します。基本的な式は次のとおりです。
使用可能な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年から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を使用しており、特権ユーザーであると想定しています。ただし、必要な数を挿入して最大接続数で再生し、結果を確認します。