请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

innodb页

  1. 请问一下,Innodb为什么要求一页至少会有两条行记录?
    之前看的文章,假设一页是16k,则会有单条数据最大不能超过8k的限制也就是8192Byte,但是这是为啥啊

  2. innodb有限制,create table的时候所有大字段(blob,text等字段)之外的字段长度总和不能超过65535Byte
    图片描述

但是这样的话,看1的结论,假设我有两个字段(字符编码单字节) field1 varchar(60000), field2 varchar(5534)
field1 + field2 < 65535 ,但是如果存了一条数据进去的时候明显65534Byte > 8192Byte,甚至远大于页的大小(16K = 16384Byte),这又是怎么一回事?

正在回答 回答被采纳积分+3

1回答

Moody 2022-04-22 12:35:50

1 主要原因就是为了保证B+树的效率,因为硬盘读取就是以页为单位的,如果一个页里面的数据太少,会出现大量的硬盘IO,数据库效率就会特别差。

2 varchar 在innodb里面的待遇其实和blob的差不多的,过长之后就会溢出到blob页里面,实际这一条数据只记录了一个指针而已,数据都放在blob页里面了。

0 回复 有任何疑惑可以回复我~
  • 提问者 10000h丶 #1
    懂了,谢谢老师 ^_^
    回复 有任何疑惑可以回复我~ 2022-04-22 14:08:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信