324 字
2 分钟
MySQL-VARCHAR支持的最大长度
MySQL中,最大行长度限制为65535字节,如果一行中仅仅有一个varchar字段,它的最大长度是多少呢?
(InnoDB/MyISAM 中一行最大长度限制是 65535 字节(65 KB 左右)。)
长度> 255,存储varchar长度需要2字节,长度<255,存储varchar长度需要1字节。
30%
全部章节
- 1 MySQL共享锁和排他锁的区别
- 2 数据库ACID四大特性
- 3 MVCC-多版本并发控制
- 4 MySQL全局锁,表级锁,行级锁
- 5 MySQLbinlog,redolog和undolog
- 6 MySQL索引类型有哪些
- 7 MySQL-VARCHAR支持的最大长度 阅读中
- 8 MySQL事务隔离级别
- 9 MySQL中的数据排序是怎么实现的
- 10 MySQL中几种count的区别
- 11 MySQL中CHAR和VARCHAR的区别
- 12 MySQL事务的两阶段提交是什么
- 13 MySQL中发生死锁如何解决
- 14 搭建MySQL主从服务器
- 15 如何处理MySQL的主从同步延迟
- 16 什么是MySQL的主从同步机制
- 17 MySQL中如何解决深度分页问题
- 18 分库分表场景
- 19 MySQL联合索引失效情况
- 20 MySQL-binlog
- 21 MySQL-redolog
- 22 MySQL-relaylog(中继日志)
- 23 MySQL-undolog(回滚日志)
MySQL中,最大行长度限制为65535字节,如果一行中仅仅有一个varchar字段,它的最大长度是多少呢? (InnoDB/MyISAM 中一行最大长度限制是 65535 字节(65 KB 左右)。) 长度> 255,存储varchar长度需要2字节,长度<255,存储varchar长度需要1字节。
所以
- 当长度>255且非空的时候,可以存储65535 - 2 = 65533 字节。
- 当长度>255且可以为空的时候,可以存储65535 - 2 - 1(存储NULL标志) = 65532字节。
- 当长度<255且非空的时候,可以存储65535 - 1 = 65534 字节。
- 当长度<255且可以为空的时候,可以存储65535 - 1 - 1(存储NULL标志) = 65533字节。
如果只有一个 VARCHAR 字段
假设表里只有这一列:
CREATE TABLE t ( v VARCHAR(N)) ENGINE=InnoDB;行最大长度:65535 字节。
除了数据外,还有:
NULL 标志位(至少 1 字节,即使只有一列)。
VARCHAR 长度字节(1 或 2)。
所以最大能用来存储 v 的 = 65535 - 1 (NULL 标志) - 2 (长度字节) = 65532 字节。
因此:
✅ 单列 VARCHAR 最大可定义为 VARCHAR(65532)
如果是非null,就不需要占用那一字节null标志位了
CREATE TABLE t ( v VARCHAR(N) NOT NULL) ENGINE=InnoDB;这里N就可以是65533了


发现错误或想要改进这篇文章?
在 GitHub 上编辑此页 MySQL-VARCHAR支持的最大长度
相关文章
按系列 / 标签 / 分类推荐