标签: materialized-views

如何判断Oracle中的物化视图是否正在使用?

我们的Oracle 9i数据库中有一些物化视图,这些视图是很久以前由一个不再在这里工作的人创建的.是否有一种简单(或任何)方法来确定Oracle是否使用这些视图来提供查询?如果它们不再被使用,我们想要摆脱它们.但是我们不想发现这些观点是允许一些随机报告在不到几个小时内运行的事实.我梦想的答案就像是

SELECT last_used_date FROM dba_magic
WHERE materialized_view_name = 'peters_mview'
Run Code Online (Sandbox Code Playgroud)

更棒的是可以告诉我实际的SQL查询使用物化视图的东西.我意识到我可能不得不满足于此.

如果有一个需要10g的解决方案,我们很快就会升级,所以这些答案也会很有用.

oracle materialized-views oracle9i

1
推荐指数
1
解决办法
3192
查看次数

物化视图强制并完成

物化视图中的强制刷新和完全刷新有什么区别

CREATE MATERIALIZED VIEW MV1 REFRESH FORCE ON DEMAND AS SELECT * FROM T1;
CREATE MATERIALIZED VIEW MV1 REFRESH COMPLETE ON DEMAND AS SELECT * FROM T1;
CREATE MATERIALIZED VIEW MV1 REFRESH ON DEMAND AS SELECT * FROM T1;
Run Code Online (Sandbox Code Playgroud)

需要这些陈述之间的简短区别吗?

sql oracle materialized-views

1
推荐指数
1
解决办法
3584
查看次数

刷新现有的物化视图

我创建了一个包含以下信息的物化视图.

CREATE MATERIALIZED VIEW EMPLOYEE_INFO
AS
SELECT * FROM EMPLOYEE_TABLE WHERE LOCATION = 'Brazil'
Run Code Online (Sandbox Code Playgroud)

我最初没有为这个MV添加任何刷新间隔.现在,我需要每天在0000HRS刷新这个MV.以下命令是否可以帮助我每天在0000HRS更改它?

ALTER MATERIALIZED VIEW EMPLOYEE_INFO
REFRESH COMPLETE 
START WITH SYSDATE
Run Code Online (Sandbox Code Playgroud)

如果我需要每6小时更新一次,我该如何进行?可能吗?

oracle materialized-views

1
推荐指数
1
解决办法
8901
查看次数

将物化视图转换为Oracle 11g中的表?

我在客户端上运行Oracle 11g和SQL Developer.我有一个物化视图,我想转换成普通的表.怎么办?

我想出的唯一方法是创建一个具有相同结构的表,从MV导出数据并将其导入表中.但是要做到这一点,我必须手动创建表的所有字段(30+)以匹配MV中的字段.所以我认为必须有更好的解决方案?

oracle materialized-views oracle11g oracle-sqldeveloper

1
推荐指数
1
解决办法
2226
查看次数

物化视图 - Oracle/数据未更新

我的朋友创建了一个物化视图,但该视图没有从 Mater 表接收新数据。视图仅在创建时接收数据,之后不包含新闻数据。

任何人都可以帮我解决这个问题吗?

在我的物化视图下休憩。

    CREATE or REPLACE MATERIALIZED VIEW DATABASE.MyMatView
    LOGGING
    TABLESPACE SDBANCO
    PCTFREE 10
    INITRANS 2
    STORAGE
    (
        INITIAL 65536
        NEXT 1048576
        MINEXTENTS 1
        MAXEXTENTS UNLIMITED
        BUFFER_POOL DEFAULT
    )
    NOCOMPRESS
    NOCACHE
    NOPARALLEL
    REFRESH ON DEMAND
    FORCE
    DISABLE QUERY REWRITE
AS
    SELECT * FROM .....
Run Code Online (Sandbox Code Playgroud)

谢谢,

马修斯·洛扎诺

oracle materialized materialized-views

1
推荐指数
1
解决办法
1万
查看次数

Oracle:为什么基础视图中的数据更改后我的MW失效为NEEDS_COMPILE状态

我们正在使用以下物化视图和基础视图来实现某些报告。从我们的应用程序中完全手动刷新了实例化视图(通过DBMS_SNAPSHOT.REFRESH('“ OVERALL_WEEKLY”','C');)。在此调用之后,视图处于FRESH状态,但是在对基础表执行任何DML操作之后,实例化视图将变为NEEDS_COMPILE状态。查询视图如下。无关紧要的表EBR_CYCLE_TIME和EBR_AREA经常更改。因此,提交刷新不是我们的选择。

有什么办法可以避免NEEDS_COMPILE状态?或者更好是什么导致NEED_COMPILE状态?

CREATE OR REPLACE FORCE VIEW "OTD_WEEKLY" AS
  SELECT
    otd.WEEK,
    otd.SITE_ID,
    otd.AREA_ID,
    otd.OTD_METRIC                                               AS CT_METRIC,
    ROUND(100 * (SUM(otd.SUCCESS) / SUM(otd.CT_TOTAL_COUNT)), 2) AS OTD_VALUE
  FROM
    (SELECT
       FC.MFL_FISCAL_YR_NUM * 100 + FC.MFL_FISCAL_WK_NUM AS WEEK,
       r.BUSINESS_UNIT_ID                                AS PAL2_ID,
       a.site_id                                         AS SITE_ID,
       a.area_def_id                                     AS AREA_ID,
       a.PRIORITY                                        AS PRIORITY,
       r.EBR_BUILD_SUBTYPE                               AS NPI,
       r.CORPORATE_TD                                    AS CTD,
       ctd.NAME                                          AS OTD_METRIC,
       COUNT(r.ebr_number)                               AS CT_TOTAL_COUNT,
       COUNT(
           CASE
           WHEN (ct.TIME_ELAPSED) > (ct.TARGET * 86400)
             THEN NULL
           ELSE r.ebr_number
           END)                                          AS SUCCESS,
       COUNT(
           CASE
           WHEN (ct.TIME_ELAPSED) > (ct.TARGET * …
Run Code Online (Sandbox Code Playgroud)

database oracle views materialized-views

1
推荐指数
1
解决办法
4810
查看次数

刷新还是创建物化视图?Postgres

我有一个物化视图,当我们的数据管道完全刷新时,它有时会被删除。有没有办法在查询中包含一些逻辑以刷新它是否存在,如果不存在,则创建它?

像这样的东西

refresh materialized view my_mat_view

if my_mat_view does not exist then execute the code below

create materialized view my_mat_view as select * from table
Run Code Online (Sandbox Code Playgroud)

sql postgresql materialized-views

1
推荐指数
1
解决办法
1263
查看次数

Postgresql 刷新物化视图同时打破顺序

我有物化视图,它非常有帮助。但使用一段时间后,我遇到了问题,视图中的顺序被破坏了。我将 Matview 创建为:

CREATE MATERIALIZED VIEW mat_view_sorted_products AS
      SELECT item.id, item.category_id FROM item
      INNER JOIN stock ON stock.item_id = item.id
      ORDER BY is_available DESC, views DESC;

CREATE UNIQUE INDEX mat_view_index_id ON mat_view_sorted_products (id);
Run Code Online (Sandbox Code Playgroud)

ORDER BY 在我的例子中是非常重要的事情,所以当我从 Matview 查询并获得连接表的排序结果时它会起作用:

SELECT id FROM mat_view_sorted_products
LIMIT 100 OFFSET 0; //got 100 sorted item ids by (is_available DESC, views DESC)
Run Code Online (Sandbox Code Playgroud)

要刷新物化视图,我使用:REFRESH MATERIALIZED VIEW CONCURRENTLY mat_view_sorted_products

但经过一段时间和多次刷新迭代后,我发现 matview 记录的顺序被打破了。我认为同时更新空闲(读取)记录的值并且不更改其他任何内容。

不是?它是如何工作的以及如何在刷新视图时不破坏订单?

聚苯乙烯

如果我在没有并发的情况下进行刷新,它会恢复正常排序。它会阻止视图、清理视图并按顺序从选择中恢复。但用户没有时间每次View刷新时都等待

更新:

当然,我在完整的 SELECT 语句中使用顺序:

SELECT id, name, views FROM item WHERE …
Run Code Online (Sandbox Code Playgroud)

postgresql materialized-views postgresql-9.5

1
推荐指数
1
解决办法
1248
查看次数

Cassandra物化视图分区密钥更新性能

我正在尝试更新基表中的列,该列是物化视图中的分区键,并尝试了解其在生产环境中的性能影响.

基表:

CREATE TABLE if not exists data.test
 ( ?foreignid    uuid,
? id           uuid,?        
 kind         text,
? version      text,?           
 createdon    timestamp,?        
**certid**    text,
? PRIMARY KEY(foreignid,createdon,id)?    );
Run Code Online (Sandbox Code Playgroud)

物化视图:

CREATE MATERIALIZED VIEW if not exists data.test_by_certid 
AS? SELECT *?FROM data.test? WHERE id IS NOT NULL AND foreignid 
IS NOT NULL AND createdon IS NOT NULL AND certid IS NOT NULL 
PRIMARY KEY (**certid**, foreignid, createdon, id);
Run Code Online (Sandbox Code Playgroud)

因此,certid是物化视图中的新分区键

发生了什么:

1. When we first insert into the test table , usually the certids …
Run Code Online (Sandbox Code Playgroud)

data-modeling materialized-views cassandra scylla cassandra-3.0

0
推荐指数
1
解决办法
443
查看次数

雪花无效的实体化视图定义

在Snowflake中运行时,以下命令:

CREATE MATERIALIZED VIEW MV_CUSTOMER_PREFERENCE as select * from V_CUSTOMER_PREFERENCE;
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

SQL编译错误:位置{1}处的错误行{0}为错误的实例化视图定义。视图定义中引用了多个表

V_CUSTOMER_PREFERENCE是一个现有的并且起作用的视图(可以单独查询),该视图连接了来自不同表的信息。当我放置原始查询而不是视图时,会遇到相同的错误,这只是一个漫长而复杂的SQL查询。

视图中的查询可能有什么问题?我无法从错误说明中了解它,也没有在https://docs.snowflake.net/manuals/user-guide/views-materialized.html中找到相关限制

materialized-views snowflake-cloud-data-platform

0
推荐指数
1
解决办法
86
查看次数

在 ClickHouse 中连接大表:内存不足或速度慢

我有 3 个大表(>100 GB,每个表有数百万行):eventspage_viewssessions。这些表通过 1-n 关系连接,请参见下面的表设置。我正在尝试创建一个非规范化events_wide表,其中包含每个事件的一行,其中相应的page_viewssessions列被连接。这个想法是消除复杂分析查询所需的联接,因为这些联接速度很慢。

我创建了一个物化视图,它将和表events_mv连接到事件表。每当将新事件插入到 中时,物化视图应将一行插入到 中,自动连接 page_view 和会话。但是,当我插入一个新事件时,查询要么无法完成,要么因内存不足错误而终止。page_viewssessionseventsevents_wide

events即使从到运行这个简单的连接查询也会page_views导致内存不足错误:Memory limit (for user) exceeded: would use 99.21 GiB。我使用具有 24+ GB RAM 的 ClickHouse Cloud 生产实例:

SELECT
    -- Select columns from events and page_views
FROM events AS e
LEFT JOIN page_views AS p ON p.property_id = e.property_id AND p.id = e.page_view_id
LIMIT 3;
Run Code Online (Sandbox Code Playgroud)

我尝试了 3 个表的不同主键排序 …

join materialized-views clickhouse

0
推荐指数
1
解决办法
2762
查看次数