本系列学习笔记旨在作者准备数据库方面面试用,有点临阵磨枪的感觉,我学习MySQL是参考的掘金小册的《MySQL 是怎样运行的:从根儿上理解 MySQL》和《MySQL 是怎样使用的:从零蛋开始学习 MySQL》,学习笔记里将核心概念和高频考点总结一下,图都是从小册里摘取的,如果涉及侵权可随时撤销,如果大家是零基础学习MySQL,强烈推荐上面的两本小册。
MySQL是客户端-服务端模式,mysql服务器底层是靠存储引擎实现数据的读取和存储的,不同的存储引擎存放数据的格式也是不同的,不同的存储引擎赋予数据库不同的特性,常见的存储引擎有InnoDB、MyISAM和Memory等。MySql默认的存储引擎是InnoDB,因此本文介绍的是InnoDB的基本概念,MySql可以通过sql语句切换到指定的存储引擎。
1、页
页是InnoDB管理存储空间的基本单位,InnoDB将数据库中的数据都是存储在页这个基本存储单位里的;页也是内存和磁盘交互的基本单位,数据库从磁盘中读取若干个页大小的数据到内存,也将内存中若干个页大小的数据刷新到磁盘中。 一个页的内存大小为16KB,MySql中有很多类型的页,这里我们介绍的是MySql中存放记录的页,也叫索引页。
页这个16KB大小的空间被划分为以下7个部分,各部分记录的数据和功能不一样:页的组成结构File Header,表示页的一些通用信息,占固定的38字节。
Page Header,表示数据页专有的一些信息,占固定的56个字节。
Infimum + Supremum,两个虚拟的伪记录,分别表示页中的最小和最大记录