页是指存储引擎使用的最小的数据存储单位。
当 MySQL 实行读取或写入操作时,是以页为基本单位来进行操作的。纵然读写一条数据,MySQL 也会按页操作。
MySQL 的存储引擎会将数据分成多个页,并根据需要将这些页加载到内存中进行处理。
通过使用页来组织数据,MySQL 能够更高效地管理存储空间,减少读取数据时的硬盘 I/O 次数,从而提高数据库的性能。
MySQL 页的组成?
COMPRESSED:这是 InnoDB 存储引擎特有的一种行格式,在 MySQL 5.7 版本后提供。使用压缩的方式存储数据,可以减少存储空间的使用和提高性能。
DYNAMIC:InnoDB 存储引擎也支持这种行格式,适用于包罗大量可变长度列的表。数据存储比力机动,既有利于节省空间,又能提高性能。
COMPACT:适用于 MyISAM 存储引擎的一种行格式,使用紧凑的格式存储数据。
FIXED:适用于 MyISAM 存储引擎的另一种行格式,全部列都用固定长度存储数据。
REDUNDANT:适用于 MyISAM 存储引擎的一种行格式,存储冗余信息以加快查询速度。
什么是行溢出?
行数据量超出所能容纳的最大值。
举例阐明两种情况:
一个是设计表时:例如把varchar的长度设置为70000,则会报错column length too big for column 's' (max = 16383); use Blob or TEXT instea.
一个是插入或更新数据时:数据内容超过表字段约定的最大长度引发的报错(严格模式)或完整截断(非严格模式)情况。
为什么varchar行溢出表现的是max=16383,而不是65535?