環境
MacBook Pro
序言
MySQL 技術內幕 InnoDB 存儲引擎 第二版
後臺線程
MySQL是多線程模型,因此有個多個不同的後臺線程,負責處理不同的任務。
- Master Thread
額外的內存池
在 InnnoDB 存儲引擎中,對內存的管理是通過一種稱爲內存堆的方式進行的。
在對一些數據結構本身的內存進行分配時,需要從額外的內存池中進行申請,
當該區域的內存不夠時,會從緩存池中進行申請。例如,分配了緩衝池(innodb_buffer_pool
),
但是每個緩衝池中的幀緩衝(frame buffer
)還有對應的緩衝控制對象(buffer control block
),這些對象記錄了一個些
諸如LRU、鎖、等待等信息,而這個對象的內存需要從額外內存池中申請。
因此,在申請了很大的InnoDB 緩衝池時,也應該考慮相應的增加這個值。
LRU列表用來管理緩存池中頁的可用性,Flush列表用來管理將頁刷新回磁盤,兩者互不影響。