标签: materialized-view

刷新物化视图后需要分析吗?

运行后ANALYZE myview;,我们是否应该在 PostgreSQL 9.6+ 物化视图上运行REFRESH MATERIALIZED VIEW CONCURRENTLY myview;

或者它没有用(也许索引统计信息已经在刷新时更新了?)

postgresql statistics materialized-view

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

刷新物化视图对数据库的影响

嗨,我们正在 Amazon RDS 中运行一个 PostgreSQL 9.6 数据库,使用 m4.large(2cpu 8gb) 和 1000 的预置 IOPS。用例如下:我们有一个包含数百万个注册表(或多或少 4M)的表和我们创建了一个物化视图,其中包含该表的一个子集 (2M aprox),更改了一些列类型以提高查询效率。我们的 pg_conf 没有改变,是 RDS Postgres 的默认设置。

这是我们的视图定义:

CREATE MATERIALIZED VIEW public.customers_mv as
SELECT 
    id,
    gender,
    contact_info,
    location,
    social,
    categories,
    (social ->> 'follower_count')::integer AS social_follower_count,
    (social ->> 'following_count')::integer AS social_following_count,
    (social ->> 'peemv')::float AS social_emv,
    (social ->> 'engagement')::float AS social_engagement,
    (social ->> 'v')::boolean AS social_validated,
    search_vector,
    flags,
    to_tsvector('english',concat_ws(' ','aal0_'||(customers.location ->> 'aal0'),
      'aal1_'||(customers.location ->> 'aal1'),
      'aal2_'||(customers.location ->> 'aal2'),
      'frequent_location_aal0_'||(customers.location -> 'frequent_location' ->> 'aal0'),
      'frequent_location_aal1_'||(customers.location -> 'frequent_location' ->> …
Run Code Online (Sandbox Code Playgroud)

postgresql materialized-view postgresql-9.6 amazon-rds

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

无法查询模式绑定视图的基础表

我使用备份还原技术和一组传输后操作(如DBCC UPDATEUSAGE或)将数据库从 SQL Server 2008R2 迁移到 SQL Server 2019(均为企业版)UPDATE STATISTICS XXX

在统计更新时,我收到以下错误:

Msg 402, Level 16, State 1, Procedure ZZZZ, Line 5 [Batch Start Line 0]
The data types datetime and time are incompatible in the add operator.
Msg 4413, Level 16, State 1, Line 1
Could not use view or function 'ZZZZ' because of binding errors.
Run Code Online (Sandbox Code Playgroud)

我知道该消息非常明确(在 2008R2 上语法正确的视图在 2019 年不再适用)。我不明白为什么定义的视图WITH SCHEMABINDING无效会阻止更新基础表上的统计信息。

此外,在使用WHERE子句查询基础表时,我收到相同的错误消息,除非我使用以下提示强制执行 FULLSCAN:

OPTION(TABLE HINT( $mytable, FORCESCAN ))
Run Code Online (Sandbox Code Playgroud)

我知道如果 DDL …

sql-server statistics materialized-view upgrade datetime

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

使用总计来提高性能

我有两个表:详细信息和这些详细信息的总计。

详细信息(缓慢的解决方案):

select 
    OrderId             =   r.OrderId                   
  , TotalQty            =   SUM(r.Quantity)
  , TotalGrossConsid    =   SUM(r.Price * r.Quantity)
from dbo.Order r
group by r.OrderId
Run Code Online (Sandbox Code Playgroud)

总计(快速解决方案):

select 
    t.OrderId                           
  , t.TotalQty          
  , t.TotalGrossConsid  
  , t.IsValid
from dbo.OrderTotal t
Run Code Online (Sandbox Code Playgroud)

有时总数变得无效(某些作业必须重新计算更改的总数,但会延迟)。如您所知,第二个查询更快,有效总数的数量多于无效总数。因此,我正在寻找一个组合查询,该查询从第二个表 (totals) 返回有效总数,并使用第一个慢查询返回动态重新计算的总数。所以我的目标将实现:所有总数都是有效的,响应时间比完全重新计算要快。

这是我的尝试(混合解决方案):

with fast_static(OrderId, TotalQty, TotalGrossConsid, IsValid)
as
(
    select 
        t.OrderId                           
      , t.TotalQty          
      , t.TotalGrossConsid  
      , t.IsValid
    from dbo.OrderTotal t
)

, slow_dynamic(OrderId, TotalQty, TotalGrossConsid)
(
   select 
        OrderId             =   r.OrderId                   
      , TotalQty            =   SUM(r.Quantity)
      , TotalGrossConsid    =   SUM(r.Price …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 query aggregate materialized-view

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

SQL Server 中的标准视图和索引视图有什么区别

我了解到索引视图保存来自基表的数据,而标准视图不保存数据。这是否意味着索引视图需要内存而标准视图不需要?

索引视图需要与架构对象绑定。我也对架构绑定对象中不允许使用“*”这一点感到困惑。例如:

create view viewname as select * from tablename
Run Code Online (Sandbox Code Playgroud)

上面的说法是行不通的。为什么?

database-design sql-server materialized-view

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

需要在 SQL 索引视图聚集索引中包含 FK?

我正在使用 SQL Server 索引视图来提高连接的性能,该连接按小表上的类别过滤(非常)大的表。例如:

CREATE VIEW BigTableSubset WITH SCHEMABINDING 
AS 
SELECT b.ID, b.SomeValue from BigTable b 
INNER JOIN SmallTable s on (b.CategoryFK = s.CategoryPK) 
where s.Type = 'Blah'

CREATE UNIQUE CLUSTERED INDEX PK_BigTableSubset ON BigTableSubset
(ID) 
INCLUDE (SomeValue)
Run Code Online (Sandbox Code Playgroud)

(BigTable.ID是BigTable上的PK)

查询性能大大增加(因为需要Bigtable中的子集已经存储),但我会确保SQL可以更新索引本身在最优化的方式时,无论是源表进行更新。

所以问题是:我是否需要在视图的聚集索引中包含 SmallTable.CategoryPK 以确保这一点,或者 SQL 是否会作为索引结构的一部分自动执行此操作?或者换句话说,每次“左手”(SmallTable)表更新时,SQL 如何识别索引中的哪些页面需要更新,我是否需要做任何事情来促进这一点?

sql-server materialized-view sql-server-2012

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

Postgres 刷新物化视图锁

我在 Postgres 中有一个物化视图,想知道刷新该视图时取出了哪些锁(如果有)。

CREATE TABLE people ( name VARCHAR(30) );
INSERT INTO people VALUES ('Alice'), ('Bob'), ('Cher');
CREATE MATERIALIZED VIEW test AS SELECT * FROM people;
REFRESH MATERIALIZED VIEW test;
Run Code Online (Sandbox Code Playgroud)

具体来说,我试图了解该REFRESH MATERIALIZED VIEW命令是否取出ACCESS EXCLUSIVE锁。

我尝试了一个解释但没有成功:

#> EXPLAIN REFRESH MATERIALIZED VIEW test;

                QUERY PLAN                 
-------------------------------------------
Utility statements have no plan structure
Run Code Online (Sandbox Code Playgroud)

postgresql materialized-view

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

“在线”更新索引视图

假设我有一个如下所示的索引视图:

ALTER VIEW dbo.MyIndexedView WITH SCHEMABINDING
AS 
    SELECT ord.SomeColumn, COUNT_BIG(*) AS Count
    FROM dbo.Ordered ord
    WHERE ord.CreatedWhen >  CONVERT(DATETIME, '2014-11-01', 121)
    GROUP BY ord.SomeColumn
GO

CREATE UNIQUE CLUSTERED INDEX [CIX_MyIndexedView] ON dbo.MyIndexedView (SomeColumn)
GO
Run Code Online (Sandbox Code Playgroud)

如果我在此视图中更改日期时间值(比如“2014-11-01”),则需要重新生成聚集索引。

有没有办法让现有的视图和索引保持有效,直到新的视图和索引完全构建,然后让它们交换? 相似Online=On

index sql-server materialized-view sql-server-2012 online-operations

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

父级和最新子级的索引(物化)视图

假设我有父-> 子表设置。打电话给他们ShipmentWidget

无论如何要创建一个索引视图,该视图将具有父级 (ShipmentId) 的 PK 和最新子级 (Widget.CreatedWhen) 的创建时间。

这是我正在寻找的查询:

SELECT  widg.ShipmentId, MAX(widg.CreatedWhen) NewestWidget
FROM    dbo.Widget widg            
GROUP BY widg.ShipmentId
Run Code Online (Sandbox Code Playgroud)

显然这个查询不能是一个索引视图,因为它已经MAX在里面了。

但是是否有其他方法通过“索引视图合法”SQL 来获得类似的结果集?

sql-server materialized-view sql-server-2012

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

是否有必要清理 PostgreSQL 物化视图?

我知道分析物化视图 (MV) 是有意义的,但由于 MV 不可更新,这是否意味着我们不需要清理 MV?

postgresql materialized-view vacuum

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