mysql的varchar到底能存多少个字符

mysql的varchar到底能存多少个字符

结论

(65535字节-其他列所占用的子节-varchar列长度-null标识占用字节数)/3,向下取整.

注意

  • 4.0版本及以下,MySQL中varchar长度单位是字节,如varchar(20),指的是20字节
  • 5.0版本及以上,MySQL中varchar长度单位是字符。如varchar(20),指的是20字符

测试环境

mysql5.7,存储引擎innodb,utf8字符集

复制代码
GBK编码:
一个英文字符占一个字节,中文2字节,单字符最大可占用2个字节。

UTF-8编码:
一个英文字符占一个字节,中文3字节,单字符最大可占用3个字节。

utf8mb4编码:
一个英文字符占一个字节,中文3字节,单字符最大占4个字节(如emoji表情4字节)。

单列

(65535-3)/3=21844

多列

(65535-其他列占用的总字节数)/3,向下取整

21844-255=21589

因为255也要占用额外的空间存储长度和null标识,实际需要255*3+长度+null标识

相关推荐
m0_7066532311 分钟前
开源键值存储数据库如何实现微秒级响应
数据库
小宇的天下12 分钟前
Calibre LVS Circuit Comparison(1)
linux·数据库·lvs
羊小猪~~18 分钟前
【QT】-- 模型与视图简介
开发语言·数据库·c++·后端·qt·前端框架·个人开发
曲幽19 分钟前
FastAPI里玩转Redis和数据库的正确姿势,别让异步任务把你坑哭了!
redis·python·mysql·fastapi·web·celery·sqlalchemy·task·backgroundtask
荒川之神35 分钟前
ORACLE 参数文件损坏恢复实例
数据库·oracle
拂晓神剑zzz36 分钟前
Neo4j图数据库
数据库·neo4j
鬼蛟44 分钟前
Redis
数据库·redis·缓存
Ricky_Theseus1 小时前
SPOOLING 系统详解
linux·服务器·数据库
HUGu RGIN1 小时前
Redis 下载与安装 教程 windows版
数据库·windows·redis
卢光庆1 小时前
aardio - wsock.tcp.simpleHttpServer 访问数据库例程
数据库