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

数据库类型总结

数据类型,常用的用蓝色标出
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。