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

mysql - 为什么MySQL不建议使用NULL作为列默认值?

为什么MySQL不建议使用NULL作为列默认值?

InnoDB有4中行格式:

  • Redundant : 非紧凑格式,5.0 版本之前用的行格式,目前很少使用,
  • Compact : 紧凑格式,5.1 版本之后默认行格式,可以存储更多的数据
  • Dynamic , Compressed : 和Compact类似,5.7 版本之后默认使用 Dynamic 行格式,在Compact基础上做了改进,基础设计原理没变

由于Redundant较少使用, 且Dynamic和Compressed是基于Compact的, 故这里以Compact为例。
Compact行格式如下:

存储的额外数据存储的真实数据
变长数据列的长度NULL值的列表记录头信息row_id (隐藏字段)trx_id (隐藏字段)roll_ptr (隐藏字段)列1列2...列n

由于:

  1. NULL值列表的数量, 与允许为null的字段数量一致

    如, 有7个字段允许为null, 则有7个NULL值列表

  2. NULL值列表至少占用1字节空间, 故当数据量越大或null列越多时, 占用的存储空间越多

综上所述, 不建议允许列为null, 可使用其他默认值(如空字符串, 0等)

相关文章:

  • git仓库迁移
  • 【Linux】操作系统之冯诺依曼体系
  • 用HAL库改写江科大的stm32入门-6-3 PWM驱动LED呼吸灯
  • html中 table的 colspan和rowspan
  • 使用Golang调用腾讯云邮件模版发送邮件
  • SpringCloud学习笔记(一)
  • 日有所思的梦想
  • 探索python数据可视化的奥秘:打造专业绘图环境
  • 【全开源】JAVA情侣扭蛋机情侣游戏系统源码支持微信小程序+微信公众号+H5
  • Oracle中rman的增量备份使用分享
  • vue3 前端实现导出下载pdf文件
  • AI实时免费在线图片工具3:人物换脸、图像编辑
  • Nginx企业级负载均衡:技术详解系列(15)—— 一篇文章教你如何自定义错误日志
  • 【C++】问题及补充(2)
  • LeetCode 每日一题 数学篇 2894.分类求和并作差
  • [PHP内核探索]PHP中的哈希表
  • Git同步原始仓库到Fork仓库中
  • iOS小技巧之UIImagePickerController实现头像选择
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript设计模式之工厂模式
  • Java基本数据类型之Number
  • java正则表式的使用
  • leetcode-27. Remove Element
  • Rancher如何对接Ceph-RBD块存储
  • Service Worker
  • Yii源码解读-服务定位器(Service Locator)
  • 成为一名优秀的Developer的书单
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 技术:超级实用的电脑小技巧
  • 如何实现 font-size 的响应式
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 温故知新之javascript面向对象
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • ### RabbitMQ五种工作模式:
  • #Z0458. 树的中心2
  • (19)夹钳(用于送货)
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (AngularJS)Angular 控制器之间通信初探
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (四)js前端开发中设计模式之工厂方法模式
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)jQuery 基础
  • (转)一些感悟
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .net 受管制代码
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @Autowired多个相同类型bean装配问题
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945