已实现视图 GSoC 2010

来自 PostgreSQL 维基
跳转至导航跳转至搜索

概述

已实现视图 (MV) 是一种优化技术,其行为类似于缓存。经典视图是虚拟表,而 MV 是基于视图定义的真实表。通过创建一个 MV,你可以预先计算代价较高的查询以加速某些查询。

已实现视图是由 Oracle、DB2、SQL Anywhere 或 SQL Server 等领先的数据库系统实现的一项非常有用的功能,并且是 PostgreSQL [1] 中由用户请求最多的功能。

学生姓名:Pavel Baroš
导师姓名:Robert Haas

可交付成果

总的思路是在今年夏天实现所谓的快照 MV。快照已实现视图通过重建 MV 定义来刷新特殊刷新命令。

此项目可分为三个主要步骤

  1. 创建 MV
    • 更改语法
CREATE MATERIALIZED VIEW .. 
    • 确保后端创建表、在 pg_class 中制作记录等。
  1. 在 SELECT 中使用
    • 了解后端(规则系统)以便在 SELECT 命令中使用 MV(在 SELECT 中使用时,从 MV 中获取行,而不是用视图定义重写)
  1. 创建刷新命令
    • 再次更改语法
ALTER MATERIALIZED VIEW mvname REFRESH
    • 对命令进行更改

时间表

5 月 31 日前

  • 与社区讨论关于实现的具体事项
  • 阅读代码(尤其是了解新版本 9.0)

6 月 1 日 - 6 月 15 日

  • 实现新的关系种类
  • 更改创建 mv 的语法
  • 创建 mv(物理表),将元组保存到 pg_class 中

6 月 16 日 - 6 月 30 日

  • 更改刷新命令的语法
  • 考虑适用于 MV 的新系统规则
  • 更改规则系统 - 后端应将 MV 视为表

7 月 1 日 - 7 月 15 日

  • 创建刷新命令 - 考虑并实现它可以工作的方式
  • 进行其他更改 - psql、pg_dump 等。
  • 进行回归测试、测试案例

7 月 16 日 - 8 月 9 日

  • 考虑可扩展性,以获得更好的 MV
  • 代码审查
  • 对 psql、pg_dump 等进行测试。

8 月 10 日 - 8 月 16 日

  • 测试和提交

相关 pgsql-hackers 帖子