当前位置: 首页 > news >正文

【MySQL】基础篇

1. MySQL中的NULL值是怎么存放的?

MySQL的compact行格式中会用【NULL值列表】来标记值为NULL的列,NULL值不会存储在行格式中的真实数据部分。
NULL值列表会占用1字节空间,当表中所有字段都被定义成NOT NULL,行格式中就不会有NULL值列表,可节省1字节空间
【1字节8位,每位用0或1填充,0代表不是NULL,1代表为NULL,用0补齐成8位,当列较多时,NULL值列表占用的字节空间可变。】

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

MySQL的Compact行格式中会用【变长字段长度列表】存储变长字段实际占用的数据大小。

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

一行记录最大能存储65535字节的数据,但这个是包含【变长字段字节数列表所占用的字节数】和【NULL值列表所占用的字节数】。所以,在算varchar(n)中最大值时,需要减去这两个列表所占用的字节数。
如果一张表只有一个varchar(n)字段,且允许为NULL,字符集为ascii。varchar(n)中n最大取值为65536-变长字段字节数列表所占用的字节数-null值列表所占用的字节数=65535-2-1=【65532】。
如果有多个字段的话,要保证所有字段的长度+变长字段字节数列表所占用的字节数+NULL值列表所占用的字节数<=65535。

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

如果一个数据页存不了一条记录,InnoDB存储引擎会自动将溢出的数据存放在【溢出页】中。
Compact行格式:当发生行溢出时,在记录的真实数据处只会保存该的一部分数据,剩余数据放在【溢出页】中,然后真实数据处用【20字节】存储指向溢出页的地址,从而找到剩余数据所在的页。
Compressed和Dynamic两种格式采用【完全的行溢出】方式,记录的真实数据处不会存储该列的一部分数据,只存储20个字节的指针来指向溢出页。实际的数据全部存储在溢出页中。

相关文章:

  • C语言面试题1——1—20
  • 【DeepSeek】deepseek可视化部署
  • 【Python网络爬虫】爬取网站图片实战
  • 黑马Redis详细笔记(实战篇---短信登录)
  • 【05】css 常用背景属性详解
  • Dav_笔记14:优化程序提示 HINTs -3
  • 深入浅出:Python 中的异步编程与协程
  • Mongodb快速上手
  • 复制conda虚拟环境的几种方法
  • electron本地调试时终端输出文字乱码
  • 阿里云轻量服务器docker部署nginx
  • windows,docker停止所有容器
  • TDengine 性能测试工具 taosBenchmark
  • 基于RTOS的STM32游戏机
  • electron.vite 项目创建以及better-sqlite3数据库使用
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 11
  • 计算机毕业设计SpringBoot+Vue.js飞机票在线订购系统(源码+文档+运行视频+讲解视频)
  • 清华大学:DeepSeek 如何赋能职场应用(35 页 PDF)
  • deepseek与gpt,核心原理对比
  • python C# 内存共享互传 图像 以及字符串
  • php网站开发百度云/新闻头条免费下载安装
  • 阿里云网站建设 部署与发布答案/徐州自动seo
  • 怎么做干果网站/今天重大国际新闻
  • 深圳公司注册核名官网/网站seo如何做好优化
  • 做的好的音乐网站的特点/免费的黄冈网站代码
  • 王烨在地府是什么身份/sem优化软件哪家好