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 是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新.合并插入缓 ...
随机推荐
- 解决 Xshell 连接出现 The remote SSH server rejected X11 forwarding request 问题
问题描述 使用 Xshell 5 首次连接虚拟机 CentOS 7.6 出现这样的提示: WARNING! The remote SSH server rejected X11 forwarding ...
- Fiddler 学习
Little Skill Fiddler 官网: https://www.telerik.com/fiddler 来自 https://www.cnblogs.com/zhaoyanjun/p/706 ...
- CSS常见的五大布局
本文概要 本文将介绍如下几种常见的布局: 一.单列布局 常见的单列布局有两种: header,content 和 footer 等宽的单列布局 header 与 footer 等宽,content 略 ...
- UvalLive4670(AC自动机模板)
放上刘汝佳的模板: #include <cstdio> #include <cstring> #include <string> #include <algo ...
- Investigation LightOJ - 1068
Investigation LightOJ - 1068 常规数位dp题,对于不同k分开记忆化.注意:k大于82(1999999999的数位和)时不会有答案,直接输出0即可.还有,按照这种记录不同k时 ...
- Plugging an Unplugged Pluggable Database
1.unplug To unplug a PDB, you first close it and then generate an XML manifest file. The XML file co ...
- v-bind和v-on
v-bind指令用于设置HTML属性:v-bind:href 缩写为 :href <a :href="{{url}}">aa</a> v-on 指令用于绑 ...
- apache http server2.2 + tomcat5.5 性能调优
httpd加tomcat做负载均衡,采用session复制方式共享session,采用http-proxy连接方式,打开status mod 一.没有做httpd和tomcat的启动参数修改,包括jv ...
- 代码审查的艺术:Dropbox 的故事
Dropbox 的 iOS 应用中的每一行代码,都是开始于被添加到 Maniphest 中的一个 bug 或者功能任务,Maniphest 是我们的任务管理系统.当一位工程师在上面接受一个任务,那么在 ...
- flex和box兼容性写法
display: -webkit-box; /* Chrome 4+, Safari 3.1, iOS Safari 3.2+ */ display: -moz-box; /* Firefox 17- ...