如何实现物化视图?
如果没有,我如何用MySQL实现Materialized View?
更新:
以下工作会怎样?这在交易中不会发生,是一个问题吗?
DROP TABLE IF EXISTS `myDatabase`.`myMaterializedView`;
CREATE TABLE `myDatabase`.`myMaterializedView` SELECT * from `myDatabase`.`myRegularView`;
Run Code Online (Sandbox Code Playgroud) 我正在将一堆数据加载到PostgresQL 9.3数据库中,然后我想刷新所有依赖于更新表的物化视图.有没有办法自动完成而不是浏览每个视图并逐个刷新?我知道Oracle可以很容易地做到这一点但是在梳理完PostgreSQL文档后我没有找到任何东西.
我有一个物化视图,price_changes
用于某些报告.我也有一个cron工作用刷新物化视图refresh materialized view price_changes
.一切都很好.
我想让用户在报告中看到一条消息"数据从X开始是新鲜的".当cron运行时,我可以将它存储在某个地方,但是postgres是否已经在某处存储了这些元数据?
在Oracle中,可以仅刷新部分数据.但是在PostgreSQL中,自9.3(现在的版本)支持物化视图,这不是很长.所以我想知道:是否可以刷新PostgreSQL 9.3中物化视图中的部分数据?如果是的话,该怎么办?
我在物化视图和SQLite上做了无数次搜索.在我能找到的内容中,2004年和2006年似乎提到SQLite没有物化视图.紧接着是SQLite的变更日志,从2008年3月开始,它特别提到了优化物化视图.
现在,我在逻辑上认为2004年和2006年已经过时,或者2008年的更改日志是错误的.
有什么想法吗?
如果物化视图现在在SQLite中,它们是如何创建的?
在我们的一个应用程序中,我们有一个庞大的物化视图,每天刷新三次,需要七个小时才能刷新.(不太理想,我知道).这让我很困惑,因为我确实认为用户和会话在刷新时无法访问这个物化视图,但显然他们可以!(刷新类型是完全刷新)
在完全刷新期间,根据我的理解,删除现有数据集,然后重新执行查询.如果这是真的,那么在刷新物化视图时,用户/其他会话如何能够访问物化视图?
当我在Oracle 10g上运行以下代码时:
drop materialized view test4;
drop materialized view test3;
drop table test2;
drop table test1;
create table test1
(
x1 varchar2(1000),
constraint test1_pk primary key (x1)
);
create materialized view log on test1 with sequence;
create table test2
(
x2 varchar2(1000),
constraint test2_pk primary key (x2)
);
create materialized view log on test2 with sequence;
create materialized view test3
refresh complete on demand
as
(
select x1 from test1
union all
select null from dual where 0 = 1 …
Run Code Online (Sandbox Code Playgroud) 我正在使用Ruby on Rails和PostgreSQL编写程序.系统生成很多报告,这些报告经常被用户更新和频繁访问.我是否应该使用Postgres触发器创建报表表(如Oracle物化视图)或内置ActiveRecord回调的Rails.有没有人对此有任何想法或经验?
我需要确定当前为我的数据库中的某些物化视图授予的权限.
对表或标准视图执行此操作的查询非常简单:
SELECT grantee, string_agg(privilege_type, ', ') AS privileges
FROM information_schema.table_privileges
WHERE table_schema = 'some_schema' AND table_name = 'some_table'
GROUP by grantee;
Run Code Online (Sandbox Code Playgroud)
也就是说,物化视图似乎没有类似的表格.PostgreSQL在哪里存储这些信息?
最近有很多关于NoSQL的讨论.
我听到人们使用NoSQL的首要原因是因为他们开始非常规范化他们的DBMS数据,以提高性能,他们最终只得到一个表,其中包含该单个表中的所有数据.
但是,对于物化视图,您可以将数据标准化,但将其存储为单个表视图,原因与您使用NoSQL的原因相同.
因此,为什么有人会使用NoSQL而不是物化视图?
postgresql ×4
database ×3
oracle ×2
sql ×2
views ×2
activerecord ×1
mysql ×1
nosql ×1
oracle10g ×1
privileges ×1
rdbms ×1
sqlite ×1
triggers ×1