加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 服务器 > 安全 > 正文

2017数据库大会实录-MySQL核心参数含义的源码解析

发布时间:2021-01-17 14:01:40 所属栏目:安全 来源:网络整理
导读:《2017数据库大会实录-MySQL核心参数含义的源码解析》要点: 本文介绍了2017数据库大会实录-MySQL核心参数含义的源码解析,希望对您有用。如果有疑问,可以联系我们。 5月11-13日在北京国际会议中心举行数据库大会,有幸得友人推荐在大会上讲了一场.源于自己

在实现上面两个功能的同时,需要考虑客观条件的限制,因为机器的内存大小是有限的,所以mysql的innodb buffer ?pool的大小同样是有限的.在通常的情况下,当数据库的数据量比较大的时候,缓存池并不能缓存所有的数据页,所以也就可能会出现,当需要访问的某个页面时,该页面却不在缓存池中的情况,这个时候就需要从磁盘中将这个页面读出来,加载到缓存池中,然后再去访问.这样就涉及到随机的物理io,也就延长了访问页面所消耗的时间.

这样的情况是一个bad case,是我们期望尽量避免的——因此需要想办法来提高缓存的命中率.?innodb buffer pool采用经典的LRU列表算法来进行页面淘汰,以提高缓存命中率.将缓存的页面按照最近使用的次数跟时间进行排序,队列最末尾的页面将会最先被淘汰.这个机制在后面会结合源码详细讲解.同时,在LRU列表的中间位置打了一个old标识,可以简单的理解为将LRU列表分为两个部分,这个标记到LRU列表头部的页面称之为yong的页面,这个标志到LRU列表尾部的页面称之为old页面.再进行抽象的话,我们简单地理解为缓存池被分成两个池子,一个叫young池子,一个叫old池子.当一个页面从磁盘上加载缓存池中的时候,会将它排放在这个old标识之后的第一个位置,也就是说放在了old池子中.这个机制的作用就是,在做大表的一次性全表扫描的时候,大量新进来的页面,是存放在old池子中的,当old池子的大小不够缓存新进来的页面的时候,也只是在old池子中内部进行循环冲洗,这样就不会冲洗young池子中的热点页面,从而保护了热点页面.这就是LRU列表的机制.

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读