InnoDB的内存使用情况

来源:互联网 发布:软件开发泳道图 编辑:程序博客网 时间:2024/06/04 18:29

转载:http://blog.csdn.net/yang1982_0907/article/details/20123171

参考文献: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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 qq冲流量冲错了怎么办 流量冲错了套餐怎么办 微信流量充错号码怎么办 微信支付不进账怎么办 充话费充不进去怎么办 用支付宝充话费没到账怎么办 支付宝充话费未到账怎么办 话费充了不到账怎么办 转转买家不确认收货怎么办 充话费错了怎么办啊 淘宝充值流量没到账怎么办 微信手机充错了怎么办 支付宝充话费没到账怎么办 裤子摔了一个洞怎么办 顾客反应衣服质量不好怎么办 淘宝买的衣服味道很大怎么办 三国杀账号忘了怎么办 宽带连接被删了 怎么办 手机被偷了qq怎么办 手机丢了微信怎么办啊 手机店把手机修坏了怎么办 在手机店买到山寨机手机怎么办 有人在qq群上骂我怎么办 qq群一直有人骚扰怎么办 苹果手机QQ图标不在桌面上怎么办 苹果手机长按不能删除怎么办 qq发的图片过期怎么办 九黎八卦在仓库怎么办 飞猪f2领了万豪银卡没住怎么办 机械键盘摁键冲突怎么办 玩游戏键盘没反应怎么办 玩枪战游戏头晕恶心怎么办 手机看视频不能横屏怎么办 苹果手机安全码忘记了怎么办 信用卡安全码忘记了怎么办 联想电脑管家阻止我安装软件怎么办 word恢复后打开乱码怎么办 苹果手机局域网也登陆不了怎么办 剑三账号冻结7天怎么办 荒野行动无缘无故被限制时间怎么办 电脑打游戏闪屏怎么办