关于 InnoDB 存储引擎的一些总结!
先说 3 件事吧!
春节放假期间公众号不发文。提前祝大家新年快乐!
公众号后面可能会改名,有好的名字,可以留言推荐!
最近喜获信息系统高级工程师的证书!谢谢朋友圈几百个粉丝的祝福,这个比 PMP 难考,一年可以考两次。我是死看书,没啥诀窍。没毕业也可以考,有没有用,看公司,看个人!
时间过的很快,一眨眼一年时间就过去了。过去一年里,我也和群里的不少朋友一起成长,互相学习到不少东西!下面总结一些,我们经常在群里讨论的一些关于 MySQL 的知识点。
1、InnoDB 中每一页的大小默认为 16kb,但是其也支持压缩页的功能,即将原本 16kb 的页压缩为 1kb、2kb、4kb 和 8kb。当需要从缓存池中申请 4kb 大小的页时,MySQL 的申请步骤如下:
检查 4kb 的 unzip_LRU 列表,检查是否有可用的空闲页;
若有,则直接使用;
否则,检查 8kb 的 unzip_LRU 列表;
若能够得到空闲页,则分解为 2 个 4kb 的页,并且存放到 4kb 的 unzip_LRU 列表;
若不能得到空闲页,就从 LRU 列表中申请一个 16kb 的页,将其分解为 1个 8kb 和 2 个 4kb 的页,并且存放到对应的 unzip_LRU 列表中
2、当 LRU 列表中的页被修改之后,其数据就和磁盘上的数据产生了不一致,这种页被称为脏页,此时数据库会根据 checkpoint 机制将脏页刷新到磁盘中,脏页不仅存在于 LRU 列表中,也存在于 FLUSH 列表中,FLUSH 列表中的数据是专门用来管理将数据刷新到磁盘中的。
3、在下列三种情况下重做日志会将重做日志缓冲中的内容刷新到重做日志文件中:
master thread 每一秒将重做日志缓冲刷新到重做日志文件;
每个事务提交时会将重做日志缓冲刷新到重做日志文件;
当重做日志缓冲池剩余空间小于1/2时,重做日志缓冲刷新到重做日志文件。
4、为了避免数据丢失的问题,事务数据库都采用了 write ahead log 机制,也就是当事务提交时,存储引擎先将数据写入到重做日志中,然后再修改页中的数据,当数据库发生宕机时,可以通过重做日志来恢复数据。
5、为了协调 CPU 的处理速度与磁盘的读写速度之间的不匹配问题,MySQL 采用了缓冲池来解决这个问题,当发生数据读写时,其都是先将数据写入到缓冲池中,然后通过 checkpoint 技术将数据写入到磁盘中。
6、checkpoint 技术所解决的问题:
缩短数据库的恢复时间;
缓冲池不够用时,将脏页刷新到磁盘;
重做日志不可用时,刷新脏页。
7、公众号里之前也总结了不少关于 MySQL 的面试题和知识点。如:
为什么MySQL索引要用B+树,而不是B树?
MySQL 实战第46讲,我给丁奇大神序章,grant 不生效问题
MySQL备份文件.ibd、.frm、.MYD、.MYI的恢复教程
服务器又报警了,这次是MySQL的“断章取义”
。。。
搜了一下,大概有 50 多篇原创 MySQL 文章,都可以在历史文章里搜索到。我依然推荐大家可以看看《高性能 MySQL》、丁奇大神的《MySQL实战45讲》。
另外我的小程序里也有一些 MySQL 相关的知识点,虽然很久没更新了!
由于今天临时有事,这篇文章更新的很晚,很抱歉!最后祝大家鼠年有——
“鼠”不尽的快乐!“鼠”不尽的收获!
“鼠”不尽的钞票!“鼠”不尽的笑容!
“鼠”不尽的幸福,“鼠”不尽的幸运!
“鼠”不尽的甜蜜,“鼠”不尽的活力!
2020,“鼠”你最胖!不是,“鼠”你最棒!
关于 InnoDB 存储引擎的一些总结!相关推荐
- Mysql技术内幕——InnoDB存储引擎
一.mysql体系结构和存储引擎 1.1.数据库和实例的区别 数据库:物理操作系统或其他形式文件类型的集合.在mysql下数据库文件可以是frm,myd,myi,ibd结尾的文件. 数据库实例:由数据 ...
- InnoDB 存储引擎中的表锁和行锁详解
各位对 "锁" 这个概念应该都不是很陌生吧,Java 语言中就提供了两种锁:内置的 synchronized 锁和 Lock 接口,使用锁的目的就是管理对共享资源的并发访问,保证数 ...
- linux mysql innodb_MySQL innoDB 存储引擎学习篇
master thread的县城优先级别最高.其内部由几个循环(loop)组成:主循环(loop).后台循环(background loop).刷新循环(flush loop).暂停循环(suspen ...
- 《MySQL技术内幕:InnoDB存储引擎第2版》——3.1 参数文件
3.1 参数文件 在第1章中已经介绍过了,当MySQL实例启动时,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等.在默认 ...
- mysql1033错误存储引擎_【Mysql问题集锦(1)】mysql不能使用innodb存储引擎
案例: 一台服务器,操作系统centos,使用 yum 安装mysql ,之前innodb存储引擎一直是可以用的,某天之后,突然不能用了,使用innodb存储引擎的数据库导入后存储引擎全部变成了myi ...
- mysql 5.7 存储引擎_mysql5.7——innodb存储引擎总结
一.innodb初探: 1.MySQL日志文件: ①:slow.log 文件会记录慢查询日志,当一条语句执行时间超过在配置参数long_query_time中指定的值时,这条语句就会被记录在这个文件中 ...
- mysql技术内幕innodb存储引擎——表索引算法和锁_(转)Mysql技术内幕InnoDB存储引擎-表索引算法和锁...
表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...
- InnoDB 存储引擎体系架构
首先以一张图简单展示 InnoDB 的存储引擎的体系架构.从图中可见, InnoDB 存储引擎有多个内存块,这些内存块组成了一个大的内存池,主要负责如下工作: 维护所有进程/线程需要访问的多个内部数据 ...
- 11、InnoDB存储引擎
InnoDB 是 MySQL 中第一个提供外键约束的存储引擎,而且它对事务的处理能力是其它存储引擎无法与之相比的. MySQL 5.5 版本以后,默认存储引擎由 MyISAM 修改为 InnoDB.I ...
- mysql+如何开发存储引擎_干货!MySQL 的 InnoDB 存储引擎是怎么设计的?
MySQL 里还有什么其他成员呢? 对于 MySQL,要记住.或者要放在你随时可以找到的地方的两张图,一张是 MySQL 架构图,另一张则是 InnoDB 架构图: 遇到问题,或者学习到新知识点时,就 ...
最新文章
- 索引初识一 MySql
- Linux与云计算——第二阶段Linux服务器架设 第八章:FTP服务器架设—安装配置FTP服务和客户端配置...
- 深入Garbage First垃圾收集器(三)G1中的垃圾收集
- c# timer使用
- 一个webpack,react,less,es6的DEMO
- MySQL5.6 Performance_schema
- Java学习笔记50:JSONObject与JSONArray的使用
- (四)boost库之正则表达式regex
- meta标签的用处详解
- 用计算机MR,计算机上的【MC、MR、M
- 家族关系查询系统程序设计算法思路_七大查找算法(附C语言代码实现)
- [Leetcode] Pascal's Triangle II
- 通过串口连接控制树莓派
- 解决Unable to find taglib [cr] for URI: [WBE-INF/tlds/testlib.tld]] with root cause的可能性方案
- Android如何计算时间差
- oracle 实现自增序列
- manjaro设置字体_Manjaro 20.03字体美化的2.5个级别
- 新西兰计算机最好大学排名,2017新西兰大学计算机专业排名TOP10经典院校一览
- 网易严选应用的云原生演进实践
- java照片水印怎么做的_java图片加水印_百度经验
热门文章
- 赛思互动:大数据能给企业带来什么
- Python数组处理
- 基于java点餐平台网站计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署
- Cortex - A7架构的基本资料
- 阿里 淘宝技术部 一面 凉
- 片内外设、片上外设和片外外设的区别
- 传奇私服制作小地图的知识详解
- 设计一个简单的[JS]文本摘要算法
- python open函数参数_python中open函数的使用
- 软件测试的指标成功率靠谱吗,【图】怎么样才能测试公式的成功率?_股票公式,股票,炒股,股票软件,炒股软件_指标编写互助答疑论坛_理想论坛 - 股票论坛...