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标识

相关推荐
互联网搬砖老肖5 分钟前
运维打铁: MongoDB 数据库集群搭建与管理
运维·数据库·mongodb
典学长编程1 小时前
数据库Oracle从入门到精通!第四天(并发、锁、视图)
数据库·oracle
积跬步,慕至千里1 小时前
clickhouse数据库表和doris数据库表迁移starrocks数据库时建表注意事项总结
数据库·clickhouse
极限实验室2 小时前
搭建持久化的 INFINI Console 与 Easysearch 容器环境
数据库
星辰离彬2 小时前
Java 与 MySQL 性能优化:Java应用中MySQL慢SQL诊断与优化实战
java·后端·sql·mysql·性能优化
白仑色2 小时前
Oracle PL/SQL 编程基础详解(从块结构到游标操作)
数据库·oracle·数据库开发·存储过程·plsql编程
程序猿小D4 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的个人财务管理系统,推荐!
java·数据库·mysql·spring·毕业论文·ssm框架·个人财务管理系统
钢铁男儿5 小时前
C# 接口(什么是接口)
java·数据库·c#
__风__5 小时前
PostgreSQL kv(jsonb)存储
数据库·postgresql
轩情吖5 小时前
Qt的第一个程序(2)
服务器·数据库·qt·qt creator·qlineedit·hello world·编辑框