Innodb的内存结构
1.缓冲池
从1.0.x版本开始,允许有多个缓冲池实例。
- mysql> show variables like 'innodb_buffer_pool_size'\G
- *************************** 1. row ***************************
- Variable_name: innodb_buffer_pool_size
- Value: 134217728
- 1 row in set (0.00 sec)
- mysql> show variables like 'innodb_buffer_pool_instances'\G
- *************************** 1. row ***************************
- Variable_name: innodb_buffer_pool_instances
- Value: 8
- 1 row in set (0.00 sec)
- mysql>
Innodb内存数据对象:
2.LRU list、Free list和Flush list
Innodb存储引擎中,缓冲池中页的大小默认是16KB。
Innodb中对LRU算法做了优化,在LRU列表中加入了midpoint位置。读取到的新页会放到LRU的midpoint位置。midpoint的位置由参数innodb_old_blocks_pct控制。
- mysql> show variables like 'innodb_old_blocks_pct';
- +-----------------------+-------+
- | Variable_name | Value |
- +-----------------------+-------+
- | innodb_old_blocks_pct | 37 |
- +-----------------------+-------+
- 1 row in set (0.00 sec)
- mysql>
Free list表示当前Free列表中页的数量
Database pages表示LRU列表中页的数量
pages made young显示LRU列表中页移动到前端的次数
unzip_LRU len 管理非16kb的页
LRU len 包含了"unzip_LRU len"
Flush列表中的页是脏页列表(脏页既存在Flush列表中,也存在于LRU列表中)
查看缓冲池的运行状态:
- mysql> select pool_id,hit_rate,pages_made_young,pages_not_made_young from information_schema.innodb_buffer_pool_stats\G
- *************************** 1. row ***************************
- pool_id: 0
- hit_rate: 1000
- pages_made_young: 71201858
- pages_not_made_young: 0
- 1 row in set (0.00 sec)
- mysql>
查看每个LRU列表中每个页的具体信息:
- mysql> select table_name,space,page_number,page_type from innodb_buffer_page_lru where space=1;
查看脏页信息:
- mysql> select table_name,space,page_number,page_type from innodb_buffer_page_lru where oldest_modification > 0 ;
3.日志缓冲池
log buffer默认是8m,通常情况下已经够用。
- mysql> show variables like 'innodb_log_buffer_size'\G
- *************************** 1. row ***************************
- Variable_name: innodb_log_buffer_size
- Value: 8388608
- 1 row in set (0.00 sec)
- mysql>
刷新log buffer的三种情况:
(1).master thread每秒将重做日志缓冲刷新到重做日志文件
(2).事务提交时将重做日志缓冲刷新到重做日志文件
(3).重做日志缓冲池剩余空间小于1/2时将重做日志缓冲刷新到重做日志文件
4.额外的内存池
Innodb的内存结构的更多相关文章
- 详细了解 InnoDB 内存结构及其原理
最近发现,文章太长的话,包含的信息量较大, 并且需要更多的时间去阅读.而大家看文章,应该都是利用的一些碎片时间.所以我得出一个结论,文章太长不太利于大家的吸收和消化.所以我之后会减少文章的长度,2-3 ...
- Innodb页面存储结构-2
上一篇<Innodb页面存储结构-1>介绍了Innodb页面存储的总体结构,本文会介绍页面的详细内容,主要包括页头.页尾和记录的详细格式. 学习数据结构时都说程序等于数据结构+算法,而在i ...
- innodb分配内存
innodb分配内存有三种方法 1)使用OS的malloc 2)使用innodb自己实现的内存分配方法 3)使用goolge的Tmalloc innodb引擎分析之内存管理 在my.cn配置文件中可设 ...
- InnoDB数据页结构
前言 关于数据库我们知道是通过内存对磁盘进行操作的,也知道数据会落实到磁盘上,但是数据在磁盘上的存储结构可能大家还不是很清楚. MySQL服务器上负责对表中的数据的读取和写入的工作的部分是存储 ...
- MySQL整体架构与内存结构
一 mysql 整体框架: MySQL是由SQL接口,解析器,优化器,缓存,存储引擎等组成的. 1. Connectors指的是不同语言中与SQL的交互. 2. Management Serveic ...
- (1.3)学习笔记之mysql体系结构(C/S整体架构、内存结构、物理存储结构、逻辑结构)
目录 1.学习笔记之mysql体系结构(C/S架构) 2.mysql整体架构 3.存储引擎 4.sql语句处理--SQL层(内存层) 5.服务器内存结构 6.mysql如何使用磁盘空间 7.mysql ...
- InnoDB 的记录结构和页结构
本文转载自InnoDB 的记录结构和页结构 概述 InnoDB将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位,中页的大小一般为16KB.也就是在一般情况下,一次最少从磁盘中读取16KB的内 ...
- jvm系列(二):JVM内存结构
JVM内存结构 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能 ...
- JVM之内存结构
JVM是按照运行时数据的存储结构来划分内存结构的.JVM在运行Java程序时,将他们划分成不同格式的数据,分别存储在不同的区域,这些数据就是运行时数据.运行时数据区域包括堆,方法区,运行时常量池,程序 ...
随机推荐
- HotSpot Java虚拟机中的“方法区”“持久代”“元数据区”的关系?
Sun/Oracle JDK的HotSpot VM中,直到JDK7都有“持久代”(Permanent Generation,简称PermGen).也称为方法区.Oracle JDK8的HotSpot ...
- Android开发 - Fragment与Activity生命周期比较
1. Fragment的生命周期 见下图 2. 与Activity生命周期的对比 见下图 3. 代码场景演示实例 切换到该Fragment: AppListFragment(7649): onAtta ...
- electron vue 开发客户端程序
文档知识点 https://electronjs.org/docs/tutorial/about (1)Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Ma ...
- JavaBean与XML转换——XStream使用笔记
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6648131.html 一:View层与Control层的数据交互 做过Web项目的人都知道,当对一个requ ...
- 收银台(POSBox) 配置向导
先决条件 在开始设置您的POSBox之前, 确保你准备好了一切. 你会需要 : POSBox 2A电源适配器 一台带最新的Web浏览器的计算机或平板电脑. 可用的的SaaS或已安装零售的Odoo 设置 ...
- minimum-path-sum-动态规划
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...
- auto function -> return type 当不能从{}内推断类型时
示例: template<class F, class... Args> auto ThreadPool::enqueue(F&& f, Args&&... ...
- 亲历H5移动端游戏微信支付接入及那些坑(三)——支付接入
终于到接入支付了,小小的一个微信支付,居然也写了3篇,好长,好累. 接入环境 对接入环境,前端的话,应该是以js为主吧,也有可能是,PHP,Java,C++,或者C#都可以.为什么在此特意提一下接入环 ...
- visual studio运行时库MT、MTd、MD、MDd的研究
在开发window程序是经常会遇到编译好好的程序拿到另一台机器上面无法运行的情况,这一般是由于另一台机器上面没有安装响应的运行时库导致的,那么这个与编译选项MT.MTd.MD.MDd有什么关系呢?这是 ...
- linux下安装和卸载vmware产品
1.安装 一般的发行版都不会带有vmware,所以通常是下载安装包来安装. 具体的可以见 http://www.cnblogs.com/oloroso/p/5845227.html 2.卸载 这里主要 ...