`

mv(materialized view)的一点测试

 
阅读更多

mv在实现简单的数据同步和数据迁移时非常方便。

是一种空间换时间的思想或者说是一种化整为零的处理思想。

 

SQL> show user
USER is "TEST"
--测试一下fast刷新,fast刷新(是指增量刷新)一定要创建materialzed view log

--==========================================
SQL> create MATERIALIZED view log on t tablespace users;

Materialized view log created.

SQL> create materialized view mv_t tablespace users refresh fast as select * from t ;

Materialized view created.

SQL> select * from mv_t;

no rows selected

SQL> select * from t;

no rows selected

SQL> desc t
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(38)
NAME VARCHAR2(10)

SQL> insert into t values(1,'a');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from t;

ID NAME
---------- ----------
1 a

SQL> select * from mv_t;

no rows selected

SQL> exec dbms_mview.refresh('mv_t');

PL/SQL procedure successfully completed.

SQL> select * from mv_t;

ID NAME
---------- ----------
1 a

SQL> insert into t values(2,'a');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from mv_t;

ID NAME
---------- ----------
1 a

SQL> exec dbms_mview.refresh('mv_t');

PL/SQL procedure successfully completed.

SQL> select * from mv_t;

ID NAME
---------- ----------
1 a
2 a

SQL> insert into t values(3,'a');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from mv_t;

ID NAME
---------- ----------
1 a
2 a

SQL> exec dbms_mview.refresh('mv_t');

PL/SQL procedure successfully completed.

SQL> select * from mv_t;

ID NAME
---------- ----------
1 a
2 a
3 a
--=====================================================
--测试一下on commit刷新方式
SQL> create materialized view mv_t2 tablespace users refresh fast on commit as select * from t ;

Materialized view created.

SQL> select * from mv_t2;

ID NAME
---------- ----------
1 a
2 a
3 a
4 a
5 a
6 a

6 rows selected.

SQL> insert into t values(7,'a');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from mv_t2;

ID NAME
---------- ----------
1 a
2 a
3 a
4 a
5 a
6 a
7 a

7 rows selected.

SQL>
--=====================================
--测试一下oracle对实体化视图日志的自动维护
SQL> desc mlog$_t
Name Null? Type
----------------------------------------- -------- ----------------------------
ID NUMBER
SNAPTIME$$ DATE
DMLTYPE$$ VARCHAR2(1)
OLD_NEW$$ VARCHAR2(1)
CHANGE_VECTOR$$ RAW(255)

SQL> col CHANGE_VECTOR$$ format a10
SQL> select *from mlog$_t;

no rows selected

SQL> insert into t values(9,'a');

1 row created.
--插入数据之后mlog$_t里面记录了日志
SQL> select *from mlog$_t;

ID SNAPTIME$$ D O CHANGE_VEC
---------- ------------------- - - ----------
9 4000/01/01 00:00:00 I N FE

SQL> select * from mv_t2;

ID NAME
---------- ----------
1 a
2 a
3 a
4 a
5 a
6 a
7 a
8 a

8 rows selected.

SQL> commit;

Commit complete.

SQL> select * from mv_t2;

ID NAME
---------- ----------
1 a
2 a
3 a
4 a
5 a
6 a
7 a
8 a
9 a

9 rows selected.

SQL> select * from mv_t;

ID NAME
---------- ----------
1 a
2 a
3 a
4 a
6 a
5 a
8 a
7 a

8 rows selected.

SQL> exec dbms_mview.refresh('mv_t');

PL/SQL procedure successfully completed.

SQL> select * from mv_t;

ID NAME
---------- ----------
1 a
2 a
3 a
4 a
6 a
5 a
8 a
7 a
9 a

9 rows selected.

SQL> select *from mlog$_t;

no rows selected

SQL>
--很显然mv_t刷新之后oracle自动清除了mlog$_t里面的记录。也就是说实体化视图日志的内容
默认oracle是自动维护的。一个基本只能创建一个materialized view log,基于这张基表可以创建
若干materialized view,只要一个materialized view没有刷新完毕,materialized view log
中对应的记录就不会被清除。

分享到:
评论

相关推荐

    materialized_view基础知识

    CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; ``` 这里,`REFRESH FAST`意味着使用增量刷新,`START WITH`和`NEXT...

    PostgreSQL物化视图(materialized view)过程解析

    这篇文章主要介绍了PostgreSQL物化视图(materialized view)过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1、创建视图 CREATE MATERIALIZED VIEW ...

    oracle materialized view

    CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; ``` 2. ROWID物化视图:这类物化视图基于ROWID,适用于需要...

    视图上触发器 & Materialized View 物化视图

    本文将详细探讨"视图上触发器"以及"Materialized View(物化视图)",并结合提供的SQL脚本文件进行分析。 首先,视图是数据库中的一个虚拟表,它是由SQL查询语句定义的,不存储实际数据,而是根据其定义在运行时...

    MariaDB-Materialized-View

    材质化视图(Materialized View)是MariaDB中的一个重要特性,它提供了一种数据抽象和优化查询的方式。在此,我们将深入探讨MariaDB中材质化视图的概念、用途以及创建和管理的方法。 材质化视图不同于普通的数据库...

    tune materialized view

    dbms_advisor.tune_mview使用的例子

    创建物化视图ORA-12014错误解决方法

    在Oracle数据库中,物化视图(Materialized View)是一种用于优化查询性能的重要工具。它预先计算并存储了复杂的查询结果,从而在实际查询时能够快速地返回数据,大大提升了查询效率。然而,在创建物化视图的过程中...

    Oracle物化视图创建和使用

    CREATE MATERIALIZED VIEW MV_VIEW AS SELECT * FROM ... ``` 删除物化视图可以使用 DROP MATERIALIZED VIEW 语句,例如: ```sql DROP MATERIALIZED VIEW MV_VIEW ``` 物化视图可以设置自动刷新时间,例如: ```...

    PostgresQL-Materialized-View-Demo:PostgresQL中物化视图的演示脚本

    Postgres物化视图演示 设置 在您的机器上安装了postgresql 运行脚本 createdb your_database psql -f setup_scripts/00_setup.sql psql -d your_database 如果需要更多种子数据, bundle exec ruby dev.rb以为...

    数据库中的物化视图的使用保姆级

    CREATE MATERIALIZED VIEW mv AS select count(*) from t1; ``` 查询全量物化视图的结果: ``` SELECT * FROM mv; ``` 增量物化视图 增量物化视图可以对物化视图进行增量刷新,语法格式与 CREATE MATERIALIZED VIEW...

    oracle view

    CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; ``` 这里使用了`REFRESH FAST`选项,意味着需要为源表创建物化视图...

    Materialized views - Techniques, Implementaions and Applications

    ### 实视图(Materialized Views):技术、实现与应用 #### 概述 实视图是一种预先计算并存储的查询结果集,在数据库管理系统的优化、性能提升等方面扮演着至关重要的角色。本书《实视图——技术、实现与应用》由...

    一个漂亮Materialized和灵活的ReactSelect组件

    在本文中,我们将深入探讨如何利用React Select组件来构建美观且响应式的表单元素,以及如何利用其Materialized风格进行设计增强。 React Select的核心特性包括: 1. **高度可定制化**:React Select允许用户...

    ORACLE 物化视图 详解

    CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1/48 WITH PRIMARY KEY AS SELECT * FROM emp@remote_db; ``` 2. **Rowid物化视图** - **定义**:如果表没有定义主键...

    Oracle中管理物化视图变得更加容易

    在Oracle数据库中,物化视图(Materialized View, MV)是一种重要的性能优化工具,尤其在数据仓库和决策支持系统中。物化视图预先计算并存储了一个查询的结果,允许快速访问而不是每次需要时重新执行复杂的查询。在...

    测试sql性能的实例

    5. 使用数据库内置功能:如SQL Server的索引视图、物化视图,Oracle的materialized view等,可以预先计算并存储结果。 总结,SQL性能测试是数据库管理的重要环节,通过深入分析SQL语句的执行情况,我们可以找出性能...

    materialized_views:使用 ActiveRecord 创建自动更新的物化视图

    materialized_views ==================== 使用在 Postgres 中创建自动更新物化视图的方法扩展ActiveRecord::Migration 。 可以执行来检查物化视图是否与其非... materialize(materialized_view_name, view_defini

    PyPI 官网下载 | django-tree-materialized-0.0.1.tar.gz

    标题中的"PyPI 官网下载 | django-tree-materialized-0.0.1.tar.gz"表明这是一个在Python的包索引服务(PyPI)上发布的软件包,名为`django-tree-materialized`,版本号为0.0.1,且是以tar.gz格式提供的压缩文件。...

Global site tag (gtag.js) - Google Analytics