Innodb如何使用内存
来源:http://www.mysqlperformanceblog.com/2006/05/30/innodb-memory-usage/
译这个文章的目的:
最近经常被问起Innodb是如何使用内存的。该问题早已被原MySQL公司的Vadim论证过。我这里译一下他的文章供大家参考。
开始:
这里有许多关于Innodb如何使用内存的问题。我这里将会以innodb启动时的分配情况做一个解释。一些重要的概念:
NBLOCKS=Innodb_buffer_pool有多个页(block)=innodb_buffer_pool_size/16384(16k)
OS_THREADS= if ( innodb_buffer_pool_size >= 1000Mb) = 50000
else if (innodb_buffer_pool_size >= 8Mb) = 10000
else = 1000 (该值只用在*nixes系统上,对于Windows有一点小的区别计算OS_THREADS)
所以Innodb 使用的内存包括:
innodb_buffer_pool_size
innodb_additional_mem_pool_size
innodb_log_buffer_size
adaptive index hash ,size (innodb buffer 索引管理区)= innodb_buffer_pool_size/64
system dictionary hash,size(innodb内部字典区) = 6 * innodb_buffer_pool_size/512
memory for sync_array,size(用于Innodb内部syncronzation的开销)=OS_THREAD * 512
memory for os_event,size(用于innodb内存的syncronzation的开销)=OS_THREAD * 216
memory for locking system(内存的锁管理系统),size = 5 * 4 *NBBLOCKS
最终得到innodb内存使用的计算公式为:
Innodb_buffer_pool_size + innodb_log_buffer_size + innodb_additional_mem_pool_size + 812/16384 * innodb_buffer_pool_size + OS_THREADS * 368
对于812/16384 * Innodb_buffer_pool_size 可以简单的用 innodb_buffer_pool_size / 20 计算,
对于OS_THREADS * 368
OS_THREADS * 368 = 17.5 MB if innodb_buffer_pool_size > 1000MB
OS_THREADS * 368 = 3.5 MB if innodb_buffer_pool_size > 8MB
举一个例子:
如果你的innodb_buffer_pool_size有1500MB,innodb_additional_mem_pool_size =20 MB,innodb_log_buffer_size = 8M,
Innodb 将会向系统申请内存为= 1500M + 20M + 8M + 1500/20 M +17.5 = 1620.5M
根据以上的条件可以算出Innodb最根本最需要多少内存,这样对于服务器的内存使用也可以有一个规划了。
建议继续学习:
- Linux内存点滴 用户进程内存空间 (阅读:11595)
- ps - 按进程消耗内存多少排序 (阅读:11356)
- Linux Used内存到底哪里去了? (阅读:10021)
- Linux操作系统的内存使用方法详细解析 (阅读:8920)
- linux内核研究笔记(一)内存管理 – page介绍 (阅读:8763)
- 几个内存相关面试题(c/c++) (阅读:8073)
- Innodb IO优化-配置优化 (阅读:6755)
- 内存越界的概念和调试方法 (阅读:6342)
- 必看!linux系统如何查看内存使用情况 (阅读:6203)
- Innodb分表太多或者表分区太多,会导致内存耗尽而宕机 (阅读:6202)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:wubx 来源: MySQL支持
- 标签: Innodb 内存
- 发布时间:2009-12-13 18:04:43
- [70] IOS安全–浅谈关于IOS加固的几种方法
- [69] Twitter/微博客的学习摘要
- [64] 如何拿下简短的域名
- [63] Go Reflect 性能
- [63] android 开发入门
- [61] find命令的一点注意事项
- [59] 流程管理与用户研究
- [58] Oracle MTS模式下 进程地址与会话信
- [58] 读书笔记-壹百度:百度十年千倍的29条法则
- [58] 图书馆的世界纪录