MySQL 各类型占用的存储空间


一、前言

掌握 MySQL 中各类型占用的存储空间,有助于帮我们计算数据表占用的空间,下面梳理了 MySQL 各类型占用的空间。

二、各类型占用空间

2.1、整数类型

类型 占用空间 范围
TINYINT 1 字节 -128~127
SMALLINT 2字节 -32768~32767
MEDIUMINT 3字节 -8388608~8388607
INT 4字节 -2147483648~2147483647
BIGINT 8字节 -9223372036854775808~9223372036854775807

2.2、浮点数类型

类型 占用空间 范围
FLOAT 4字节 ±1.175494351E-38~±3.402823466E+38
DOUBLE 8字节 ±2.2250738585072014E-308~±1.7976931348623157E+308

2.3、定点数类型

类型 占用空间 备注
DECIMAL 通常占用4-16字节 根据定义的精度变化

字节根据精度变化关系如下

精度指的是 DECIMAL 总位数,包括整数位数和小数位数

举几个示例:

  • DECIMAL(5,2) 占用4个字节
  • DECIMAL(10,3) 占用8个字节
  • DECIMAL(20,5) 占用16个字节
  • 精度 ≤ 9,则固定占用 4 字节
  • 精度 10-19,则固定占用 8 字节
  • 精度 ≥ 20,则固定占用 16 字节

2.4、字符串类型

类型 占用空间 备注
CHAR(M) M 字节 每个字符占用1个字节
VARCHAR(M) M 字节 每个字符占用1个字节
TEXT 2的16次方(65,536)字节
MEDIUMTEXT 2的24次方(16,777,216)字节
LONGTEXT 2的32次方(4,294,967,296)字节

2.5、日期时间类型

类型 占用空间
DATE 3 字节
TIME 3 字节
DATETIME 3 字节
TIMESTAMP 3 字节

2.6、JSON 类型

每个JSON对象占用的空间与其包含的数据元素有关,一般会更大,可达GB级以上。

三、额外知识点

  1. int(M) 中的 M 只表示显示宽度,并不会影响占用的存储空间。如果 int(M) 配合 zerofill 使用,就会有 01、02、03 这种效果。char(M)、varchar(M) 的 M 会影响占用的存储空间。

image-20230714151754813

image-20230714151809822


文章作者: xiucai
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xiucai !
  目录