天天看點

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

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


當InnoDB 被開發時,記憶體配置設定提供了作業系統和 run-time libraries是經常缺乏性能和可擴充性


在那時,沒有記憶體配置設定庫調整用于多核CPUs.是以,InnoDB 實作它自己的記憶體配置設定器在記憶體子系統。

這個配置設定器是通過一個的單一的互斥鎖保護,會成為一個瓶頸。

InnoDB 也實作一個封裝接口


如今, 多核系統已經變的越來越廣泛, 如今作業系統已經成熟,顯著改善已經在記憶體配置器安裝在作業系統。

那些新的記憶體配置設定器 執行的更好和比過去更好的擴充。 大部分工作,特别是那些頻繁配置設定和釋放(比如多表關聯),



你可以控制是否InnoDB 使用它自己的記憶體配置設定器或者一個作業系統的配置設定器,通過設定 系統變量參數 innodb_use_sys_malloc 的值



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 and free functions以來作業系統而不是自己管理記憶體池


這個參數不是動态的,隻有在系統重新開機時生效。 繼續使用InnoDB 記憶體配置設定,設定 innodb_use_sys_malloc to 0. 


 當InnoDB 記憶體配置設定器是關閉的, InnoDB 忽略 innodb_additional_mem_pool_size的值。

InnoDB 記憶體配置設定使用一個額外的記憶體池用于滿足配置設定請求 不必再到系統記憶體配置設定器。


當 InnoDB memory allocator is disabled, 所有這些配置設定請求是通過系統記憶體配置設定執行
      

繼續閱讀