小蔡学Java

MySQL如何估算一行数据大小

2024-09-20 20:03 636 0 MySQL MySQL

MySQL的数据类型

主要包括以下五大类

  • 数字类型:整数类型 tinyint、smallint、mediumint、int、bigint
  • 数字类型:浮点数类型 float、double、decimal
  • 字符串类型 char、varchar、tinyblob、blob、mediumblob、longblob、tinytext、text、mediumtext、longtext、Enum、Set
  • 日期类型 Date、DateTime、TimeStamp、Time、Year

其他数据类型:用的比较少

注意:decimal采用的是四舍五入,decimal插入的数据超过精度之后会触发警告。float和double采用的是四舍六入五成双。

什么是四舍六入五成双?

就是5以下舍弃5以上进位,如果需要处理数字为5的时候,需要看5后面是否还有不为0的任何数字,如果有,则直接进位,如果没有,需要看5前面的数字,若是奇数则进位,若是偶数则将5舍掉

说明:表格中的L表示存储的数据本身占用的字节,L 以外所需的额外字节为存放该值的长度所需的字节数。MySQL 通过存储值的内容及其长度来处理可变长度的值,这些额外的字节是无符号整数。

日期类型

注意:日期格式中,大写和小写是有区别的

数据类型选择的一些建议

  • 选小不选大:一般情况下选择可以正确存储数据的最小数据类型,越小的数据类型通常更快,占用磁盘,内存和CPU缓存更小
  • 简单就好:简单的数据类型的操作通常需要更少的CPU周期,例如:整型比字符操作代价要小得多,因为字符集和校对规则(排序规则)使字符比整型比较更加复杂。
  • 尽量避免NULL:尽量制定列为NOT NULL,除非真的需要NULL类型的值,有NULL的列值会使得索引、索引统计和值比较更加复杂。
  • 浮点类型的建议统一选择decimal
  • 记录时间的建议使用int或者bigint类型,将时间转换为时间戳格式,如将时间转换为秒、毫秒,进行存储,方便走索引

计算数据占用多少空间

有了如上的表格

比如你数据库某一张表有三个字段:一个int型,一个long型,一个varchar(100) 型,一个date型。 int型占用4个字节(一个字节8位),long型占用8个字节data占用8字节。 那么一行占用:4+8+100+8=120Byte。 那么100万行,大约有115M。这是三列。如果是10列,就可以粗略估计出来了

评论( 0 )

  • 博主 Mr Cai
  • 坐标 河南 信阳
  • 标签 Java、SpringBoot、消息中间件、Web、Code爱好者

文章目录