mysql性能优化之基础数据类型优化(一)

本系列文章参考书籍《高性能MySQL》
阿里java开发规范
背景:初入java的殿堂已经一年多了,算是成为了一位初级开发工程师吧,然而成为中高级开发工程师甚至架构师,仍然需要不断的学习和进步才行。今年暂定目标是,性能优化,做阅读源码的准备,阅读部分spring源码,学习jvm并实践,对权限认证框架进行项目实践,分享学习和工作中的心得。
详细的各种概念就不叙述了,直接上手能用的。
基础数据类型优化:
数据类型优化常用于建表之初
一):
1)尽量明确字段的数据类。比如: 日期,整数等要明确其数据类型,不能都赋予字符串类型。
2)经常作为条件查询的字段尽量不要使用null,可以设置默认值。
比如:在sql语句中作为查询的条件字段 "where apple_num > 50 " apple_num是数据库的一个字段,初始化时若没有明确数量可以设置默认为0
理由: null的列被索引时,每个索引记录需要一个额外的字节。
其他: 建立字段的时候尽量将null设置为not null
二):
具体常用数据类型优化:
1.整数类型
mysql常见: TINYINT, SMALLINT, MEDINUMINT, ,INT,BIGNINT,分别使用8,16,24,32,64位存储空间.
1个字节(1byte)= 8位
存储的范围是 -2^(N-1)
到2^(N-1)-1, N是位数.
整数类型的字段尽量选取合适的,如果是非负数,使用
unsigned修饰的。

mysql性能优化之基础数据类型优化(一)_第1张图片
2.实数类型
实数是带有小数部分的数字,比如:double,float,decimal
,尽量使用decimal,因为其他两个可能有精度遗失。
3.字符串类型
字符串类型主要分为
varchar和char。varchar是可变的字符串类型0~4294967295,char是定长的,长度范围0-255,最大长度255,比如: char(10) 和varchar(10),定义都定义字对应符串长度是10, 这个长度即是字节。长度是10个字节。现在char(10) 和varchar(10)都存储一个长度为3的字符串,则char(10)对应的长度仍然是10,而后者是3。可以发现varcahr(10)对应存储的长度是经过计算的,由10->3所以,这个步骤是需要花费时间计算的。
如: ID,标识符等,尽量都使用char这种长度是明确的,不会超过。
只知道大概范围长度时,使用varchar尽量分配真正需要的空间,如一个备注改该范围是200-300,可以定义为varchar(300),但是尽量不要定义为varchar(500)。
varchar长度不要超过 5000,如果存储长
度大于此值,定义字段类型为 text,独立出来一张表,用主键来对应,避免影响其它字段索
引效率。
4.日期和时间类型
常见datetime,timestamp。
datetime不受时区影响, 对于timestamp,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回(中国属于东八区,所以应该是UTC+8)。而对于datetime,不做任何改变,基本上是原样输入和输出。
推荐使用的timestamp,他比datetime空间效率更高,且默认字段时是当前时间,不会造成null的情况。
如有不足之处,欢迎指正。

你可能感兴趣的:(mysql性能优化,mysql,sql)