mysql 內存結構介紹

mysql 內存結構介紹


內存結構

mysql 內存組成和oracle類似,也可以分為SGA(system global area系統全局區)和PGA(program global area程序緩存區)


mysql 內存結構介紹

show variables like '%buffer%';

mysql 內存結構介紹


SGA組成

1.innodb_buffer_pool

用來緩存Innodb表的數據 索引 插入緩衝 數據字典等信息

2.innodb_log_buffer

事務在內存中的緩衝,即 redo log buffer的大小

3. query cache

高速查詢緩衝,該特性在生產不建議使用

4. key_buffer_size

myisam表的的緩存,只緩存索引數據

5.innodb_additional_mem_pool_size

用來保存數據字典信息和其他內部數據結構的內存池大小,mysql5.7.4該參數被移除


PGA

1.sort_buffer_size

用於sql語句在內存中的臨時排序

2. join_buffer_size

表連接使用,即bka(batched key access),感興趣可以瞭解bka 和bnl(block nested-loop)

3. read_buffer_size

表順序掃描的緩存,只應用於myisam表

4.read_rnd_buffer_size

表隨機讀緩存,這個應用於mrr

5.tmp_table_size

sql語句在排序或者分組時候沒有用到索引,就會使用到臨時表空間

6.max_heap_table_size

管理heap 和memory存儲引擎表


show variables like '%heap%';

mysql 內存結構介紹

show variables like '%tmp_table%';

mysql 內存結構介紹

我們看到tmp_table_size和max_heap_table_size默認值都是16M,生產環境下建議將這兩個值設置一樣大小,如果不同則取最小值進行限制,也不建議兩個值太小,否則會引發converted heap to myisam 的報錯


分享到:


相關文章: