设为首页 加入收藏

TOP

MySQL系列:innodb引擎分析之内存管理(二)
2014-11-23 23:12:43 来源: 作者: 【 】 浏览:19
Tags:MySQL 系列 innodb 引擎 分析 内存 管理
rea_free 将一块内存归还给buddy allocator
mem_pool_get_reserved 获得buddy allocator已经使用的内存大小

3内存分配堆(memory heap)

innodb中的内存管理最终的体现形式是mem_heap_t内存分配与管理,所有关于内存分配的操作都会调用mem_heap的API方法,mem_heap_t的结构定义如下:
struct mem_block_info_struct
{
     ulint	 magic_n;         /*魔法字*/
     char	 file_name[8];    /*分配内存的文件*/
     ulint	 line;            /*分配内存的文件所在行*/
     ulint	 len;             /*block的长度*/
     ulint	 type;            /*依赖的底层分配类型,有DYNAMIC、BUFFER、BTR_SEARCH三种类型*/
     ibool	 init_block;	 /*是否是外部分配的内存块*/

     ulint	 free;           /*被占用的空间大小*/
     ulint	 start;	         /*可分配内存的起始位置*/
     byte*	 free_block;     /*备用block,仅仅在BTR_SEARCH方式可用*/

     UT_LIST_BASE_NODE_T(mem_block_t)	base;
     UT_LIST_NODE_T(mem_block_t)	 list;
};
备注:mem_block_info_struct/mem_block_info_t/mem_block_t/mem_heap_t是等价
mem_heap_t的内存结构如下:
系统的malloc和free来作为内存管理。MySQL默认的是系统管理内存方式,一些有经验的DBA会使用系统的管理内存方式+TMalloc来做内存优化,借助TMalloc高效的内存管理方式实现MySQL的性能提升。





首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mysql5.5遇到的路径问题 下一篇mysql稳定的版本选择及下载说明(2..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: