首页 > 数据库 >Mysql Varchar(n) 占用字符、字节数浅析

Mysql Varchar(n) 占用字符、字节数浅析

时间:2023-11-27 11:33:40浏览次数:33  
标签:Varchar 字节 字节数 32 占用 字符集 varchar 浅析

一、概述

varchar(n) 括号中的 n 代表最大可容纳的字符的个数,注意,并不是代表字节的个数

一个中文和一个英文都是一个字符,只不过 mysql 的编码格式不同时,一个英文和一个中文所占用的存储字节数不同,一个英文字符占用的字节数是 1,中文字符和英文字符不同,以下是常用的编码格式下中文字符所占用的字节数

  • gbk: 一个中文占用 2 Byte
  • utf8: 一个中文占用 3 Byte
  • utf8mb4: 一个中文占用 4 Byte

 

二、案例分析

需要强调一点,varchar(n) 列显示的存储需要比实际字符要多 1 或者 2,这是因为 varchar 类型要用一个到两个字节来记录字节长度,如果 n < 255 时,用一个字节记录,n > 255 时,使用两个字节记录

字段类型为 varchar(32),32 代表的什么?
32 代表的是 32 个字符,不是 32 个字节

字段类型为 varchar(32),在 gbk 字符集下,最多可以存多少英文,占用多少字节?
32 个英文,占用字节数 32 * 1 + 1 = 33 个字节
字段类型为 varchar(32),在 gbk 字符集下,最多可以存多少汉字,占用多少字节?
32 个汉字,占用字节数 32 * 2 + 1 = 65 个字节

字段类型为 varchar(32),在 utf8 字符集下,最多可以存多少英文,占用多少字节?
32 个英文,占用字节数 32 * 1 + 1 = 33 个字节
字段类型为 varchar(32),在 utf8 字符集下,最多可以存多少汉字,占用多少字节?
32 个汉字,占用字节数 32 * 3 + 1 = 97 个字节

字段类型为 varchar(32),在 utf8mb4 字符集下,最多可以存多少英文,占用多少字节?
32 个英文,占用字节数 32 * 1 + 1 = 33 个字节
字段类型为 varchar(32),在 utf8mb4 字符集下,最多可以存多少汉字,占用多少字节?
32 个汉字,占用字节数 32 * 4 + 1 = 129 个字节

字段类型为 varchar(32),在 utf8 字符集下,"小a2大A2" 占用多少字符,占用多少字节?
6 个字符,3 + 1 + 1 + 3 + 1 + 1 + 1 = 11 个字节

 

三、如何选择合适的字符集

  • 如果是内部人员使用,则使用 gbk,节省空间和带宽
  • 如果有交互,则使用 utf8
  • 如果需要支持特殊字符,例如 emoji 表情,则使用 utf8mb4

 

标签:Varchar,字节,字节数,32,占用,字符集,varchar,浅析
From: https://www.cnblogs.com/xiaomaomao/p/17858922.html

相关文章

  • husky 源码浅析
    前言我们在上一篇中讲了自定义GitHook,那么前端同学有没有对husky的工作原理产生好奇呢,为什么husky可以让git执行他指定目录下的hooks目录呢?我们这一篇文章就带大家通过源码分析一下husky的工作原理,同时基于husky源码我们拓展讲一下如何使用Node.js编写cli......
  • 浅析基于智能音视频技术的城市重要场馆智能监控系统设计
    了解旭帆科技的朋友都知道,旭帆科技一直都乐于和大家分享各类场景的视频解决方案,今天小编就基于智能音视频技术的城市重要场馆智能监控系统设计和大家探讨一下。基于智能音视频技术的城市重要场馆智能监控系统设计,主要包含以下要素:1、视频监控系统在重要场馆的关键位置布置高......
  • 浅析智慧社区建设趋势及AI大数据监管平台方案设计
    一、背景与需求伴随着社会与经济的发展,人们对生活质量的要求越来越高,与此同时,新兴技术的进步也促进了智慧社区市场的逐步成熟。智慧社区是社区管理的一种新理念,是新形势下城市与社会管理的一种创新模式。在上海、杭州、深圳、苏州、北京等城市中,已经率先开启了智慧社区建设的实......
  • 浅析智慧社区建设趋势及AI大数据监管平台方案设计
    一、背景与需求伴随着社会与经济的发展,人们对生活质量的要求越来越高,与此同时,新兴技术的进步也促进了智慧社区市场的逐步成熟。智慧社区是社区管理的一种新理念,是新形势下城市与社会管理的一种创新模式。在上海、杭州、深圳、苏州、北京等城市中,已经率先开启了智慧社区建设的实践。......
  • js如何计算字符串的字节数
    如果计算字符长度只需要使用length,letstr="hello世界";console.log(str.length)//7如何计算所占用的字节数呢?functiongetByteLength(str){letlength=0;for(leti=0;i<str.length;i++){letcharCode=s......
  • 浅析开源数据库MySQL架构
    数据库是所有应用系统的核心,故保证数据库稳定、高效、安全地运行是所有企业日常工作的重中之重。数据库系统一旦出现问题无法提供服务,有可能导致整个系统都无法继续工作。所以,一个成功的数据库架构在高可用设计方面也是需要充分考虑的。下面就为大家介绍一下如何构建一个高可用的M......
  • JavaWeb--响应字符&字节数据
    Response响应字符数据 //text/html解码html,charset解码汉字response.setContentType("text/html;charset=utf-8");//1、获取字符输入流PrintWriterwriter=response.getWriter();writer.write("你好");writer.write("<h1>124</h1>");响应字节数据添加一个i......
  • MySQL Shell连接数据库报MySQL Error 1045 (28000)错误浅析
    这里简单总结一下mysqlshell访问数据库时报MySQLError1045(28000):Accessdeniedforuser'root'@'::1'(usingpassword:YES)的原因以及如何解决这个问题这里测试的环境为MySQL8.0.35,我们先来看看报错案例:$ mysqlsh -h localhost -P 7306 -u root -pPlease pr......
  • .NET6中的await原理浅析
    前言看过不少关于await的原理的文章,也知道背后是编译器给转成了状态机实现的,但是具体是怎么完成的,回调又是如何衔接的,一直都没有搞清楚,这次下定决心把源码自己跑了下,终于豁然开朗了本文的演示代码基于VS2022+.NET6示例publicclassProgram{staticint......
  • 浅析三维模型重建的地面控制点精度常见的几个问题及解决方法
    浅析三维模型重建的地面控制点精度常见的几个问题及解决方法 在倾斜摄影三维模型重建过程中,地面控制点的精度是影响模型几何精度的关键因素之一。以下是常见的问题及相应的解决方法:1、问题:地面控制点坐标测量误差较大。解决方法:确保使用高精度的测量仪器进行地面控制点的测......