mysql max_connections変数をどのように計算しますか?


回答:


27

これを回答として、関連情報とともに投稿します。基本的な式は次のとおりです。

使用可能な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


1
:KCDは、最大メモリ計算機として、このリンクを提供mysqlcalculator.com
デレク・ダウニー

デレク、「グローバルバッファー=すべてのグローバルバッファー変数の合計とスレッドバッファー=すべてのスレッドバッファー変数の合計」という意味ですか?
マット

11

警告!これは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を使用しており、特権ユーザーであると想定しています。ただし、必要な数を挿入して最大接続数で再生し、結果を確認します。


1
あなたの式を読んだだけです。なめらかな!!! ところで+1 !!!
RolandoMySQLDBA

2
5.5と5.6でのすべての変更を考慮して、おそらくこの式を再検討する時が来たでしょうが、それでもやや便利です。
-randomx


0

単純な計算から得られる数値を見つめています:expected_number_of_requests_per_second * expected_average_request_processing_time * 2。

後でチューニングするために、私は常に履歴データで監視システムを使用し、ピークの場合に20%を予約しようとしています。いくつかの接続プーリングを使用している場合は、少し複雑です(通常は良い考えです)-プールで使用されている接続の数を監視する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.