14.3.4 Configuring the Memory Allocator for InnoDB 配置記憶體配置設定器
當InnoDB 被開發,記憶體配置設定器提供了作業系統和run-time 庫往往缺乏性能和可擴充性。
當時,沒有記憶體配置設定器庫調整用于多核CPUs.
是以,InnoDB 實作它的自己的記憶體配置設定在記憶體子系統。
這個配置設定器是通過一個單獨的互斥保護,這可能是一個瓶頸。
如今,随着多核系統越來越廣泛的應用,如作業系統已經成熟,記憶體分期已經顯著改善。
新的記憶體管理器工作的更好,比過去更好的擴充性。 高性能記憶體配置設定器包括 Hoard, libumem, mtmalloc, ptmalloc,
tbbmalloc, and TCMalloc.
大部分工作,尤其那些記憶體是頻繁被配置設定和釋放的(比如多表關聯),收益于使用一個高度調整的記憶體配置設定器
相對于内部。
你可以控制是否InnoDB 使用它自己的記憶體配置設定器或者作業系統的配置設定器,
通過設定系統配置參數
mysql> show variables like ‘%innodb_use_sys_malloc%’;
+———————–+——-+
| Variable_name | Value |
| innodb_use_sys_malloc | ON |
1 row in set (0.00 sec)
如果設定為ON或者1(預設的),InnoDB 使用malloc 和free 函數依賴作業系統相比
本身管理記憶體pools.這個參數不是動态的,隻有在系統啟動時生效。
繼續使用InnoDB 記憶體配置設定器,設定innodb_use_sys_malloc to 0.
當InnoDB 記憶體配置設定器被禁用, InnoDB 忽略 innodb_additional_mem_pool_size的值。
InnoDB 記憶體配置設定器使用額外的記憶體pool 用于滿足分區請求不必到system memory allocator。
當 InnoDB memory allocator 是被關閉,所有這些配置設定請求通過系統記憶體配置設定器實作