InnoDB的内存使用情况
来源:互联网 发布:vb连接oracle数据库 编辑:程序博客网 时间:2024/05/23 16:57
参考文献:http://www.mysqlperformanceblog.com/2006/05/30/innodb-memory-usage/
关于InnoDB如何分配内存的问题有很多。在此,我会给出一些关于数据库启动时内存分配的解释。
下面是一些重要的常量:
1. NBLOCKS:等于innodb_buffer_pool中的块总数,也就是innodb_buffer_pool_size / 16384
2. OS_THREADS:如果innodb_buffer_pool_size >= 1000MB,那么等于50000;如果innodb_buffer_pool_size >= 8MB,那么等于10000;否则,等于1000(这种计算方法适用于Linux/Unix系统,Windows有另外一种计算OS_THREADS的方法)。
因此,InnoDB会使用:
1. innodb_buffer_pool
2. innodb_additional_mem_pool_size
3. innodb_log_buffer_size
4. 自适应的索引哈希,大小为innodb_buffer_pool / 64
5. 系统字典哈希,大小为6 * innodb_buffer_pool_size / 512
6. sync_array使用的内存,可用于同步原语,大小为OS_THREADS * 152
7. os_events使用的内存,同样可用于同步原语,大小为OS_THREADS * 216
8. 锁定系统使用的内存,大小为5 * 4 * NBLOCKS
因此,计算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
并且,如果innodb_buffer_pool > 1000MB,则OS_THREADS * 368 = 17.5MB;如果innodb_buffer_pool > 8MB,则OS_THREADS * 368 = 3.5MB。
例如,如果你设置的innodb_buffer_pool_size=1500M,innodb_additional_mem_pool_size = 20M,innodb_log_buffer_size = 8M,那么InnoDB将会分配的内存大小为1500M + 20M + 8M + 1500/20M + 17.5M,也就是1620.5M。
当你规划服务器的内存使用时,请慎重考虑额外使用的内存。
0 0
- InnoDB的内存使用情况
- InnoDB的内存使用情况
- 使用mysql自有的表分析innodb死锁情况
- Openwrt上mysql innodb的使用及相关异常情况
- CRF的内存使用情况
- 分析内存的使用情况
- 分析内存的使用情况
- 分析内存的使用情况
- 常见的内存使用不当的情况
- 简单查看oracle的连接情况和内存使用情况.
- 简单查看oracle的连接情况和内存使用情况.
- 查看Linux服务器的内存使用情况
- 查看Linux服务器的内存使用情况
- PHP了解你的内存使用情况
- UIImage应用的内存使用情况对比
- java获取电脑的内存使用情况
- 查看当前JVM内存的使用情况
- 获取CPU、内存的使用情况
- 兄弟仨的取钱经历
- QPainter::drawImage的用法说明
- CoaoaChina开发者小测验Cocos引擎
- Mac下转andriood步骤
- usaco training 4.4.1 Shuttle Puzzle 题解
- InnoDB的内存使用情况
- JavaScript日期加减
- leetcode:Generate Parentheses
- 百分制成绩
- 在Makefile中进行宏定义-D
- xcode5编译过的xib 怎么在xcode4.6下打开
- SQL SERVER中的WITH T AS () SELECT * FROM T 的用法
- Android多媒体开发 Pro Android Media 第二章 创建自定义相机应用 2
- Android 禁止使用物理键盘