MySQL-02-InnoDB存储引擎

       实际的业务系统开发中,使用MySQL数据库,我们使用最多的当然是支持事务并发的InnoDB存储引擎的这种表结构,下面我们介绍下InnoDB存储引擎相关的知识点。

1-Innodb体系架构

     InnoDB存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作:
(1)维护所有进程/线程需要访问的多个内部数据结构
(2)缓存磁盘上的数据,方便快速的读取,同时在对磁盘文件的数据修改之前在这里缓存
(3)重做日志(redo log)缓冲

       后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存是最近的数据。此外将已经修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下InnoDB能恢复到正常运行状态。

       Master thread 是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲(insert buffer)、undo页的回收。

      IO Thread InnoDB存储引擎大量使用了AIO来处理写IO请求,这样可以极大的提高数据库的性能。而IO thread工作主要负责这些IO请求的回调(call back)处理。

2-Innodb表

2.1-索引组织表

        在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为索引组织表(index organized table)。在InnoDB存储引擎表中,每张表都有个主键(Primary Key),如果在创建表时没有显示地定义主键,则InnoDB存储引擎会安装如下方式选择或者创建主键。
(1)首先判断表中是否有唯一索引,如果有,则该列即为主键
(2)如果不符合上述情况,InnoDB存储引擎自动创建一个6字节大小的指针
当表中有多个非空唯一索引时,InnoDB存储引擎将选择第一个定义为非空唯一索引为主键。主键的选择是根据定义索引的顺序,而不是建表时列的顺序。

2.2-InnoDB逻辑存储结构

          所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace),表空间又是由段(segment)、区(extent)、页(page)组成。页在一些文档中页称之为块(block)。

共享表空间

       Innodb 将存储的数据按照表空间(tablespace)进行存放,默认配置下,会有一个初始大小10M,名为:ibdata1的文件,这就是默认的表空间文件。

show variables like 'innodb_data_file_path';//查看共享表空间
生成文件默认是在data目录下一个叫ibdata1的文件

当然也可以多路径设置表空间:
innodb_data_file_path = /data1/db1/ibdata1:100M:autoextend; /data2/db2/ibdata2:100M:autoextend
放在不同的磁盘,可以平均磁盘负载,提高数据库性能。

独立表空间

show variables like 'innodb_file_per_table';  //mysql默认5.6.7后开启
所在位置:在对应表所在的目录  表名.ibd 文件
记录数据:独立的表空间,仅存储该表的:数据,索引和插入缓冲BITMAP等信息。其余信息仍存储在默认表空间。

段:常见的段有数据段、索引段、回滚段等。

区:区是由连续的页组成的空间,在任何情况下每个区的大小都是1MB。为了保证区中页的连续性,InnoDB存储引擎一次从磁盘申请4-5个区。在默认的情况下,InnoDB存储引擎页的大小为16KB,即一个区一共有64个连续页。区是InnoDB存储引擎空间申请的最小单位。

页:页是InnoDB磁盘管理的最小单位。默认是16K。页是InnoDB访问的最小单位。
show variables like 'innodb_page_size';  innodb_page_size=16384(1024*16)
show variables like 'innodb_version';//查看InnoDB的版本号

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

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

相关文章

【Fusion 360环境搭建】保姆级贴心教程

文章目录 选择Fusion 360的理由一、Fusion 360注册账号二、安装 选择Fusion 360的理由 稚辉君推荐! 一、Fusion 360注册账号 官网网址 https://www.autodesk.com.cn/products/fusion-360 贴心提示:访问不了时试试手机热点 选择“ 教育” &#xf…

js实现获取原生form表单的数据序列化表单以及将数组转化为一个对象obj,将数组中的内容作为对象的key转化为对象,对应的值转换为对象对应的值

1.需求场景 哈喽 大家好啊,今天遇到一个场景, js实现获取原生form表单的数据序列化表单以及将数组转化为一个对象obj,将数组中的内容作为对象的key转化为对象,对应的值转换为对象对应的值 数组对象中某个属性的值,转…

居家适老化设计第二十八条---卫生间之地漏

以上产品图片均来源于淘宝网,侵权联系删除 居家适老化的地漏是为了满足老年人和身体不便者的需求,使其能够更方便、安全地使用,具有以下特点:1. 防滑设计:地漏表面的材质采用防滑处理,以防止老人在使用过程…

视频剪辑技巧:如何高效批量转码MP4视频为MOV格式

在视频剪辑的过程中,经常会遇到将MP4视频转码为MOV格式的情况。这不仅可以更好地编辑视频,还可以提升视频的播放质量和兼容性。对于大量视频文件的转码操作,如何高效地完成批量转码呢?现在一起来看看云炫AI智剪如何智能转码&#…

F盘满了变成红色怎么清理?这4个简单方法记得收藏!

“因为我电脑的磁盘比较多,我通常会把一些比较重要的文件放在F盘中。但是很奇怪,我的F盘用着用着就满成红色了,这该怎么办呢?应该怎么进行清理呢?” 我们在使用电脑时都会发现,电脑上有很多的磁盘。我们可以…

【数据结构(四)】前缀、中缀、后缀表达式(逆波兰表达式)和逆波兰计算器的代码实现(2)

文章目录 1. 前缀表达式(波兰表达式)1.1. 前缀表达式的计算机求值 2. 中缀表达式3. 后缀表达式(逆波兰表达式)3.1. 后缀表达式的计算机求值3.2. 逆波兰计算器的实现 4. 中缀表达式 转 后缀表达式4.1. 思路分析4.2. 代码实现 5. 逆波兰计算器的完整版 1. 前缀表达式(波兰表达式)…

Django之Cookie与Session,CBV加装饰器

前言 会话跟踪技术 在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下:  请求银行主页; 请求登录(请求参数是用户名和密码);请求转账(请求参数与转账相关的数…

IBM SPSS Statistics 27 Mac(统计分析软件)

IBM SPSS Statistics是一款数据分析和统计建模软件,它专为研究人员、分析师和商业用户设计。该软件能够帮助用户对大量数据进行分析和预测,帮助用户制定决策和解决问题。 IBM SPSS Statistics提供了丰富的统计分析功能,包括描述性统计、相关性…

Cobalt Strike之反向上线操作

前言 ​ Cobalt Strike 使用 GUI 框架 SWING(一种java GUI的库)开发,攻击者可通过CS木马在 beacon 元数据中注入恶意 HTML 标签,使得Cobalt Strike对其进行解析并且加载恶意代码(类似XSS攻击),…

品牌线上窜货查的出来吗

如果窜货不治理会出现什么局面,显见的当然是渠道混乱,低价丛生,严重的还会导致真假混卖,最后所有的后果都会由品牌承担,口碑的影响是必然的,那品牌的衰败也会是一种趋势,所以治理窜货是品牌发展…

通俗理解词向量模型,预训练模型,Transfomer,Bert和GPT的发展脉络和如何实践

最近研究GPT,深入的从transfomer的原理和代码看来一下,现在把学习的资料和自己的理解整理一下。 这个文章写的很通俗易懂,把transformer的来龙去脉,还举例了很多不错的例子。 Transformer通俗笔记:从Word2Vec、Seq2S…

HCIP-七、IS-IS 综合实验

七、IS-IS 综合实验 实验拓扑实验需求及解法1.如图所示,配置所有路由器的接口IP地址。2.运行IS-IS,进程号13.IS-IS优化4.路径优化 实验拓扑 实验需求及解法 本实验模拟IS-IS综合网络,完成以下需求: 1.如图所示,配置所…