简述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#
全部评论

相关推荐

05-09 14:09
已编辑
东北大学 Java
汇丰广州软开internship面试体验最差的一次约的13:45面试,进会议以后发现除了我还有一个面试的哥们,面试官说让他先面,让我等半个小时😅,不懂为什么这么安排时间,等的坐立难安。手撕:1.写一道算法题,英文题目,返回字符串中第一个字符的类型,非常简单,用Character类的方法就行。面试开始:三个面试官hr:1.自我介绍+why&nbsp;HSBC我回答的时候提到我比较喜欢英语,面试官反过来说喜欢英语为什么口语不行😅我真没感觉我口语有多不好,不知道他们到底要求到什么程度2.工作地点,实习时长是否可以接受技术面试官:3.刚才的代码题你觉得存在哪些问题回答没写注释,访问修饰符public可能会有隐私问题。面试官说没有考虑到输入数字的情况😤可是给的问题就是give&nbsp;u&nbsp;a&nbsp;string,无言以对。面试官总结说这是因为我没实习过,没有经验。4.之前为什么没去实习回答:之前准备保研考研,现在想就业。面试官说就算保研考研也该去实习😅说我意识不行5.让我平时多练练英语,多实习鼠鼠高考139,四级600,六级542,觉得自己真没有那么不堪,我要之前有实习还来你们这干嘛呢?到这我已经有点红温了6.问我学的ssm是什么,为什么学这个spring&nbsp;springmvc&nbsp;mybatis,主流常用7.项目为什么不用消息队列专盯着我没有的东西问hr:8.平时学习技术的动力是什么,怎么督促自己9.自己的方案不被同事认可怎么办回答:先自己改进,再咨询建议,实在不行换个方案hr:这么轻易就放弃了?到这已经彻底红温,想顺着网线爬过去10.遇到特别复杂的问题怎么解决反问:结果什么时候出&nbsp;一周内几轮面试&nbsp;一轮面的最难受的一次,全程不问八股,不问项目,面试官好像很赶时间,问的问题都很奇怪,而且他们说话的方式让我感觉像阴阳怪气一样。这实习不去也罢&nbsp;&nbsp;
牛客955052028号:omg这么压迫 我聊的还挺开心的 唠嗑一样
点赞 评论 收藏
分享
评论
点赞
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务