暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MYSQL调优-合理使用范式和反范式

懒人实录 2021-08-27
283

范式

  • 第一范式

           排除 重复组 的出现,因此要求数据库的每个列的值域都由原子值组成;每个字段的值都只能是单一值

  • 第二范式

          表中必须存在业务主键,并且非主键依赖于全部业务主键。

  • 第三范式

          表中的非主键列之间不能相互依赖

反范式

       反范式的过程就是通过冗余数据来提高查询性能,但冗余数据会牺牲数据一致性


范式:

优点:

  • 范式化的更新通常比反范式要快

  • 当数据较好的范式化后,很少或者没有重复的数据

  • 范式化的数据比较小,可以放在内存中,操作比较快

缺点:

  • 通常需要进行关联

反范式:

优点:

  • 所有的数据都在同一张表中,可以避免关联

  • 可以设计有效的索引

缺点:

  • 表格内的冗余较多,删除数据时候会造成表有些有用的信息丢失


注意点:

在企业中很好能做到严格意义上的范式或者反范式,一般需要混合使用

如:

1、另一个从父表冗余一些数据到子表的理由是排序的需要。

2、缓存衍生值也是有用的。如果需要显示每个用户发了多少消息(类似论坛的),可以每次执行一个昂贵的自查询来计算并显示它;也可以在user表中建一个num_messages列,每当用户发新消息时更新这个值。

范式设计:

反范式设计:



文章转载自懒人实录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论