前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Mysql小细节:varchar与char在性能上的特点

Mysql小细节:varchar与char在性能上的特点

作者头像
dys
发布2018-04-03 17:45:19
2.6K0
发布2018-04-03 17:45:19
举报
文章被收录于专栏:性能与架构性能与架构

varchar与char的一个主要区别是存储方式的不同

varchar 是变长存储

占用的存储空间 = 存储内容实际大小 + 长度记录位

char 是定长存储

占用的存储空间 = 字段声明的宽度

存储方式对性能是有影响的

例如

分别使用 varchar(10)varchar(255) 定义一个字段,实际存储的字符串为 “abcde

在存储空间方面,他们没有区别,因为 varchar 是变长存储,只占用实际内容的宽度

但在查询时,他们就有区别了,会占用不同的内存空间

因为执行查询时,mysql为了优化查询,在内存中对字符串会使用固定的宽度,所以定义的宽度越长,就会消耗更多的内存

存储方式对I/O性能也有影响,如果使用 varchar 定义了字段,此字段内容还是更新频繁的,例如开始是个长字符串,后来更新为一个短字符串,因为 varchar 占用空间就是字符串实际宽度,那么这时就产生了碎片空间

而 char 类型是定长存储,就不会产生存储碎片,有更好的I/O性能

不少开发人员对 varchar 与 char 的使用上存在误区,喜欢用 varchar,不喜欢用 char,使用 varchar 时也喜欢直接定义一个很大的宽度,担心实际使用时宽度不够,通过了解他们各自的特点,有助于更好的选择合适的类型

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-07-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 JAVA高性能架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档