4Schema与数据类型优化

原则

尽量小,简单,避免null

ID列

统一用BIGINT类型
不能用字符串当做ID存储.insert慢(不连续),select也慢

Schema设计陷阱

1太多的列 -> 转换代价高
2太多的关联 -> 尽量避免关联
3枚举类型
4变相的null

范式和反范式 -> 要混用,保持一定数据的冗余

优点:写密集场景性能高
缺点:一般情况都需要关联

技巧

1可以用CQRS模式将查询服务和写服务分离
2通过缓存表和统计表解决复杂查询与统计的问题
3通过数据行加槽(slot)将一行数据分解到多行,降低并发(避免行锁).后面再用异步汇总

如:update hit_count set cnt=cnt+1 where slot = RAND() * 100 -> 相当于加了100个槽,将更新的数据分散到槽内

4Alter Table大部分修改表结构的方法都是新建一张表,从旧表查所有的数据再插入到新表,然后删除旧表,所以大部分都很慢,可以主库切换(从无流量表结构修改),影子拷贝(新建表,重命名,删表)更平滑的过度

数据库类型总结

数据类型,常用的用蓝色标出

你可能感兴趣的:(4Schema与数据类型优化)