VVL1295

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

数据库设计优化

  1,范式与反范式

    范式化:

      优点:1,更快地更新;

         2,更少的重复数据,节省所需的存储空间;

           3,范式化的表通常更小,更好地放在内存,执行操作会更快;

         4,很少有多余的数据意味着检索列表数据时更少需要 DINSTINCT 或者 GROUP BY 语句;

         5,某程度上避免了脏数据,因为冗余的情况下,其中一方改变冗余的数据,另一方不改变,就会出现脏数据;

      缺点:1,查询时通常需要关联,查询代价昂贵;

 

    反范式化:

      优点:1,很好地避免了连表查询;

      缺点:对应范式化的优点;

    总结:应该混合使用,极端地只使用一种模式通常都不好,按业务场景混合使用,通常范式化的表查询时要注意分页,反范式化的表大批量的更新首选任务队列;

  2,缓存表与汇总表

    汇总表,就是应对业务场景中,需要把某项数据累加的需求,而且要较准确地呈现给用户,返回某个范围的总和,这个查询的代价是昂贵的,因为要扫描很多行数据,可以选择这种做法:

      例如,有 messgae 表,在网页上要呈现出过去24小时里消息总数,加一个汇总表处理这种情况(有时候就      需要这些“零散的表”,为了性能很必要,数据库开发就是需要“trick”,),表名为“msg_per_hr”,字段有       “hr”(主键,值为小时),有“conut”(值为该小时的消息总数,应用程序中每发送一条消息,对应的 count       就加一),然后查询总数时,查询这个“msg_per_hr”即可,即可大大地降低开销;

    缓存表,存储冗余的数据,提高查询的效率,

    

posted on 2017-06-05 18:54  bobo2018  阅读(97)  评论(0)    收藏  举报