设为首页 收藏本站
查看: 538|回复: 0

[经验分享] 试读《MySQL内核:InnoDB存储引擎 卷1》有感

[复制链接]

尚未签到

发表于 2016-10-18 07:26:09 | 显示全部楼层 |阅读模式
  
   --------对于是学习我喜欢寻根问底
       对于内存与储存,一直很感兴趣,特别是数据库的存储; 看到InnoDB存储引擎,很自然的一动作,下载然后阅读了,一口气就看完了试读部分,有些急切想知道接下来的内容。试读的内容为:
       第一章讲了InnoDB的历史与InnoDB的规范,由Heikki Tuuri创始,再到与MySQL AB公司合作,Inno DB开源,最后Oracle Innobase公司与MySQL都收购了的曲折历史;接着就InnoDB的一些代码规范。
       第二章讲述了InnoDB内存管理及所用到数据结构。InnoDB主要采用内存堆的方式进行内存的管理,通过动态分配与缓冲池分配两种方式的内存申请,其中动态分配是从操作系统分配内存空间;缓冲池分配是从缓冲池分配内存空间。
       InnoDB内存管理分为三层,从高层到底层分别为:内存堆层,缓冲池与通用内存池,系统内存。对于内存堆层实质就是栈,最晚分配的内存最早对它进行释放;对于InnoDBd存储引擎有三种类型,分别为MEN_HEAP_DYNAMIC,主要是对内存调用通过内存池接口申请;MEN_HEAP_BUFFER主要对从缓冲池申请;MEN_HEAP_BTR_SEARCHMEN_HEAP_BUFFER的子类,在适应的哈希中使用。
       中间层通用内存池,为了有效地解决内存中的碎片问题,主要是采用了伙伴系统算法。内存池中分成64组内存块,采用数组free_list来存储,内存块的大小都是2的幂次方。文中的1M内存的例子把内存分配的过程与内存释放过程清晰可见(如下图)。初始化1M内存,首先申请100K1M内存进行一个512k,256k,128k,128K分块,最终返回一块128k内存给申请者。请求64k时,还会对最小的块继续分块,最小可以到120次方);当请求256k时,因为链表中没有空闲的256km内存,会向更大内存块分配。对于释放,当两个块的大小相同与两个块的物理地址连续时,就会进行合并,形成更大的内存块,这个让人想起现在最流行的1024那个游戏^_^
   DSC0000.jpg
        
最后介绍InnoDB采用哈希表(哈希算法,哈希表的数据结构)及双链表(内存双链表及磁盘双链表)一些数据结构;及动态数组与排序。
  总的来说,从试读的几章看来,作者的思路比较清晰,可对于InnoDB的内存管理原理性的分析只是点到即止,期待接下来的各章节对这些原理的分析及在InnoDB内存管理中应用。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-287634-1-1.html 上篇帖子: mysql去重的最方便的两种方法 下篇帖子: 网上一次MySQL中文乱码问题的处理过程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表