X

計算 MySQL 可能用到的記憶體數量

MySQL 會依照 my.cnf 的設定來決定記憶體的使用量, 是否有公式可以計算 MySQL 在目前設定下, 最高的記憶體使用量會是多少?

註: 此篇計算針對 Innodb.

計算 MySQL 可能用到的記憶體數量

官方說明: How MySQL Uses Memory

查看記憶體使用量 的 公式: (公式取自上述官方網頁)

SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW VARIABLES LIKE 'innodb_additional_mem_pool_size';
SHOW VARIABLES LIKE 'innodb_log_buffer_size';
SHOW VARIABLES LIKE 'thread_stack';
SET @kilo_bytes = 1024;
SET @mega_bytes = @kilo_bytes * 1024;
SET @giga_bytes = @mega_bytes * 1024;
SET @innodb_buffer_pool_size = 2 * @giga_bytes;
SET @innodb_additional_mem_pool_size = 16 * @mega_bytes;
SET @innodb_log_buffer_size = 8 * @mega_bytes;
SET @thread_stack = 192 * @kilo_bytes;
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
) ) / @giga_bytes AS MAX_MEMORY_GB;

結果

+---------------+
| MAX_MEMORY_GB |
+---------------+
|        3.7002 |
+---------------+

如果什麼都不管, 最多會用到 3.7G 的記憶體.

Tsung: 對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
Related Post