数据库设计优化
1,范式与反范式
范式化:
优点:1,更快地更新;
2,更少的重复数据,节省所需的存储空间;
3,范式化的表通常更小,更好地放在内存,执行操作会更快;
4,很少有多余的数据意味着检索列表数据时更少需要 DINSTINCT 或者 GROUP BY 语句;
5,某程度上避免了脏数据,因为冗余的情况下,其中一方改变冗余的数据,另一方不改变,就会出现脏数据;
缺点:1,查询时通常需要关联,查询代价昂贵;
反范式化:
优点:1,很好地避免了连表查询;
缺点:对应范式化的优点;
总结:应该混合使用,极端地只使用一种模式通常都不好,按业务场景混合使用,通常范式化的表查询时要注意分页,反范式化的表大批量的更新首选任务队列;
2,缓存表与汇总表
汇总表,就是应对业务场景中,需要把某项数据累加的需求,而且要较准确地呈现给用户,返回某个范围的总和,这个查询的代价是昂贵的,因为要扫描很多行数据,可以选择这种做法:
例如,有 messgae 表,在网页上要呈现出过去24小时里消息总数,加一个汇总表处理这种情况(有时候就 需要这些“零散的表”,为了性能很必要,数据库开发就是需要“trick”,),表名为“msg_per_hr”,字段有 “hr”(主键,值为小时),有“conut”(值为该小时的消息总数,应用程序中每发送一条消息,对应的 count 就加一),然后查询总数时,查询这个“msg_per_hr”即可,即可大大地降低开销;
缓存表,存储冗余的数据,提高查询的效率,
浙公网安备 33010602011771号