物化视图
许多数据库管理系统(例如Oracle 或者微软SQL Server)都提供了一个被称作物化视图的功能物化视图实际上是预先计算并且存储在磁盘上的表可以通过各种各样的策略刷新和更新MySQL 并不原生支持物化视图(我们将在第 章详细探讨支持这种视图的细节)然而使用Justin Swanhart 的开源工具Flexviews(http://codegooglecom/p/flexviews/)也可以自己实现物化视图Flexviews 比完全自己实现的解决方案要更精细并且提供了很多不错的功能使得可以更简单地创建和维护物化视图它由下面这些部分组成
变更数据抓取(Change Data Capturey CDC)功能可以读取服务器的二进制日志并且解析相关行的变更
一系列可以帮助创建和管理视图的定义的存储过程
一些可以应用变更到数据库中的物化视图的工具
对比传统的维护汇总表和缓存表的方法Flexviews 通过提取对源表的更改可以增量地重新计算物化视图的内容这意味着不需要通过查询原始数据来更新视图例如如果创建了一张汇总表用于计算每个分组的行数此后增加了一行数据到源表中Flexviews简单地给相应的组的行数加一即可同样的技术对其他的聚合函数也有效例如SUM()和AVG()这实际上是有好处的基于行的二进制日志包含行更新前后的镜像所以Flexviews 不仅仅可以获得每行的新值还可以不需要查找源表就能知道每行数据的旧版本计算增量数据比从源表中读取数据的效率要高得多
因为版面的限制这里我们不会完整地探讨怎么使用Flexviews但是可以给出一个概略先写出一个SELECT 语句描述想从已经存在的数据库中得到的数据这可能包含关联和聚合(GROUP BY)Flexviews 中有一个辅助工具可以转换SQL 语句到Flexviews 的API 调用Flexviews 会做完所有的髒活累活监控数据库的变更并且转换后用于更新存储物化视图的表现在应用可以简单地查询物化视图来替代查询需要检索的表
Flexviews 有不错的SQL 覆盖范围包括一些棘手的表达式你可能没有料到一个工具可以在MySQL 服务器之外处理这些工作这一点对创建基于复杂SQL 表达式的视图很有用可以用基于物化视图的简单快速的查询替换原来复杂的查询
返回目录高性能MySQL
编辑推荐
ASPNET MVC 框架揭秘
Oracle索引技术
ASP NET开发培训视频教程
数据仓库与数据挖掘培训视频教程