MySQL内存占用计算: global buffer+all thread buffer
global buffer=
innodb_buffer_pool_size 缓存表数据和索引数据,加速查询,并且使查询结果集保存在内以供重用,一般设置到主机内存的70%以下
+innodb_additional_mem_pool_size 存放数据字典信息以及一些内部数据结构,如果数据库的对象过多的话,该值可能需要调整,一般不做调整
+innodb_log_buffer_size 事务日志所使用的缓冲区,当满足innodb_flush_log_trx_commit设置的条件时,会将日志刷新到磁盘中。
+key_buffer_size myisam存储引擎所需要分配的内存大小,默认不调整,因为一般使用Innodb存储引擎
+query_cache_size 查询缓存,高并发写类型库建议关闭
+table_open_cache 高速表缓存数目。开始可先设置一个稍微大的值,如根据max_connections*n,n为一个连接中可能打开的表的数据量。后期等运行一段时间后,可根据Open_tables / Opened_tables >= 0.85,Open_tables / table_cache <= 0.95来进行调整。
+table_definition_cache 存放表的定义信息.frm
+thread_cache_size 空闲线程缓存池。如果有空闲线程,那么当建立新链接的时候会很快进行分配
all thread buffer=
max_threads*(
read_buffer_size mysql读入缓冲区大小。MyISAM引擎顺序扫描会分配一段内存。另外对于所有的引擎的以下操作会使用到该read_buffer_size:使用Order by进行数据行排序,bulk insert into partitions,缓存嵌套查询结果集。默认1MB,值必须是4KB的整数倍,最小8KB,最大2GB,不要设置的过大,并发高时占用内存过高。
+read_rnd_buffer_size
+sort_buffer_size
+join_buffer_size
+binlog_cache_size
+tmp_table_size
+thread_stack
+net_buffer_length
+bulk_insert_buffer_size)