缓存表和汇总表

提升性能最好的方式是在同一张表中保存衍生的冗余数据。有时候,也需要创建一张完全独立的汇总表或缓存表。建立汇总表的原因就在于:无论是通过粗略的统计计算还是严格的计数,都比计算原始表的所有行有效的多。建立缓存表的原因则是优化检索和查询语句,这些查询语句经常需要特殊的表和索引,跟普通的OLTP操作表有一些区别。

可能会需要很多不同的索引组合来加速各种类型的查询,可以根据业务的需求,对缓存表使用不同的存储引擎,甚至可以把整个表导出,插入到专门的搜索系统中获得更高的搜索效率(例如Lucene或者Sphinx)。在使用缓存表和汇总表时,必须决定是实时维护还是定期重建。当重建汇总表的时候,需要保证数据在操作时依然可以使用,这就需要通过影子表来进行实现。(重命名替换)。

物化视图

物化视图实际上是预先计算并且存储在磁盘上的表,可以通过各种各样的策略刷新和更新。对比与传统的缓存表和汇总表的方法,物化视图通过提取对源表的更改,可以增量式的重新计算物化视图的内容。

  • 变更数据抓取功能,可以读取服务器的二进制日志并且解析相关行的变更
  • 一系列可以帮助创建和管理视图的定义的存储过程
  • 一些可以应用变更更到数据库中的物化视图工具

为了提升读查询速度,经常会需要建一些额外的索引,增加冗余列,甚至是创建缓存表和汇总表,这些方法会增加查询的负担,也需要额外的维护任务,但在设计高性能数据库时,这些都是常见的技巧:虽然写操作变得更慢了,但是显著地提高了读操作的性能。然而,写操作变慢并不是读操作变快所付出的唯一代价,还可能同时增加了读操作和写操作的开发难度。

posted @ 2017-03-30 16:56  Ant°  阅读(1122)  评论(0编辑  收藏  举报