MySql性能优化(一)数据类型优化

开个新坑,也算是自己重新梳理一遍mysql优化的知识点

数据类型优化

一、更小的通常更好

varchar(x(x<255)) 与 varchar(255)保存同样的内容,磁盘存储空间相同,但是内存占用不同
(尽量使用能满足条件小的数据)

二、简单就好

类似于复杂的数据类型,可以将其转换成简单的数据类型存储。比如ip地址,可以使用INET_ATON(‘ip地址’)进行转义存储,存储空间降下来了,但是也会降低数据库可读性,这个需要权衡一下进行使用

三、尽量避免null

尽量不要允许列为null,null列会让索引统计啥的比较困难

四、实际类型-整型

TINYINT\SMALLINT\MEDIUMINT\INT\BIGIND
8位     \ 16位   \24位     \32位\64位
尽量使用能够满足业务需求的最小的数据类型

五、字符字符串类型

varchar 变长字符串
1.使用最小的需求长度
2.varchar(n) n<=255时使用一个字节保存数据,n>255时会使用额外两个字节保存数据
3.varchar(x(x<255)) 与 varchar(255)保存同样的内容,磁盘存储空间相同,但是内存占用不同
4.varchar在mysql5.6之前,从255一下变成255以上时,会导致锁表

应用场景

  1.存储长度波动大
  2.字符串更新少
  3.多字节字符(汉字特殊字符)
char

1.char会自动删除字符结尾的空格(有坑,留神勿踩)

2.最大长度255
3.检索效率,写效率比varchar高

应用场景
1.存储长度波动不大的数据,比如md5摘要
2.存储短字符串,经常更新的字符串

六、字符型BLOB/TEXT

mysql当中将blob和text当对象存储,分别以二进制和字符等形式编辑
应用场景

 一般不建议使用,假如使用,建议独立分表,不影响主表的查询效率(文本等信息不如直接整个文档写进去,上传服务器或者云厂商,存个文档地址)

七、时间戳

datetime
1.8字结
2.与时区无关
3.毫秒级别精度
4.可保存时间范围大
timestamp
1.4字节
2.时间范围 1970-01-01到2038-01-19
3.精确到秒
4.采用整型存储
5.依赖数据库时区
6.自动更新timestamp值
date
1.3字节
2.使用date类型可以使用日期函数进行日期之间的计算
3.date类型用于保存1000-01-01到9999-12-31之间的日期
枚举类

使用枚举类型代替字符串,Mysql存储enum类型会非常紧凑(底层存储的就是整型1-n)

补充知识点(字符集的选择)

1.utf8 根据不同的范围进行不同字节数存储 mysql设置utf8只能存储2字节的中文,3字节等会乱码,建议换utf8mb4

2.纯拉丁字母能表示的内容,没必要选择latin1之外的其他字符编码,因为这样会节省大量存储空间

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值