物化视图

数据仓库常见面试问题

牧云@^-^@ 提交于 2020-03-10 10:47:25
一、 数据库 1、 Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作用?materialized view 答:a:视图是虚拟表,提高了表的安全性,视图没有实际物理空间,而表有实际存储的物理空间 b:物化视图存储了实实在在的数据,而普通视图之存储了定义 c:物化视图的优点像索引一样,提高查询性能。当基表发生变化时,物化视图也应当刷新。 物化视图是数据库中的一种存储数据的对象,和表一样,存储了数据。用于预先计算并保存表连接或者聚集等耗时较多的操作。这样,在执行查询的时候,就可以避开连接、聚集等耗时的操作,从而快速的得到结果。它可以查询表,视图甚至是其他物化视图中的数据。和视图不同的是,它存储了实实在在的数据,而视图只是存储了定义而已,所以,也是可以在物化视图上创建索引的。物化视图在很多方面,和索引很相似:使用它的主要目的是为了提高查询性能;物化视图对应用是透明的,增加或者删除物化视图不会影响应用程序中查询语句的正确性和有效性;物化视图会占用存储空间;当基表发生变化时,物化视图也应当刷新。通常情况下,物化视图被称为主表(在复制期间)或者明细表(在数据仓库中)。 2、 Oracle数据库,有哪几类索引,分别有什么特点? 答:三类索引 a:B树索引 b:文本索引 c:位图索引 3、 Union与Union All的区别? Union 会去掉重复,效率比 union

Oracle DBLinke+实体化视图 同步两个数据库的数据

牧云@^-^@ 提交于 2020-03-08 14:32:41
项目的新需求是同步两个Oracle数据库的部分个,在实验环境现试通了几种方法,今天先把DbLink 加 实体化视图 同步数据的方法记录一下。 1、配置tnsnames.ora文件 指定到主数据库的网络名,实验环境为169db 。 2、在从数据库端给用户赋值相应的权限 grant create database link to repadmin; --创建dblink的权限。 grant create materialized view to repadmin ; --创建物化视图的权限。 3、以repadmin身份登录从数据库。 connect repadmin/xxxx --创建dblink create database link 169dbLink connect to repadmin identified by xxxx using '169db'; --测试是否创建成功 select * from global_name@169dbLink; 4、在主数据库的表上创建物化视图日志,这个日志记录了主表的变化。 create materialized view log on pdata; --如果Pdata个没有主键,可以用rowid作为为主键。 create materialized view log on pdata with rowid; 5、在从数据库中创建物化视图

如何获取物化视图的ddl语句呢

牧云@^-^@ 提交于 2020-03-08 14:29:50
我创建了一个物化视图,如下,时间久了,忘了物化视图的定义了 ,在哪里去找呢: CREATE MATERIALIZED VIEW cust_sales_mv ENABLE QUERY REWRITE AS SELECT c.cust_id, SUM(amount_sold) FROM sales s, customers c WHERE s.cust_id = c.cust_id GROUP BY c.cust_id; 我通过select object_name,object_type from dba_objects where object_name='CUST_SALES_MV'; SQL> select object_name,object_type from dba_objects where object_name='CUST_SALES_MV'; OBJECT_NAME OBJECT_TYPE ------------------------------ ------------------- CUST_SALES_MV TABLE CUST_SALES_MV MATERIALIZED VIEW 在通过get_ddl语句报类型不对: SQL> SELECT dbms_metadata .get_ddl('MATERIALIZED VIEW','CUST_SALES_MV

oracle 物化视图

爷,独闯天下 提交于 2020-03-08 14:29:34
Materialized View Concepts Oracle uses materialized views (also known as snapshots in prior releases) to replicate data to non-master sites in a replication environment and to cache expensive queries in a data warehouse environment. This chapter, and this Oracle9i Replication manual in general, discusses materialized views for use in a replication environment. Oracle 物化视图,也被称为快照,通过这种方式可以用于同步数据。 What is a Materialized View? A materialized view is a replica of a target master from a single point in time. The master can be either a master table at a master site or a master materialized view at a

postgresql9.5 物化视图测试

喜你入骨 提交于 2020-03-08 14:29:18
copyright http://cupegraf.com/ 视图是指数据库只存储定义该视图的查询语句(内容是查询时产生),而物化视图是一个其查询语句查询后的内容并存储的视图(内容是创建物化视图刷新视图时产生,数据可修改。独立)。因为物化视图是视图的一个物化表结构,但是里面的数据是创建时刷新查询到额数据,当原数据更新修改时如果物化视图的表没有更新会造成数据的不一致。从9.4开始增加增量刷新,9.5的版本中支持物化视图也支持索引,修改表空间,指定用户访问权限 postgresql9.5物化视图测试: search package: sudo apt-cache search dtrace-* dtrac && readline install :sudo apt-get install systemtap-sdt-dev libssl-dev libpam-dev libxml2-dev libxslt-dev libtcl8.4 libperl-dev python-dev ./configure --prefix=/home/pg5/pgsql9.5-devel --with-port=5433 --with-perl --without-tcl --with-python --with-openssl --with-pam --without-ldap --with

Materialized View

怎甘沉沦 提交于 2020-03-08 14:26:57
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好。 物化视图:是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照! 特点: (1) 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表),这通过其可以被user_tables查询出来,而得到确认; (2) 物化视图也是一种段(segment),所以其有自己的物理存储属性; (3) 物化视图会占用数据库磁盘空间,这点从user_segment的查询结果,可以得到佐证; 创建语句:create materialized view mv_name as select * from table_name 因为物化视图由于是物理真实存在的,故可以创建索引。 创建时生成数据: 分为两种:build immediate 和 build deferred, build immediate是在创建物化视图的时候就生成数据。 build deferred则在创建时不生成数据,以后根据需要在生成数据。 如果不指定,则默认为build immediate。 刷新模式:

oracle物化视图的一般用法

早过忘川 提交于 2020-03-08 14:26:37
oracle物化视图的一般用法 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。 1、物化视图的类型:ON DEMAND、ON COMMIT 二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。 2、ON DEMAND物化视图 物化视图的创建本身是很复杂和需要优化参数设置的,特别是针对大型生产数据库系统而言。但Oracle允许以这种最简单的,类似于普通视图的方式来做,所以不可避免的会涉及到默认值问题。也就是说Oracle给物化视图的重要定义参数的默认值处理是我们需要特别注意的。 物化视图的特点: (1) 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表),这通过其可以被user_tables查询出来,而得到佐证; (2) 物化视图也是一种段(segment),所以其有自己的物理存储属性; (3) 物化视图会占用数据库磁盘空间,这点从user_segment的查询结果

Oracle之物化视图

微笑、不失礼 提交于 2020-03-08 14:15:37
物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。 1、物化视图的类型:ON DEMAND、ON COMMIT 二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。 2、ON DEMAND物化视图 物化视图的创建本身是很复杂和需要优化参数设置的,特别是针 对大型生产数据库系统而言。但Oracle允许以这种最简单的,类似于普通视图的方式来做,所以不可避免的会涉及到默认值问题。也就是说Oracle给物 化视图的重要定义参数的默认值处理是我们需要特别注意的。 物化视图的特点: (1) 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表),这通过其可以被user_tables查询出来,而得到佐证; (2) 物化视图也是一种段(segment),所以其有自己的物理存储属性; (3) 物化视图会占用数据库磁盘空间,这点从user_segment的查询结果,可以得到佐证; 创建语句

Oracle之物化视图

左心房为你撑大大i 提交于 2020-03-08 14:15:19
Oracle之物化视图 近期根据项目业务需要对oracle的物化视图有所接触,在网上搜寻关于这方面的资料,便于提高,整理内容如下: 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的。普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图SQL语句的查询。这样对整体查询性能的提高,并没有实质上的好处。 1、物化视图的类型:ON DEMAND、ON COMMIT 二者的区别在于刷新方法的不同,ON DEMAND顾名思义,仅在该物化视图“需要”被刷新了,才进行刷新(REFRESH),即更新物化视图,以保证和基表数据的一致性;而ON COMMIT是说,一旦基表有了COMMIT,即事务提交,则立刻刷新,立刻更新物化视图,使得数据和基表一致。 2、ON DEMAND物化视图 物化视图的创建本身是很复杂和需要优化参数设置的,特别是针 对大型生产数据库系统而言。但Oracle允许以这种最简单的,类似于普通视图的方式来做,所以不可避免的会涉及到默认值问题。也就是说Oracle给物 化视图的重要定义参数的默认值处理是我们需要特别注意的。 物化视图的特点: (1) 物化视图在某种意义上说就是一个物理表(而且不仅仅是一个物理表),这通过其可以被user_tables查询出来,而得到佐证; (2) 物化视图也是一种段(segment)

究竟是什么在影响我们的性能

三世轮回 提交于 2020-02-23 15:14:31
前言 注:这里讨论的场景在于MIS,OA一类的系统 大部分同学在看到这个问题的时候,第一反应是糟糕的SQL语句,没有加索引,这甚至已经成为一种惯性思维。 当发现性能出问题的时候,一般都会想到加个索引,或者改造下连接方式,去掉“not exists”诸如此类,但效果往往不太理想,或过一段时间后,效果又不理想了,此时,一般大家都会觉得问题在于自己还不是大神。 正文 今天给大家分享的就是:为了提高性能,不是大神的我们还有多少方法可以采取? 性能有三大杀手:1)糟糕的SQL使用;2)糟糕的数据结构;3)糟糕的业务模型 下面举一个实际的例子,在EPO物资采购系统中的需求跟踪功能中,可以查询到所有历史提交的需求申请单。查询包含从需求申请->需求受理->订单->验收入库->通知领用->发放完成所有环节的状态。最初的做法是通过join将需求表、需求受理表、订单表、验收表、领用通知表和发放表连接起来形成一张视图。当数据量小的时候,看起来一切都是那么的完美,但是后来就不那么美好了。于是,后来我们采取了一系列的优化。 阶段一:物化视图 当join的时候,问题出现在join的计算过程,数据量大了,计算耗费就会大,性能便会下降。不过,当问题来的那天,对于这种问题,大家是非常坦然的面对,做一张物化视图就可以了,每天晚上计算一下,第二天查询物化视图即可。利用原生的SQL功能,物化视图,对于大家来说手到擒来