实际上MySQL内存的组成和Oracle类似,也可以分为SGA(系统全局区)和PGA(程序缓存区)。
mysql>show variables like "%buffer%";
一、SGA
1.innodb_buffer_bool
用来缓存Innodb表的数据、索引、插入缓冲、数据字典等信息。
2.innodb_log_buffer
事务在内存中的缓冲,即red log buffer的大小
3.query cache
高速查询缓存,在生产环境中建议关闭。
4.key_buffer_size
用于MyISAM存储引擎,缓存MyISAM存储。
引擎表的索引文件(区别于innodb_buffer_poll数据和索引缓存)
5.innodb_additional_mem_pool_size
用来缓存数据字典信息和其它内部数据结构的内存池的大小。MySQL5.7.4中该参数取消。
二、PGA
1.sort_buffer_size
主要用于SQL语句在内存中的临时排序
2.join_buffer_size
表连接使用,用于BKA,MySQL5.6之后开始支持。
3.read_buffer_size
表顺序扫描的缓存,只能应用于MyISAM表存储引擎。
4.read_rnd_buffer_size
MySQL随机读缓冲区大小,用于做mrr,mrr是MySQL5.6之后才有的特性。
5.tmp_table_size
SQL语句在排序或分组时没有用到索引,就会使用临时表空间。
6.max_heap_table_size
管理heap,memory存储引擎表。