MySQL:30 阶段总结:MySQL存储模型以及数据读写机制

Posted 鮀城小帅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL:30 阶段总结:MySQL存储模型以及数据读写机制相关的知识,希望对你有一定的参考价值。

目前为止,初步学了mysql存储模型以及对应的读写机制。可以知道的是MySQL的数据最终是放在磁盘文件里的。

而数据在存储到磁盘文件的机制中,在逻辑层面是将数据插入一个一个的表中的;而在物理层面上,表对应的是表空间这个概念。也就是说数据在物理层面是存储到表空间的某个结构里了。

他们的对应关系为,表空间对应着磁盘文件,在磁盘文件里就存放着数据。

由于数据库存储的数据的复杂性,不只是多种字段类型的问题,还有索引这个概念的存在。

所以实际上在磁盘文件里存放数据的时候,它从最基本的角度来看的话,就是被拆分为一个一个的 数据区(extent)分组,每个extent组中包含256个extent,然后每个extent里包含了64个数据页!然后每个数据页里都包含了一行一行的数据!

在实际存储中,每个数据行还包含了很多附加的信息,在数据页、数据区里,都有很多特殊的附加信息。各种各样的特殊信息的存在,可以让我们在简简单单的磁盘文件里实现B+树索引、事务之类的非常复杂的机制。

当我们在数据库执行CRUD的时候,必须先把磁盘文件里的一个数据页加载到内存的Buffer Pool的一个缓存里去,然后我们增删改查都是针对缓存页里的数据来执行的。

假设此时我们要插入一条数据,会先看看往哪个表里插入数据?然后再根据表找到一个表空间。找到表空间之后,就可以定位到对应的磁盘文件!有了磁盘文件之后,就可以从里面找一个extent组,找一个extent,接着从里面找一个数据页出来!这个数据页可能是空的,也可能已经存储了一些数据了。

然后就可以把这个数据页从磁盘里完整加载出来,放入Buffer Pool的缓存页里了。

由于一个数据页的大小是固定的,所以一个数据页固定就是在一个磁盘文件里占据了某个开始位置到结束位置的一段数据,此时将缓存页写回去的时候也是一样的,选择好固定的一段位置的数据,直接把缓存页的数据写回去,就覆盖了原来的那个数据页了。

以上是关于MySQL:30 阶段总结:MySQL存储模型以及数据读写机制的主要内容,如果未能解决你的问题,请参考以下文章

#私藏项目实操分享# 总结mysql常见的存储引擎以及特点

MySQL完整教程

MySQL数据类型和常用字段属性

MySQL完整教程(共8章)

第六阶段·数据库MySQL及NoSQL实践第1章·章节一MySQL数据库

mysql索引的选择