网站建设工具的种类,百度网盘网页版官网,做新网站怎样提交360,万网的网站怎么建设MySQL的存储结构分为5级#xff1a;表空间、段、簇、页、行。 1.表空间 TableSpace
上篇【MySQL】从InnoDB的内存结构、磁盘结构到update sql执行过程分析 在磁盘结构部分就说过了#xff0c;表空间可以看做是InnoDB 存储引擎逻辑结构的最高层#xff0c;所有的数据都存放在…MySQL的存储结构分为5级表空间、段、簇、页、行。 1.表空间 TableSpace
上篇【MySQL】从InnoDB的内存结构、磁盘结构到update sql执行过程分析 在磁盘结构部分就说过了表空间可以看做是InnoDB 存储引擎逻辑结构的最高层所有的数据都存放在表空间中。分为系统表空间、独占表空间、通用表空间、临时表空间、Undo表空间。
2.段 Segment
表空间是由各个段组成的常见的段有数据段、索引段、回滚段等段是一个逻辑的概念。一个ibd文件独立表空间文件里面会由很多个段组成。
创建一个索引会创建两个段一个是索引段leaf node segment一个是数据段non-leafnodesegment。索引段管理非叶子节点的数据。数据段管理叶子节点的数据。也就是说一个表的段数就是索引的个数乘以2。
3.簇 Extent
一个段Segment又由很多的簇也可以叫区组成每个区的大小是1MB64个连续的页。每一个段至少会有一个簇一个段所管理的空间大小是无限的可以一直扩展下去但是扩展的最小单位就是簇。
4.页 Page重点
为了高效管理物理空间对簇进一步细分就得到了页。簇是由连续的页Page组成的空间一个簇中有64个连续的页。 1MB16KB64。这些页面在物理上和逻辑上都是连续的。
跟大多数数据库一样InnoDB也有页的概念也可以称为块每个页默认16KB。页是InnoDB存储引擎磁盘管理的最小单位通过innodb_page_size设置。一个表空间最多拥有2^32个页默认情况下一个页的大小为16KB也就是说一个 表空间最多存储64TB的数据。
注意文件系统中也有页的概念。操作系统和内存打交道最小的单位是页Page。文件系统的内存页通常是4K。 SHOW VARIABLES LIKE innodb_page_size;假设一行数据大小是1K那么一个数据页可以放16行这样的数据。下面的示例就用每页放3行数据 由于索引属于二叉查找树所以索引字段是有序的。往表中插入数据时
如果一个页面已经写完产生一个新的叶页面如果一个簇的所有的页面都被用完会从当前页面所在段新分配一个簇如果数据不是连续的往已经写满的页中插入数据会导致叶页面分裂5.行 Row
InnoDB 存储引擎是面向行的row-oriented也就是说数据的存放按行进行存放。
文件格式行格式描述AntelopeInnodb-baseROW_FORMATCOMPACT ROW_FORMATREDUNDANTCompact 和 redumdant 的区别在就是在于首部的存 存内容区别。 compact的存储格式为首部为一个非NULL的变长字段长度列表 redundant 的存储格式为首部是一个字段长度偏移 列表每个字段占用的字节长度及其相应的位移。 在 Antelope 中对于变长字段低于 768 字节的不 会进行 overflowpage 存储某些情况下会减少结果集 IO.BarracudaInnodb-plugin)ROW_FORMATDYNAMIC ROW_FORMATCOMPRESSED这两者主要是功能上的区别功能上的。 另外在行里的变长字段和 Antelope 的区别是只存 20 个字节 其它的 overflowpage 存储。 另外这两都需要开启 innodb_file_per_table1
innodb_file_format 在配置文件中指定
show variables like %innodb_file_format%;
SET GLOBAL innodb_file_formatBarracuda;row_format则在创建数据表时指定
CREATE TABLE tf1
(c1 INT PRIMARY KEY)
ROW_FORMATCOMPRESSED
KEY_BLOCK_SIZE8;查看行格式注需要在命令行操作
SHOW TABLE STATUS LIKE tf1\G;