14.6.3.1 The InnoDB Buffer Pool

14.6.3.1 The InnoDB Buffer PoolInnoDB 保持一个存储区域被称为buffer pool 用于cache数据和索引在内存里,知道InnoDB buffer pool 如何工作,利用它来保持频繁访问的数据在内存里,是MYSQL 调优的一个重要方面。你可以配置InnoDB buffer pool的各个方面来改善性能:理想情况下,你设置buffer pool的大小为实际最大值,留下足够的内存用于其他进程在服务器上运行而没有产生分页。buffer pool越大, InnoDB 表位越像是内存数据库,从磁盘读取一次然后从内存访问数据在随后的读操作。Buffer pool size  是使用 innodb_buffer_pool_size 配置选项2.  随着64位系统使用大的内存,你可以把buffer 分成多个部分,以尽量减少内存结果的冲突在并发操作期间。3.你可以保持频繁访问的数据在内存里 尽管突然的高峰活动对于备份或者报告操作4.你可以控制何时如何InnoDB 执行鱼肚请求来预获取Pages异步到buffer pool,预计 pages 马上被需要5. 你可以控制当background刷新旧的pages发生,是否InnoDB 动态调整 基于负载的刷新频率。6.你可以配置InnoDB 来保持当前的buffer pool 状态来避免一个漫长的准备期在一个server 重启后。你也可以保留当前的buffer pool 状态 当server 在运行时InnoDB Buffer Pool LRU AlgorithmInnoDB 管理buffer pool 作为一个列表,使用一个变化的LRU算法。当room 是被需要增加一个新的page 到pool,InnoDB 驱逐最少使用的pages增加新的pages到列表的中间。这个 中间插入的策略 对待列表作为两个清单1.在头部,  新的(或者年轻的)的一个子列表 被频繁访问2.在尾部, 一个老的pages 的一个子列表很少被访问这个算法保持pages  大量使用通过查询在新的子列表老的子列表包含更少使用的页, 这些是候选为被驱逐LRU 算法操作默认如下:1.buffer pool的3/8 是分给old sublist2. 列表的中间是边界新的sublist的尾部和 old sublist的开头3.当InnoDB 读取一个Page到buffer pool,他初始插入在中间(old sublist的头部).一个page 可以读进来 因为它是被需要用于一个用户指定的操作比如SQL查询,或者 作为预读的一部分被InnoDB自动执行4.访问一个page 在old sublist 让这个Page变的年轻,移动到 buffer pool的head(new sublist的头部)如果page 因为需要被读取, 第一次访问立即发生 page变的yong.如果page 被读进来由于预读, 第一访问不立即发生5.在进行数据库操作时, pages在buffer pool不被访问 变老移动到列表的尾部。Pages 在new和old 子列表 老化其他pages变成新的。6.默认的, pages被查询读取立即移动到new sublist,意味着他们会在buffer pool中停留很长时间。一个表扫描(比如执行一个mysqldump操作),或者一个SELECT 语句没有带WHERE条件)可以带来大量的数据到buffer pool ,驱逐等量的older数据,即使新的数据不会被再次使用。类似的,pages是通过后台线程加载的 只访问一次 移动到new list的head.这些情况回把平凡使用的pages移动到old sublist.InnoDB Buffer Pool Configuration Options  InnoDB Buffer Pool 配置选项几个配置选项影响InnoDB buffer pool的不同方面:1.innodb_buffer_pool_size指定buffer pool的大小, 如果buffer pool是太小了你有足够的内存,让buffer pool变大能改善性能通过降低磁盘I/O的总量zabbix:/root/Esx# cat /etc/my.cnf  | grep innodb_buffer_pool_size
innodb_buffer_pool_size=4G2.innodb_buffer_pool_instances把buffer pool 分成一个用户指定的单独的区域, 每个有它自己的LRU list和相关的数据结构,降低竞争在并发内存读取和写操作。这个选项只有当innodb_buffer_pool_size 值大于1GB才生效。总的buffer pool的代销是被分成多个buffer pool.为了最好的性能, 指定innodb_buffer_pool_instances and innodb_buffer_pool_size的组合这样每个buffer pool 实例有至少1GBmysql> show variables like '%innodb_buffer_pool%';
+-------------------------------------+----------------+
| Variable_name                       | Value          |
+-------------------------------------+----------------+
| innodb_buffer_pool_dump_at_shutdown | OFF            |
| innodb_buffer_pool_dump_now         | OFF            |
| innodb_buffer_pool_filename         | ib_buffer_pool |
| innodb_buffer_pool_instances        | 8              |
| innodb_buffer_pool_load_abort       | OFF            |
| innodb_buffer_pool_load_at_startup  | OFF            |
| innodb_buffer_pool_load_now         | OFF            |
| innodb_buffer_pool_size             | 4294967296     |
+-------------------------------------+----------------+
8 rows in set (0.01 sec)innodb_old_blocks_pct;指定 buffer pool近似的比例 InnoDB 使用old block sublist.范围是从5到95,默认是37(3/8的pool大小)mysql> show variables like '%innodb_old_blocks_pct%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| innodb_old_blocks_pct | 37    |
+-----------------------+-------+
1 row in set (0.00 sec)innodb_old_blocks_time:指定多久单位毫秒一个page 插入到old sublist 必须留在那个在他第一次访问后在他可以被移动到new sublist如果值是0, 一个page 插入到old sublist 立即移动到新的sublist  当它第一次被访问后。如果值大于0, pages 停留在old sublist 知道一个访问发生至少多少毫秒后第一次被访问。比如,值为1000 导致pages停留在old sublist 1秒钟 在首次访问后 在它们变的合格移动到new sublistmysql> show variables like '%innodb_old_blocks_time%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| innodb_old_blocks_time | 1000  |
+------------------------+-------+
1 row in set (0.00 sec)设置 innodb_old_blocks_time 大于0防止一次表扫描充满new sublist 记录在一个Page读进来后一个扫描可以访问很多次,但是page是不能使用在那以后。如果 innodb_old_blocks_time 是设置一个值大于处理page的时间,page停留在old sublist,老化到列表的尾部 被快速淘汰。这种方式, pages只使用一次扫描不影响大量使用的pages在new sublistinnodb_old_blocks_time  可以设置在运行时间,这样你可以临时改变 当操作需要表扫描或者dumpsinnodb_read_ahead_threshold控制  预读的灵敏度,InnoDB 使用预取pages到buffer poolinnodb_random_read_ahead让随机的预读技术用于预取pages到buffer pool.mysql> show variables like '%innodb_random_read_ahead%';
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| innodb_random_read_ahead | OFF   |
+--------------------------+-------+
1 row in set (0.00 sec)innodb_adaptive_flushing

转载于:https://www.cnblogs.com/zhaoyangjian724/p/6199027.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285566.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言试题105之要求输出国际象棋棋盘

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:要求输出国际象棋棋盘。 分析:用 i 控制行,j 来控制列,根据 i+j 的和的变化来控制…

一个js的动画,以前以为只有flash可以实现

11年刚干这行的时候,看到这种什么百叶窗的动画,以为都是flash实现的,最近突然灵光一闪,想到了用js实现(虽然我不是做前端的,本人做.net)。代码虽然实现了,但是比较乱,先上…

[转]docker入门(利用docker部署web应用)

前言:本课程是在慕课网上学习 第一个docker化的java应用 课程时所做的笔记,供本人复习之用 目录 第一章 什么是docker 1.1 docker的发展史 1.2 docker国内应用史 1.3 什么是Docker 第二章 了解docker 2.1 docker思想 2.1.1 集装箱 2.1.2 标准化 2.1.3 隔离 2.2 dock…

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(五)

【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(一) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(二) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(三) 【专升本计算机】2021年甘肃省专升本计算机全真模拟试题(四) 【专升本计算机】2021…

如何让 EF Core 6 支持 DateOnly 类型

前言上次,我们发现《DateOnly 和 TimeOnly 类型居然不能序列化》。但问题还不仅仅如此。问题重现假设有下列实体类:public class User {public int Id { get; set; }public string Name { get; set; } public DateOnly Birthday { get; set; } }由…

yii2笔记: 单元测试

使用composer方式安装yii2-app-basic (https://github.com/yiisoft/yii2-app-basic/blob/master/README.md) 装好后既可以使用 建一个Model文件EntryForm.php在models目录下 <?phpnamespace app\models;use Yii; use yii\base\Model;class EntryForm extends Model {public…

[转]Python 列表(List) 的三种遍历(序号和值)方法

if __name__ __main__:list [html, js, css, python]for i in list:print(list.index(i), i)# 方法1print( 遍历列表方法1&#xff1a;)for i in list:print ("序号&#xff1a;%s 值&#xff1a;%s" % (list.index(i) 1, i))print (\n遍历列表方法2&#xff1a;)…

C语言试题103之输出特殊图案,请在 c 环境中运行,看一看

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:输出特殊图案,请在 c 环境中运行,看一看 2 、温馨提示 想获取更多C语言题目请猛搓这…

Web页面获取用户控件页面中服务器控件的值

用户控件页面后台&#xff1a; public string P_Name{get { return txt_P_name.Value; }set { txt_P_name.Value value; }} Web页面后台&#xff1a; if (head.P_Name ! "")//head为用户控件的标签名{strwhere " and a.P_NAME like %" head.P_Name &qu…

【C#程序设计】教学讲义——第一章:C#语言概述

文章目录 1.1 认识Visual C#1.2 .NET Framework 3.51.3 Visual C# 2008集成开发环境1.4 使用帮助系统1.5 用C#创建Windows应用程序1.6 用C#创建控制台应用程序1.1 认识Visual C# 1.1.1 C#语言的由来 1.C和C++ 一直是商业软件开发领域中最具有生命力的语言; 利用C和C++语言开…

Kafka学习征途:基于Docker搭建Kafka环境

【Kafka】| 总结/Edison Zhou1准备工作这里我们使用一台Linux CentOS系统的服务器来模拟三个Kafka Broker的伪集群&#xff08;即一台server上开三个不同端口&#xff09;环境用于学习测试&#xff0c;大概的准备工作有两个&#xff1a;安装Docker# wget https://mirrors.aliyu…

C语言试题104之输出 9乘9 口诀

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:输出 9乘9 口诀。 分析:分行与列考虑,共 9 行 9 列,i 控制行,j 控制列 2 、温馨提…

160809308周子济第7次作业

#include<stdio.h> #include<string.h> int main() {char name[20];int length,i,count[26]{0};printf("输自己名拼音&#xff1a;");scanf("%s",name);lengthstrlen(name);for(i0;i<length;i)count[name[i]-a];for(i0;i<26;i)printf(&…

【Envi风暴】基于ENVI平台提取ASTER DEM完整操作步骤(附案例数据)

本文讲解在Envi平台上,基于Aster影像数据,提取DEM的完整操作流程及注意事项,附实验数据下载练习。 文章目录 一、内容和目的二、提取DEM的原理三、ENVI平台提取DEM流程四、DEM质量评估五、注意事项六、案例数据下载地址一、内容和目的 采用ASTER立体像对提取DEM,数据源: …

HashCode和hashMap、hashTable

2019独角兽企业重金招聘Python工程师标准>>> 什么是哈希码(HashCode) 在Java中&#xff0c;哈希码代表对象的特征。 例如对象 String str1 “aa”, str1.hashCode 3104 String str2 “bb”, str2.hashCode 3106 String str3 “aa”, str3.hashCode 3104 根据Hash…

在OpenCloudOS使用snap安装.NET 6

开源操作系统社区 OpenCloudOS 由腾讯与合作伙伴共同倡议发起&#xff0c;是完全中立、全面开放、安全稳定、高性能的操作系统及生态。OpenCloudOS 沉淀了多家厂商在软件和开源生态的优势&#xff0c;继承了腾讯在操作系统和内核层面超过10年的技术积累&#xff0c;在云原生、稳…

C语言试题108之打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数 本身。例如:153 是一个“水仙花数”,因为 153=1 的三次方+5 的三次方+3 的三次方。

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该…

code vs1517 求一次函数解析式(数论 纯数学知识)

1517 求一次函数解析式 时间限制: 1 s空间限制: 128000 KB题目等级 : 白银 Silver题解查看运行结果题目描述 Description相信大家都做过练习册上的这种 题吧&#xff1a; 已知一个一次函数的图像经过点&#xff08;x1,y1&#xff09;、&#xff08;x2,y2&#xff09;,求该函数的…

【ArcGIS风暴】ArcGIS Editor for OSM中文教程(1):软件下载及安装

OpenStreetMap ArcGIS编辑器允许你使用ArcGIS工具为OpenStreetMap数据工作。这个桌面工具允许你加载OpenStreetMap数据并将其存储在地理数据库中 。你可以使用ArcMap熟悉的编辑环境的创建,修改,做网络分析,或者更新数据。一旦您完成编辑后,你可以回到编辑修改OSM使它们提供…

使用Scrapy时出现虽然队列里有很多Request但是却不下载,造成假死状态

2019独角兽企业重金招聘Python工程师标准>>> DOWNLOAD_TIMEOUT Default: 180 The amount of time (in secs) that the downloader will wait before timing out. Note This timeout can be set per spider using download_timeoutspider attribute and per-request …