MySQL 配置InnoDB的記憶體分配器
配置InnoDB的記憶體分配器
在開發InnoDB時,作業系統和執行時庫提供的記憶體分配器通常缺乏效能和可伸縮性。那時,還沒有針對多核cpu調優的記憶體分配器庫。因此,InnoDB在mem子系統中實現了自己的記憶體分配器。這個分配器由一個互斥鎖保護,這可能成為瓶頸。InnoDB還圍繞系統分配器(malloc和free)實現了一個包裝器介面,它同樣由一個互斥鎖保護。
今天,隨著多核系統的廣泛應用,以及作業系統的成熟,作業系統所提供的記憶體分配器已經有了顯著的改進。與過去相比,這些新的記憶體分配器效能更好,可伸縮性更強。大多數工作負載,特別是那些經常分配和釋放記憶體的工作負載(比如多表連線),比使用一個內部的、特定於innodb的記憶體分配器更好的記憶體分配器。
你可以透過在MySQL選項檔案(my.cnf或my.ini)中設定系統配置引數innodb_use_sys_malloc的值來控制InnoDB是使用自己的記憶體分配器還是作業系統的分配器。如果設定為ON或1(預設值),InnoDB使用底層系統的malloc和free函式,而不是自己管理記憶體池。該引數為非動態配置,僅在系統啟動時生效。如果需要繼續使用InnoDB記憶體分配器,請將innodb_use_sys_malloc設定為0。
當InnoDB記憶體分配器被禁用時,InnoDB會忽略引數innodb_additional_mem_pool_size的值。InnoDB記憶體分配器使用一個額外的記憶體池來滿足分配請求,而不必回到系統記憶體分配器。當InnoDB記憶體分配器被禁用時,所有這樣的分配請求都由系統記憶體分配器來完成。
在使用動態連結的類似於unixr的系統上,只需讓環境變數LD_PRELOAD或LD_LIBRARY_PATH指向實現該分配器的動態庫,就可以輕鬆地替換記憶體分配器。在其他系統上,可能需要進行一些重新連結。請參考您所選擇的記憶體分配器庫的文件。
因為當系統記憶體分配器被使用時(innodb_use_sys_malloc是ON), InnoDB不能跟蹤所有記憶體的使用情況,所以在SHOW ENGINE InnoDB STATUS命令的輸出中BUFFER POOL AND memory部分只包括Total memory allocation中的BUFFER POOL統計資訊。任何使用mem子系統或使用ut_malloc分配的記憶體都被排除在外。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2886308/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL InnoDB記憶體配置MySql記憶體
- MySQL InnoDB的記憶體管理MySql記憶體
- MySQL記憶體管理,記憶體分配器和作業系統MySql記憶體作業系統
- go記憶體分配器Go記憶體
- 核心早期記憶體分配器:memblock記憶體BloC
- MySQL探祕(三):InnoDB的記憶體結構和特性MySql記憶體
- 如何設計一個記憶體分配器?記憶體
- 【Mysql】讀書筆記之--innodb_buffer_pool記憶體的管理MySql筆記記憶體
- GUN C++ STL中的vector的記憶體分配器C++記憶體
- InnoDB儲存引擎——記憶體儲存引擎記憶體
- 一種高效的 C++ 固定記憶體塊分配器C++記憶體
- 【Mysql】Mysql額外記憶體池 innodb_additional_mem_pool_sizeMySql記憶體
- innodb的幾個記憶體引數記憶體
- 理解 glibc 記憶體分配器的機制與實現記憶體
- Innodb記憶體管理解析[轉載]記憶體
- yarn記憶體配置Yarn記憶體
- MySQL查詢select語句的執行流程以及InnoDB記憶體結構MySql記憶體
- MySQL記憶體管理MySql記憶體
- MySQL記憶體使用MySql記憶體
- 使用StringTraits給CString自定義全域性的記憶體分配器AI記憶體
- 記憶體配置的最佳化記憶體
- Jmeter:修改記憶體配置JMeter記憶體
- MYSQL的記憶體管理方法MySql記憶體
- mysql最大表記憶體MySql記憶體
- MySQL 配置InnoDB清理排程MySql
- MySQL InnoDB頁面大小配置MySql
- eclipse 增加記憶體的方法、修改配置檔案 記憶體優化Eclipse記憶體優化
- 合理配置SQL Server的最大記憶體SQLServer記憶體
- Oracle PGA記憶體的配置和使用Oracle記憶體
- 詳細瞭解 InnoDB 記憶體結構及其原理記憶體
- Tomcat修改記憶體配置Tomcat記憶體
- JVM記憶體引數配置JVM記憶體
- Oracle 之 配置HugePages記憶體Oracle記憶體
- Mysql Innodb中的Linux native非同步I/O(一) 記憶體結構的初始化MySqlLinux非同步記憶體
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- MySQL 配置InnoDB的併發執行緒MySql執行緒
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- MySQL InnoDB日誌檔案配置MySql