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記憶體管理,記憶體分配器和作業系統MySql記憶體作業系統
- go記憶體分配器Go記憶體
- MySQL探祕(三):InnoDB的記憶體結構和特性MySql記憶體
- MySQL底層概述—1.InnoDB記憶體結構MySql記憶體
- MySQL查詢select語句的執行流程以及InnoDB記憶體結構MySql記憶體
- Innodb記憶體管理解析[轉載]記憶體
- MySQL記憶體管理MySql記憶體
- Tomcat修改記憶體配置Tomcat記憶體
- MYSQL的記憶體管理方法MySql記憶體
- mysql最大表記憶體MySql記憶體
- MySQL 配置InnoDB清理排程MySql
- MySQL InnoDB頁面大小配置MySql
- 詳細瞭解 InnoDB 記憶體結構及其原理記憶體
- JVM記憶體引數配置JVM記憶體
- MySQL 配置InnoDB的併發執行緒MySql執行緒
- MySQL InnoDB日誌檔案配置MySql
- MySQL InnoDB Undo表空間配置MySql
- MySQL 配置InnoDB為只讀操作MySql
- MySQL 配置InnoDB變更緩衝MySql
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- 使用show engine innodb status 檢視記憶體使用情況記憶體
- jvm的記憶體引數配置(skycto JEEditor)JVM記憶體
- 告別記憶體OOM,解決MySQL記憶體增長問題記憶體OOMMySql
- MySQL入門--記憶體buffer poolMySql記憶體
- MySQL InnoDB臨時表空間配置MySql
- MySQL:Innodb恢復的學習筆記MySql筆記
- Java的記憶體 -JVM 記憶體管理Java記憶體JVM
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- 記憶體管理篇——實體記憶體的管理記憶體
- Linux 虛擬記憶體引數配置Linux記憶體
- HBase記憶體配置及JVM優化記憶體JVM優化
- Redis記憶體淘汰策略配置翻譯Redis記憶體
- linux記憶體管理(一)實體記憶體的組織和記憶體分配Linux記憶體
- 探索MYSQL開啟大頁記憶體MySql記憶體
- mysql記憶體引數分類大全MySql記憶體
- MySQL記憶體佔用計算公式MySql記憶體公式
- MySQL OOM 系列一 Linux記憶體分配MySqlOOMLinux記憶體