天天看點

14.3.4 Configuring the Memory Allocator for InnoDB 配置記憶體配置設定器

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 是被關閉,所有這些配置設定請求通過系統記憶體配置設定器實作

繼續閱讀