mysql int 占用空间_MySQL 字段类型占用空间剖析

MySQL 字段类型占用空间剖析

作者:nango  阅读:1162次  来源:http://blog.csdn.net/free_ant/article/details/52936722  时间:2016-10-26 18:03

@[nango](http://www.5none.com)

MySQL支持多种列类型:数值类型、日期/时间类型和字符串(字符)类型。

首先来看下各类型的存储需求(即占用空间大小):

**数值类型存储需求**

| 列类型| 存储需求|

| ------------- |

| TINYINT | 1个字节 |

| SMALLINT | 2个字节 |

| MEDIUMINT | 3个字节 |

| INT, INTEGER| 4个字节 |

| BIGINT| 8个字节 |

| FLOAT(p)| 如果0 <= p <= 24为4个字节, 如果25 <= p <= 53为8个字节 |

| FLOAT| 4个字节 |

| DOUBLE [PRECISION], item REAL| 4个字节 |

| DECIMAL(M,D), NUMERIC(M,D)| 变长(0-4个字节) |

| BIT(M)| 大约(M+7)/8个字节 |

> int(10)这里的10指的是数值的宽度,并不是字节

**日期和时间类型的存储需求**

| 列类型| 存储需求|

| ------------- |

| DATE| 3个字节 |

| DATETIME| 8个字节 |

| TIMESTAMP| 4个字节 |

| TIME| 3个字节 |

| YEAR| 1个字节 |

**字符串类型的存储需求**

| 列类型| 存储需求|

| ------------- |

| CHAR(M)| M个字节,0 <= M <= 255 |

| VARCHAR(M) | L+1个字节,其中L <= M 且0 <= M <= 65535 |

| BINARY(M)| M个字节,0 <= M <= 255 |

| VARBINARY(M)| L+1个字节,其中L <= M 且0 <= M <= 255 |

| TINYBLOB, TINYTEXT| L+1个字节,其中L < 28 |

| BLOB, TEXT| L+2个字节,其中L < 216 |

| MEDIUMBLOB, MEDIUMTEXT| L+3个字节,其中L < 224 |

| LONGBLOB, LONGTEXT| L+4个字节,其中L < 232 |

| ENUM('value1','value2',...)| 1或2个字节,取决于枚举值的个数(最多65,535个值) |

| SET('value1','value2',...)| 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员) |

> 上表的M只是为了说明占用空间大小,在实际创建表中char(20)、varchar(20),20指的是字符而不是字节(4.0版本以上,以下指的是字节);那么字符和字节的转换要看字符集,utf-8下,1字符=3字节;gbk下,1字符=2字节。

接下来会剖析varchar最大长度和text占用空间问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值