mysql的内存计算公式:
mysql used mem = 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
)
mysql中输入以下命令,可以查出内存总量及各个参数的配置情况:
SET @kilo_bytes = 1024;
SET @mega_bytes = @kilo_bytes * 1024;
SET @giga_bytes = @mega_bytes * 1024;
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;
select @@key_buffer_size / @mega_bytes;
select @@query_cache_size / @mega_bytes;
select @@innodb_buffer_pool_size / @mega_bytes;
select @@innodb_additional_mem_pool_size / @mega_bytes;
select @@innodb_log_buffer_size / @mega_bytes;
select @@read_buffer_size / @mega_bytes;
select @@read_rnd_buffer_size / @mega_bytes;
select @@sort_buffer_size / @mega_bytes;
select @@join_buffer_size / @mega_bytes;
select @@binlog_cache_size / @mega_bytes;
select @@thread_stack/ @mega_bytes;
select @@max_connections;
参数配置:
在/etc/mysql/my.cnf中的[mysqld]段中配置对应的参数,如:
max_connections = 128
innodb_buffer_pool_size = 2G