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

MySQL DATETIME类型存储空间详解:从8字节到5字节的演变

在MySQL数据库设计中,DATETIME类型用于存储日期和时间信息,但其存储空间大小并非固定不变,而是随MySQL版本迭代和精度定义动态变化。本文将详细说明其存储规则,并提供清晰的对比表格。

一、核心结论
  • MySQL 5.6.4 是分水岭:此前固定占用 8 字节;此后优化为 5 字节基础 + 精度附加空间
  • 精度决定扩展空间:若定义小数秒(如 DATETIME(3)),需额外 1~3 字节
  • 无精度定义时默认占 5 字节:现代MySQL(≥5.6.4)的常见场景。

二、存储空间对比表格
MySQL 版本是否支持小数秒数据类型定义存储空间范围存储格式
< 5.6.4❌ 不支持DATETIME8 字节'1000-01-01 00:00:00''9999-12-31 23:59:59'YYYYMMDDHHMMSS(整数)
≥ 5.6.4✅ 支持DATETIMEDATETIME(0)5 字节同上优化的二进制打包格式
≥ 5.6.4✅ 支持DATETIME(1) / (2)6 字节同上(含小数秒)基础5B + 1B精度扩展
≥ 5.6.4✅ 支持DATETIME(3) / (4)7 字节同上(含小数秒)基础5B + 2B精度扩展
≥ 5.6.4✅ 支持DATETIME(5) / (6)8 字节同上(含小数秒)基础5B + 3B精度扩展

:精度扩展空间计算公式:5 + CEIL(fsp / 2) 字节(fsp为小数秒位数,范围0-6)。


三、关键注意事项
  1. 版本查询命令
    确认MySQL版本是首要步骤:

    SELECT VERSION(); -- 输出示例:8.0.33
    
  2. 精度定义检查
    通过表结构查看是否定义小数秒:

    SHOW CREATE TABLE your_table;
    

    若显示created_at DATETIME(3),则表示精度为毫秒(占7字节)。

  3. 空间优化建议

    • 无小数秒需求时,直接使用 DATETIME(默认5字节);
    • 需存储毫秒/微秒时,按业务需求选择最小精度(如DATETIME(3));
    • 旧版本升级后,建议检查表结构以利用空间优化。

四、总结
场景描述存储空间
MySQL 5.6.3及之前版本8 字节
MySQL 5.6.4+,无小数秒(默认)5 字节
MySQL 5.6.4+,含1-2位小数秒6 字节
MySQL 5.6.4+,含3-4位小数秒7 字节
MySQL 5.6.4+,含5-6位小数秒8 字节

现代MySQL(≥5.6.4)中,DATETIME在未定义小数秒时仅需5字节,比旧版本节约37.5%存储空间。合理利用精度定义,可显著优化大规模数据存储效率。

http://www.lryc.cn/news/572751.html

相关文章:

  • Kotlin 中ArrayList、listOf、arrayListOf 和 mutableListOf区别
  • Nginx+Tomcat负载均衡群集
  • 【FineDance】Batch Size对训练的影响分析
  • 20250620-Pandas.cut
  • aws(学习笔记第四十五课) route53-failover
  • 资本赋能鈤励科技,建筑数字化项目引领行业变革新趋势
  • Docker 容器技术入门与环境部署
  • MATLAB基于可拓云模型的公路路面性能评价模型
  • 基于大模型的三叉神经痛预测及治疗方案研究报告
  • Postgresql 表结构、列名相关信息查询
  • Unix、Linux、POSIX、Minix 区别与联系
  • 小菜狗的云计算之旅,shell脚本语言的基本内容和用法
  • wireshark过滤显示rtmp协议
  • 服务器获取外网IP,并发送到钉钉
  • 力扣-136.只出现一次的数字
  • 【MATLAB代码】制导方法介绍与例程——追踪法,适用于二维平面,目标是移动的|附完整源代码
  • java项目打包成jar包,并给jmeter使用
  • Lora训练
  • Maven 之工程化开发核心指南:插件配置、pom 文件与依赖管理
  • 一生一芯 PA2 RTFSC
  • Nginx-Ingress-Controller自定义端口实现TCP/UDP转发
  • js 生成过控制点的曲线
  • 数据库part2---子查询
  • 学习笔记丨AR≠VR:透视沉浸式技术的“虚实象限”法则
  • JuiceFS 集群部署详细指南:使用 SeaweedFS 作为数据存储,ETCD 作为元数据存储
  • Redis如何解决缓存击穿,缓存雪崩,缓存穿透
  • Unity技能编辑器深度构建指南:打造专业级战斗系统
  • Pycharm中Jupyter Notebook 插件常用快捷键
  • 1.21SQLCipher 简介
  • Flutter Hero 组件详解及应用