调整LUR_old位置,放到八分之五位置,是新的,后八分之三是旧的

512个页全变成新的,然后从后往前数,数到8分之3,设置为旧的

/*******************************************************************//**
Moves the LRU_old pointer so that the length of the old blocks list
is inside the allowed limits. */
UNIV_INLINE
void
buf_LRU_old_adjust_len(
/*===================*/
    buf_pool_t*    buf_pool)    /*!< in: buffer pool instance */
{
    ulint    old_len;
    ulint    new_len;

    old_len = buf_pool->LRU_old_len;
    new_len = ut_min(UT_LIST_GET_LEN(buf_pool->LRU)
             * buf_pool->LRU_old_ratio / BUF_LRU_OLD_RATIO_DIV,
             UT_LIST_GET_LEN(buf_pool->LRU)
             - (BUF_LRU_OLD_TOLERANCE
                + BUF_LRU_NON_OLD_MIN_LEN));

    for (;;) {
        buf_page_t*    LRU_old = buf_pool->LRU_old;

        ut_a(LRU_old);
        ut_ad(LRU_old->in_LRU_list);

        /* Update the LRU_old pointer if necessary */

        //#define BUF_LRU_OLD_TOLERANCE    20
        if (old_len + BUF_LRU_OLD_TOLERANCE < new_len) {

            buf_pool->LRU_old = LRU_old = UT_LIST_GET_PREV(LRU, LRU_old);

            old_len = ++buf_pool->LRU_old_len;
            buf_page_set_old(LRU_old, TRUE);

        } else if (old_len > new_len + BUF_LRU_OLD_TOLERANCE) {

            buf_pool->LRU_old = UT_LIST_GET_NEXT(LRU, LRU_old);
            old_len = --buf_pool->LRU_old_len;
            buf_page_set_old(LRU_old, FALSE);
        } else {
            return;
        }
    }
}

函数buf_LRU_old_adjust_len的更多相关文章

  1. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

  2. 探究javascript对象和数组的异同,及函数变量缓存技巧

    javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...

  3. JavaScript权威指南 - 函数

    函数本身就是一段JavaScript代码,定义一次但可能被调用任意次.如果函数挂载在一个对象上,作为对象的一个属性,通常这种函数被称作对象的方法.用于初始化一个新创建的对象的函数被称作构造函数. 相对 ...

  4. C++对C的函数拓展

    一,内联函数 1.内联函数的概念 C++中的const常量可以用来代替宏常数的定义,例如:用const int a = 10来替换# define a 10.那么C++中是否有什么解决方案来替代宏代码 ...

  5. 菜鸟Python学习笔记第一天:关于一些函数库的使用

    2017年1月3日 星期二 大一学习一门新的计算机语言真的很难,有时候连函数拼写出错查错都能查半天,没办法,谁让我英语太渣. 关于计算机语言的学习我想还是从C语言学习开始为好,Python有很多语言的 ...

  6. javascript中的this与函数讲解

    前言 javascript中没有块级作用域(es6以前),javascript中作用域分为函数作用域和全局作用域.并且,大家可以认为全局作用域其实就是Window函数的函数作用域,我们编写的js代码, ...

  7. 复杂的 Hash 函数组合有意义吗?

    很久以前看到一篇文章,讲某个大网站储存用户口令时,会经过十分复杂的处理.怎么个复杂记不得了,大概就是先 Hash,结果加上一些特殊字符再 Hash,结果再加上些字符.再倒序.再怎么怎么的.再 Hash ...

  8. JS核心系列:浅谈函数的作用域

    一.作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的. function scope(){ var foo = "global&quo ...

  9. C++中的时间函数

    C++获取时间函数众多,何时该用什么函数,拿到的是什么时间?该怎么用?很多人都会混淆. 本文是本人经历了几款游戏客户端和服务器开发后,对游戏中时间获取的一点总结. 最早学习游戏客户端时,为了获取最精确 ...

随机推荐

  1. 如何在eclipse中添加android ADT

    百度经验:http://jingyan.baidu.com/article/b0b63dbfa9e0a74a4830701e.html 截图:

  2. easyui页面布局

    html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  3. Careercup - Facebook面试题 - 5177378863054848

    2014-05-02 08:29 题目链接 原题: Write a function for retrieving the total number of substring palindromes. ...

  4. 存储过程——在LINQ中使用(六)

    上述几篇都将了存储与数据库,关联的一些实例,首先感谢各位大神们在前几篇文章中提到的问题,本人还在学习中,这次介绍下在linq中如何应用存储过程: LINQ简介 语言集成查询(LINQ)在对象领域和数据 ...

  5. mysql注入绕过的一些技巧

    虽然mysql + php的开发中可以使用pdo中,但是有些老久的程序没有使用,或其他原因 1.注释绕过 select/*comment*/user/*zzsdsdsf*/from mysql.use ...

  6. State of Hyperparameter Selection

    State of Hyperparameter Selection DANIEL SALTIEL VIEW NOTEBOOK Historically hyperparameter determina ...

  7. 【技术贴】解决Eclipse中SVN图标不显示

    在用Eclipse做开发的时候,用到了svn版本控制器,这天当我打开Eclipse的时候,发现项目里面的所有文件前的版本号以及状态图标都不显示了,即所有的svn图标不显示了,这是怎么回事,关掉Ecli ...

  8. jstl if条件判断字符串代码

    <c:if test="${netWorkInfo.networkType eq '快修店'}"> <input type="radio" n ...

  9. How does database indexing work?

    When data is stored on disk based storage devices, it is stored as blocks of data. These blocks are ...

  10. URAL 1297 Palindrome 最长回文子串

    POJ上的,ZOJ上的OJ的最长回文子串数据量太大,用后缀数组的方法非常吃力,所以只能挑个数据量小点的试下,真要做可能还是得用manacher.贴一下代码 两个小错,一个是没弄懂string类的sub ...