简述Mysql的一些问题(持续学习中小林图解mysql中)

1.Mysql的null值是如何存放的?

mysql的compact行格式会把值为null的列存储到null值列表中。NULL 值列表也不是必须的。当数据表的字段都定义成 NOT NULL 的时候,这时候表里的行格式就不会有 NULL 值列表了这样可以至少节省 1 字节的空间(NULL 值列表至少占用 1 字节空间)。但是null值列表并不是固定的1字节空间。当有一条记录有9个字段值都是null,就会创建2字节空间的null值列表,以此类推。

2.mysql怎么知道varchar(n)实际占用数据的大小?

mysql的compact行格式中会使用 变长字段长度列表 存储变长字段实际占用的数据大小。

3.varchar(n)中的n最大取值是多少?

varchar(n) 中 n 的最大取值与 MySQL 的版本、行格式以及字符集有关:

  • 早期版本:在 MySQL 5.0.3 之前,varchar 类型的最大长度为 255 字节。
  • 之后版本:在 MySQL 5.0.3 及以后版本,一行记录最大可以存储65535字节的数据,但是这个是包含 变长字段字节数列表占用的字节数null值列表所占用的字节数,因此在算varchar(n)中n的最大值时,需要减去这两个列表所占用的字节数。

如果一张表只有一个 varchar(n) 字段,且允许为 null,字符集为 asci。varchar(n)中n最大取值为 65532。

计算公式:65535-变长字段字节数列表所占用的字节数-null值列表所占用的字节数=65535-2-1=65532。

如果有多个字段的话,要保证所有字段的长度+变长字段字节数列表所占用的字节数 + NULL值列表所占用的字节数<= 65535。

4.行溢出后,mysql是怎么处理的?

如果一个数据也存不了一条记录,InnoDB存储引擎会自动将溢出的数据存放到 溢出页 中。

compact行格式对行溢出的处理是这样的:当发生行溢出时,在记录的真实数据处只会保存该列的一部分数据,而把剩余的数据存放在溢出页中,然后真实的数据处用20字节存储指向溢出页的地址,从而可以找到剩余数据所在的页。

Compressed 和 Dynamic 这两种格式采用完全的行溢出方式,记录的真实数据处不会存储该列的一部分数据,只存储 20 个字节的指针来指向溢出页。而实际的数据都存储在溢出页中。

#mysql#
全部评论

相关推荐

04-11 02:35
已编辑
门头沟学院 Java
记录一下暑期实习阶段一(八股刚开始背,算法掌握一般偏下)2.17&nbsp;&nbsp;&nbsp;鹅s线&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一面大寄特寄&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;八股全不会,项目自我阐述成一坨2.18&nbsp;&nbsp;&nbsp;网易游戏测试开发一面寄&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;无八股,算法全寄2.22&nbsp;&nbsp;宇宙厂一面寄&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;全程拷打项目(下来自己想想项目就跟玩具一样,受不了拷打)&nbsp;&nbsp;算法(多线程打印寄)2.24&nbsp;&nbsp;&nbsp;csig捞一面寄&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;项目拷打穿插八股,个人感觉良好,算法确实再次寄(算法永远的敌人!!!)&nbsp;&nbsp;&nbsp;阶段一以全部一面挂为终结,以没做好准备安慰自己😥😅阶段二(感觉八股背得不错,信心满满)3.20好的,老铁先给我来了一拳。一面直接就干碎梦想,感觉八股白背,背了也说不流畅,思维也混乱(主要原因还是没掌握好,只是自我感觉良好😰)难道全力备战最终只能这样嘛!&nbsp;!&nbsp;!&nbsp;!啊不!&nbsp;!&nbsp;!被彻底击碎信念,开始怀疑人生,找后路,想理由,自我安慰。3.22淘天一面&nbsp;&nbsp;聊挺好,八股也答得差不多,面试官nice,给了很多建议,算法也无问题,以为稳稳的,幸福拉满的感觉😄第二天就挂了,哈哈哈哈哈哈哈哈,谁是小丑呢,好难猜啊😅3.25美团一面,项目拷打,前期攒够经验了,回答得不错,后面项目不够,科研来凑,基本够用😋隔一天约二面3.31美团二面,大模型洗礼+闲聊。以为kpi寄阶段二自以为准备不错,结果被上一课!&nbsp;!&nbsp;!斗志几乎丧失😡😭😭😭阶段三(心态转变)难以形容,在极度痛苦之后,大彻大悟,有啥大不了,此处不留爷自有留爷处!&nbsp;!&nbsp;!转变心态,不就小小一面试嘛,算得了什么,答得上来就答,答不上来大不了我下来再学嘛,面试的时候不丢气势,不气馁。4个工作日,百度3次面试,每一次都放松自信的状态一面&nbsp;&nbsp;1h22min&nbsp;&nbsp;八股盛宴,操作系统-&amp;amp;gt;数据结构-&amp;amp;gt;计组-&amp;amp;gt;计网-&amp;amp;gt;redis-&amp;amp;gt;mysql-&amp;amp;gt;java&nbsp;&nbsp;酣畅淋漓(满头大汗😅)二面&nbsp;&nbsp;1h50min&nbsp;&nbsp;场景盛宴(被安排的明明白白的)&nbsp;&nbsp;&nbsp;比八股更为恐怖,各种场景问题一二面的强度,换做以前,我已崩溃,现在我只能说,我已入舱,状态良好,心态切换真的太重要了。三面和主管聊的不错,氛围很好,不再压抑自己真的很舒服。等一手三面结果.....最后感谢团子给我的第一个offer,感谢我团,永远爱团,我是团孝子😘
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务