在往期我们提过InnoDB存储引擎有了比较好的处理能力,那么它在存储记录上是非常强大的,就拿行数据来说,是一个庞大的数字。而行记录的格式上有Compact 和 Redundant 两种模式,具体二者的不同也会在下文中进行说明。下面我们就一起看看InnoDB存储记录的方法和它的格式吧。
1.InnoDB方法
与现有的大多数存储引擎一样,InnoDB使用页作为磁盘管理的最小单位;数据在 InnoDB 存储引擎中都是按行存储的,每个16KB大小的页中可以存放2-7992行的记录。(至少是2条记录,最多是7992条记录)
当 InnoDB 存储数据时,它可以使用不同的行格式进行存储;MySQL 5.7 版本支持以下格式的行存储方式:
Antelope 是 InnoDB 最开始支持的文件格式,它包含两种行格式 Compact 和 Redundant,它最开始并没有名字;Antelope 的名字是在新的文件格式 Barracuda 出现后才起的,Barracuda 的出现引入了两种新的行格式 Compressed 和 Dynamic;InnoDB 对于文件格式都会向前兼容,而官方文档中也对之后会出现的新文件格式预先定义好了名字:Cheetah、Dragon、Elk 等等。
2.两种行记录格式 Compact 和 Redundant 在磁盘上按照以下方式存储:
Compact 和 Redundant 格式不同就是记录格式的第一个部分;在 Compact 中,行记录的第一部分倒序存放了一行数据中列的长度(Length),而 Redundant 中存的是每一列的偏移量(Offset),从总体上上看,Compact 行记录格式相比 Redundant 格式能够减少 20% 的存储空间。
拓展:mysql日期和时间函数
1.MONTH(date)和MONTHNAME(date)
前者返回指定日期中的月份,后者返回指定日期中的月份的名称
2.DAYNAME(d)、DAYOFWEEK(d)、WEEKDAY(d)
DAYNAME(d)返回d对应的工作日的英文名称,如Sunday、Monday等;DAYOFWEEK(d)返回的对应一周中的索引,1表示周日、2表示周一;WEEKDAY(d)表示d对应的工作日索引,0表示周一,1表示周二
3.WEEK(d)、WEEKOFYEAD(d)
前者计算日期d是一年中的第几周,后者计算某一天位于一年中的第几周
4.DAYOFYEAR(d)、DAYOFMONTH(d)
前者返回d是一年中的第几天,后者返回d是一月中的第几天
5.YEAR(date)、QUARTER(date)、MINUTE(time)、SECOND(time)
YEAR(date)返回指定日期对应的年份,范围是1970~2069;QUARTER(date)返回date对应一年中的季度,范围是1~4;MINUTE(time)返回time对应的分钟数,范围是0~59;SECOND(time)返回制定时间的秒值
以上就是在mysql中使用InnoDB进行存储记录的方法,主要是通过按行存储实现,格式上有Compact 和 Redundant两种,小伙伴们都学会了没有~