美文网首页
第四章 Schema与数据类型优化

第四章 Schema与数据类型优化

作者: 魅猫之 | 来源:发表于2020-02-16 22:45 被阅读0次

1、数据类型的选择

  • 变小的通常更好

例如varchar,占用空间小,不过最好要确定值的范围

  • 简单就好

例如通常数字比字符简单,日期用内置的日期类型

  • 尽量避免NULL

对于MySQL而言更难优化,无法使用索引,更多的储存空间

1.1 整数类型

能确定是正整数的话,尽量用unsigned,整数类型的宽度,如INT(11)是没有意义的,只是给交互工具显示的

1.2 实数

如果需要对小数进行精确计算就使用DECIMAL
场景:财务数据;数据量大时,可以考虑使用BIGINT代替DECIMAL

1.3 字符串类型

VARCHAR

可变长的字符串,节省空间,太长容易产生碎片
场景:字符串列的最大长度比平均长度大很多;列的更新很少,所以碎片不是问题;使用了像UTF-8这样复杂的字符集,每个字符都使用不同的字符数进行储存
策略:只分配真正需要的空间

CHAR

定长字符串,储存短并且固定的字符串效率非常高,而且不会产生碎片
场景:固定长度的列,比如CHAR(1)储存Y、N

BLOB和TEXT

BLOB和TEXT都是为储存很大的数据而设计的字符串类型,分别采用二进制和字符方式储存;当BLOB和TEXT值太大时,InnoDB会使用专门的“外部”储存区域来进行储存,需要1~4个字节储存一个指针

BLOB储存的是二进制数据,没有排序规则和字符集,而TEXT类型有字符集和排序规则,MySQL不能将BLOB和TEXT列全部长度的字符串进行索引;如果对BLOB和TEXT类型字段进行排序会非常慢,最好是别用,如果一定要用那就使用substring后再排序;

ENUM

放弃它吧!

1.4 日期和时间类型

日期时间类型没有代替品,使用看场景
DATETIME

保存范围大,1001年到9999年,精度为秒,以整数储存,格式为YYYYMMDDHHMMSS,与时区无关

TIMESTAMP

范围是1970年到2038年,从“1970-1-1 00:00:00”开始,它和UNIX时间戳相同;默认是NOT NULL;通常应该尽量使用TIMESTAMP空间效率比DATETIME高;与时区有关;尽量在MySQL连接串上定义时区参数;

1.5 位数据类型

也放弃它吧!

1.6 选择标识符(ID)

优先使用整数

字符串类型
避免使用MD5、SHA1、UUID生成的字符串作为主键,不然INSERT语句会变慢,页分裂、磁盘随机访问;SELECT也会变慢;如果一定要出差UUID,应移除“-”,更好的做法是,用UNHEX()函数转换UUID值为16字节的数字

2、MySQL schema设计中的陷阱

  • 太多的列

MySQL储存引擎API工作时需要在服务器层和储存引擎之间通过行缓冲格式拷贝数据,然后在服务器层将缓冲内容解码成各个列

  • 太多的关联

MySQL限制每个关联操作最多只能有61张表,最好是12个表以内做关联

  • 使用枚举

放弃它吧!

3、范式和反范式

!!!极端的做法只有在实验室中存在!!!

多使用缓存表汇总表

相关文章

  • 高性能MySql

    第四章 schema与数据类型优化 数据类型:1、varchar,字符串列的最大长度比平均长度大和诺,适合用var...

  • MySQL Schema与数据类型优化

    Schema与数据类型优化 选择优化的数据类型 1.更小的通常更好 更小的数据类型通常更快,因为它们占用更少的磁盘...

  • 《高性能MySQL》笔记(1)——Schema与数据类型优化

    Schema与数据类型优化 最常用的数据类型分类 数字(int、decimal) 字符串(varchar、char...

  • mysql 性能监控

    性能监控 Schema与数据类型优化 数据类型的优化 更好的通常更好 简单就好 整型字符操作代价更低,因为字符集和...

  • mysql--各层面优化方式总结

    schema与数据类型优化: 1.选择正确存储数据的最小类型。( tinyint 与 int,占用更少的磁盘,内存...

  • 高性能MySQL分析

    Schema与数据类型优化 选择优化的数据类型 有几个简单的原则: 更小的通常更好一般情况下使用可以正确存储数据的...

  • MySQL性能优化

    Schema与数据类型优化 选择数据类型原则更小的通常更好更小的数据类型通常更快,因为它们占用更少的磁盘、内存和C...

  • Schema与数据类型优化

    我们在定义表结构时或者在对表进行修改时,需要注意一些东西 数据类型 使用越大数据类型,则会使用更多的内存,所以在选...

  • 高性能MySQL第四章 读书笔记

    第4章 Schema与数据类型优化 数据类型的设定原则应该遵循更小的往往更好,越简单越好(如能用data就用dat...

  • 第四章、Schema与数据类型优化

    前言 这一章主要为接下来的两章《创建高性能的索引》和《查询性能优化》做铺垫,这三章是mysql性能优化的核心内容,...

网友评论

      本文标题:第四章 Schema与数据类型优化

      本文链接:https://www.haomeiwen.com/subject/qanmfhtx.html