mysql varchar 大小及含义

        今天被一个哥们忽悠了,我们有一个配置文件放在一个哥们的服务上,随着业务的发展,配置文件会越来越大,我问最大能支持多大,哥们说10w字符,我说怎么实现的,哥们说放在mysql里边,varchar(100000)实现的,主要是我还相信了,惭愧惭愧!

        我是怎么发现varchar(100000)有问题的呢,因为我想测试下mysql的varchar(n)是字节数还是字符数,我记得是字符数,但线上业务不敢乱猜,还是要试下,我是这么做的。

测试表如下

CREATE TABLE `person` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(5) DEFAULT NULL,
  `passwd` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

        看这个例子,我在username里插入6个及以上中文是不可以的,5个及以下可以,因为中文占用不止一个字节,所以varchar指的是字符数,不是字节数,字节数要根据字符集换算一下,具体怎么换算我没深究。
在这里插入图片描述
        utf8字符集的时候,varchar长度上限21845,实际会比21845少几个字节,因为有储存长度的字节。
在这里插入图片描述
        修改为latin1在试下,varchar长度上限显示是65535,同理实际会比65535少几个字节,因为有储存长度的字节。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值