實際上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存儲引擎表。