zoukankan      html  css  js  c++  java
  • MySQL InnoDB Engine--缓冲器数据交换

    通常情况下,缓冲池无法将整个数据库所有数据都进行缓冲,而且不同数据的访问频率不一样,有些数据会被频繁访问,而有些数据可能数月不会被访问一次,因此数据库使用最近最少使用LRU latest Recent Used算法来管理缓冲池,其算法思想为:最近访问的数据被再次访问的概率要高于之前被访问的数据,被多次访问的数据被再次访问的概率要高于访问次数较低的数据。

    Mysql使用LRU列表来记录页的访问情况,将访问频繁的页记录在LRU列表的前端,将最少访问的页记录在LRU列表的尾端,将最新插入缓冲池的数据放入LRU的中部mid(未必一定是最中间),当缓冲池不能存放新的页面时,将首先释放LRU列表尾部的数据页。

    为避免单次的表扫描或索引扫描将大量数据读取到缓冲池,导致缓冲区内热数据被交换出缓冲池,MYSQL对LRU算法进行优化,通过innodb_old_blocks_pct和innodb_old_blocks_time来限制新数据加载

    innodb_old_blocks_pct指定新数据在LRU列表存放位置,默认在LRU列表唱的的5/8处,即37%的位置

    innodb_old_blocks_time指定页读取到mid位置后需要等待多久才会被加入到LRU列表的热端,默认值为1000  

    查看两个参数的值:

    SHOW VARIABLES LIKE 'INNODB_OLD_BLOCKS_%' G
    *************************** 1. row ***************************
    Variable_name: innodb_old_blocks_pct
            Value: 37
    *************************** 2. row ***************************
    Variable_name: innodb_old_blocks_time
            Value: 1000
    2 rows in set (0.01 sec)


    修改操作:

    SET GLOBLE INNODB_OLD_BLOCKS_TIME=1000;
    SET GLOBAL INNODB_OLD_BLOCKS_PCT=37;






  • 相关阅读:
    Swift
    Swift
    Swift
    Swift
    Cocos2d Lua 越来越小样本 内存游戏
    Android组件系列----ContentProvider内容提供商【5】
    看你的门-攻击服务器(4)-HTTP参数注入攻击
    图片缩放中心
    正确lua简单的扩展,可以加速相关C++数据。
    epoll()无论涉及wait队列分析
  • 原文地址:https://www.cnblogs.com/gaogao67/p/10492667.html
Copyright © 2011-2022 走看看