流殃的博客

| Comments

  1. 打破范式设计,冗余少量字段方便查询,需要注意源表和冗余表保证同一事务写。

    需要注意的是 此时对于插入和更新操作提示了更高的要求,此设计适用于插入和更新这些字段不是非常频繁的场景,原因在于 让插入和更新的事务扩大了一倍,如果插入和更新非常频繁,可能会造成性能损耗。

  2. 关联关系在业务层面约束,不依赖数据库外键

    不依赖数据库外键的好处非常明显,就是所有的操作都是单表操作,那么对于数据库的操作就会很快

  3. 字段拓展性,如模板信息这种结构不清晰的字段使用json类型,json检索的问题我的想法是少量key使用虚拟列并建立索引,多条件检索直接异构es

  4. 冷热分离,源表拆分成多张表,可以把频繁变更的字段放在主表,使用率较低的放在副表,判断依据可以是创建时间、业务域

  5. 服务拆分在分片字段选择上尽量考虑使用本地事务,让同业务的不同sql命中同一个分表,以避免使用分布式事务

  6. 尽量使用单表维度sql,原因:join性能差,后期分库分表更方便,前瞻性设计要考虑使用哪种ID主键策略

Comments

评论