InnoDB体系架构总结(一)

缓冲池:
是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。在数据库中读取的页数据会存放到缓冲池中,下次再读取相同页的时候,会首先判断该页是否在缓冲池中。对于数据库中页的修改操作,会首先修改在缓冲池中的页,然后再以一定的频率刷新到磁盘上。缓冲池中缓存的数据页有 索引页,数据页,UNDO页等。
show variables like 'innodb_buffer_pool_size'; #查看缓冲池大小
重做日志:
主要是用来实现事务的持久性,当系统由于不确定的原因奔溃之后,InnoDB存储引擎会使用重做日志恢复到掉电前的的状态,来保证数据的完整性。由两部分组成:一是内存中的重做日志缓冲(redo log buffer),是易失的;二是重做日志文件(redo log file),是持久的。InnoDB存储引擎会首先将重做日志信息放到缓冲区,然后以一定频率将其刷新到重做日志文件中。记录了对于InnoDB存储引擎的事务日志。
事务提交时必须先将该事务的所有日志写入重做日志文件进行持久化,待事务的COMMIT操作完才算完成。这里的日志指的就是重做日志。在InnoDB存储引擎中,由redo log 和 undo log.
show variables like 'innodb_log_buffer_size'; #查看重做日志缓冲
二进制日志:
记录了对MySQL数据库执行更改的所有操作,但是不包括SELECT和SHOW这类操作。主要用户数据复制,如主从复制中。
show variables like 'binlog_cache_size'; #二进制日志缓冲文件大小
在支持事务的存储引擎中,所有未提交的二进制日志会被记录到一个缓存中,等到该事务提交时,
会直接将缓冲中的二进制日志写入到二进制日志文件中。这个配置是由变量 binlog_cache_size 决定的。
binlog_cache_size 是基于session的。

InnoDB 事务
redo log 是InnDB保证事务ACID属性的重要机制 主要流程为
1.将数据读入InnoDB buffer pool ,并对相关记录加独占锁 2.将UNDO信息写入undo表空间的回滚段中 3.更改缓存页中的数据,并将更新记录写入redo buffer中 4.提交时,根据innodb_flush_log_at_trx_commit 的设置,将不同的方式将
redo_buffer中的更新记录刷新到InnoDB redo log file中,然后释放独占锁 5.最后 后台IO线程根据需要择机将缓存中更新过的数据刷新到磁盘文件中 #show engine innodb status 命令查看当前日志的写入情况
InnoDB内存优化
innodb_buffer_pool_size #存储表数据和索引数据的最大缓存 在保证操作系统和其它程序有足够内存可用的情况下 innodb_buffer_pool_size的值越大 缓存命中率越高 访问InnoDB表需要的磁盘I/O就越少 性能也就越高
innodb_log_buffer_size #决定InnoDB 重做日志缓存池的大小 对于可能产生大量 更新记录的大事务 可增加其大小 避免在事务提交前 就执行不必要的日志写入磁盘操作
InnoDB应用优化
作用:存储select查询的文本和结果,若下次收到相同查询,会从查询缓存中直接得到结果,而不再需要解析和查询
更新:当表结构和数据更改后,查询缓存值的相关条目被清空
InnoDB体系架构总结(一)的更多相关文章
- InnoDB体系架构(四)Master Thread工作方式
Master Thread工作方式 在前面的文章:InnoDB体系架构——后台线程 说到:InnoDB存储引擎的主要工作都是在一个单独的后台线程Master Thread中完成.这篇具体介绍该线程的具 ...
- InnoDB体系架构(三)Checkpoint技术
Checkpoint技术 前篇 InnoDB体系架构(二)内存 从缓冲池.缓冲池的管理.重做日志缓冲.额外内存缓冲这四个点介绍了InnoDB存储引擎的内存结构,而在将缓冲池的数据刷新到磁盘的过程中使用 ...
- InnoDB体系架构(二)内存
InnoDB体系架构(二)内存 上篇文章 InnoDB体系架构(一)后台线程 介绍了MySQL InnoDB存储引擎后台线程:Master Thread.IO Thread.Purge Thread. ...
- InnoDB体系架构(一)后台线程
InnoDB体系架构——后台线程 上一篇已经了解了MySQL数据库的体系结构 这一篇除了介绍InnoDB存储引擎的体系架构外,同时进一步了解InnoDB的后台线程. InnoDB存储引擎是多线程的模型 ...
- InnoDB体系架构
MySQL支持插件式存储引擎,常用的存储引擎则是MyISAM和InnoDB,通常在OLTP(Online Transaction Processing 在线事务处理)中,我们选择使用InnoDB,所以 ...
- 2.3 InnoDB 体系架构
下图简单显示了InnoDB的存储引擎的体系架构,从图可见,InnoDB储存引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作: 维护所有进程/线程需要访问的多个内部数据结构 缓存磁 ...
- InnoDB体系架构总结(二)
事务 确保事务内的SQL都可以同步执行 要么一起成功 要么一起失败.事务有四个特性原子性 一致性,隔离性,持久性 实现方式 开始事务的时候回家记录记录一个LSN日志序列 当事务执行的时候 会首先在In ...
- MySQL技术内幕 InnoDB存储引擎 之 InnoDB体系架构
后台线程 1.Master Thread 2.IO Thread 3.Purge Thread 4.Page Cleaner Thread 内存 重做日志在以下三种情况下将重做日志缓存中的内容刷新到 ...
- MySQL--InnoDB 体系架构
InnoDB 体系架构 后台线程 Master Thread Master Thread 是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新.合并插入缓 ...
随机推荐
- 更换过Ubuntu之后经常性卡死,原因有待细究
如题: 卡死时间: 2019-5-22-14:45 再次卡死,这次绝对不是看视频的原因了,具体什么原因还是不知道,不过我觉得就是显卡的问题,和搜索出来的问题差不多,安装了一些东西,看看行不行吧 sud ...
- wpf 中AxShockwaveFlash重写以及屏蔽鼠标右键
在wpf中需要用到flash播放swf或者图片,需要使用 AxShockwaveFlashObjects.dll和ShockwaveFlashObjects.dll 在项目中使用的时候遇到 问题1.使 ...
- 「开源」目前见过的最好的开源OA产品
这是我目前见过的最好的开源OA产品.功能完整,代码结构清晰.值得推荐. 1.项目介绍 oasys是一个OA办公自动化系统,使用Maven进行项目管理,基于springboot框架开发的项目,mysql ...
- Android课程设计第一天Android Studio安装
注意:课程设计只为完成任务,不做细节描述~ 学校有一个Android的课设,所以顺便把Android Studio安装了上去. 实际上安装过程并不复杂,只有几个地方需要注意~ 安装包可以去http:/ ...
- 在sz
在大城市,sz, 每天骑单车去公交车站. 每天用高德地图 坐快线巴士 车上下班要3个小时. 用guomei 的回收管家 回收 旧空调. 我在kfc 看书 在班车上睡觉/眯眼 在办公室睡觉,看书,工作 ...
- 137 Single Number II 数组中除了一个数外,其他的数都出现了三次,找出这个只出现一次的数
给定一个整型数组,除了一个元素只出现一次外,其余每个元素都出现了三次.求出那个只出现一次的数.注意:你的算法应该具有线性的时间复杂度.你能否不使用额外的内存来实现?详见:https://leetcod ...
- [转]Android 如何监听返回键,弹出一个退出对话框
本文转自:http://blog.csdn.net/sunnyfans/article/details/8094349 Android 如何监听返回键点击事件,并创建一个退出对话框, 防止自己写的应用 ...
- 【前端】html5获取经纬度,百度api获取街区名,并使用JS保存进cookie
引用js<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak= ...
- abp zero mysql版正式发布
AbpZero-MySql aspnet-zero-1.12.0的mysql版本来啦.跟mssql版一样的功能,一样的代码. 获取源码
- Dynamic Median
题意: 设计一个数据结构,初始为空,支持以下操作: (1)增加一个元素,要求在log(n)时间内完成,其中n是该数据结构中当前元素的个数.注意:数据结构中允许有重复的元素. (2)返回当前元素集合的中 ...