文档库 最新最全的文档下载
当前位置:文档库 › DSSMV----多维数据物化视图的动态选择策略

DSSMV----多维数据物化视图的动态选择策略

DSSMV----多维数据物化视图的动态选择策略
DSSMV----多维数据物化视图的动态选择策略

本课题得到福建省自然基金资助(A0310008)和福建省高新技术研究开放计划重点项目资助(2003H043)。

黄宗毅 硕士,主要研究方向为数据仓库、数据挖掘、分布式数据库等。薛永生 教授,主要演就方向为数据仓库理论与应用、分布式数据库、数据仓库、数据挖掘等。翁 伟 硕士,主要研究方向为数据仓库、数据挖掘。文 娟 硕士,主要研究方向为数据仓库、数据挖掘。

DSSMV----多维数据物化视图的动态选择策略

黄宗毅 薛永生 翁伟 文娟 蔡劲 (厦门大学计算机科学系 福建 厦门 361005)

(dafeihuang@https://www.wendangku.net/doc/4511959049.html, )

摘 要 提出了多维数据中物化视图的动态选择策略---DSSMV ,其中包括候选视图选择算法CVSA 、改进的

BPUS 算法---IGA 算法、物化视图集调整算法MAVM 和物化视图的动态调整算法DMAVM 。该策略削减算法的搜索空间,降低算法的复杂度,同时通过改进BPUS 算法,并增加调整算法从而提高了物化视图集对查询的响应性能,该策略还通过定时地判断查询视图类型分布是否变化来决定是否进行物化视图的动态调整,从而避免了物化视图集“抖动”的发生。通过分析和实验对比可以看到,该算法通过定时地执行可以显著降低管理员的工作的复杂度,保持物化视图集具有较好的响应性能。

关键词 物化视图;OLAP ;动态选择;多维数据;数据仓库

Dynamic Selection Strategy of Materialized Views of Multi-Dimensional Data

Huang Zongyi ,Xue Yongsheng ,Weng Wei ,Wen Juan ,Cai Jin

(Department of Computer Science, Xiamen University, Xiamen 361005, China)

Abstract This paper presents DSSMV(Dynamic Selection Strategy of Materialized Views),an approach

composed of four algorithms: CVSA (Candidate Views Selection Algorithm ),IGA(The Improved Greedy Algorithm),MAVM(Modulation Algorithm of View Materialization),DMAVM(Dynamic Modulation Algorithm of View Materialization). CVSA is in charge of producing candidate view set, which is proven to be sufficient and necessary for selecting the best set of materialized views. IGA and MAVM are based on the Greedy Algorithm. DMAVM used the sample space to judge whether it is necessary to change the view set and restrain the number of views at very low cost. The comparative experiment indicates that DSSMV can be employed by the static algorithms to reduce effectively the amount of views beforehand, and the cost of static algorithms on space and time can be cut down to fit for online demand.

Key words materialized view ;OLAP( Online Analytical Processing);dynamic selection ;multi-dimensional

data ;data warehousing

1 引言

从某种角度看, 数据仓库是一组视图的集合。这些视图是从数据库或基库中分组聚集而成的,其中在物理意义上实际存在的视图称为实视图;而物理上不存在,当需要时从其他视图或基库中导出的视图称为虚视图。所谓视图的物化就是指以表的存储形式将虚视图转化为实视图。视图的物化策略对数据仓库的查询响应时间有重要影响。到目前为止,已存在许多物化视图的选择算法,这些算法通过不同的途径实现对物化视图的选择提高系统的整体效率。但总的来说都没有取得理想的效果。可以说,对多维数据物化视图选择仍然是一个有待于更深入研究的问题。

2 相关工作

斯坦福大学的Harinarayan 在文献[1]中首先提出数据立方体的格模型,以此来描述视图间的相互依赖关系并给出了简单的BPUS 算法来解决视图的选择问题。这一算法的效果和最优解的比值不小于1-1/e ,在此基础上,文献[2]讨论了带有B-树索引的物化视图的选择问题;文献[3]提出了以物化视图的尺寸为选择标准,其算法时间复杂度为O(nlgn)的选择算法PBS ;文献[4]提出了一系列启发式视图选择的算法框架;而文献[5,6]将遗传算法获取最优解的能力用于最优物化集的选择,并在降低算法复杂度方面进行了研究。

这些方案均基于查询的分布情况是已知的。由于OLAP 系统中的查询是随机的,选择物化视图不可能确知系统中的查询集合,因而现有OLAP 系统中物化视图的选择方案均假设这些查询在综合数据上

是均匀分布的,或者用户可以提供其分布概率。实际上,均匀分布的假设常常不能成立,由用户提供查询的分布概率也是强人所难。

文献[7]提出的基于单位空间上的查询频率的视图选择方法(FPUS),以系统收集的查询集合及其频率为选择物化视图集合,能较好地反映查询的需求。但FPUS算法没有考虑视图间的依赖关系并且即时调整策略导致物化集存在频繁的“抖动”。因此该算法仍没有有效地提高系统的效率。

以上算法都忽略了实视图的维护时间,仅考虑实视图所占存储空间大小这一外部限制条件。在实际应用中,实视图的维护时间同样限制了我们不能将所有的视图实体化。于是Gupta和Mumick给出了一种在给定的约束条件为总的视图维护时间S下进行视图选择的ITGA(Inverted-Tree Greedy Algorithm)算法[8]。

综上所述,目前提出的方法多采用一元评价标准,或者以实视图所占存储空间为标准,或者以实视图的维护时间为标准,当性能评价标准是二元或二元以上时,没有给出相应的选取原则。

本文在以上方面进行了更为深入的探索,基于用户查询分布和多维数据格,提出了物化视图动态选择的处理策略—DSSMV,包括候选视图选择算法CVSA、改进的BPUS算法---IGA算法、物化视图集调整算法MAVM和物化视图的动态调整算法DMAVM。策略依据用户查询分布稀疏性特点对视图节点进行合理有效的筛选,有效地提高算法的效率;在选择物化视图时综合考虑了存储空间、维护开销和查询性能三种因素;最后在运行中挑选最佳的调整时机,防止物化集出现频繁的“抖动”。

3.相关概念

定义1(多维数据格[1]). 不同综合程度的多维数据集合称为一个数据结点。一个多维数据模式中的所有数据结点构成一个格,其中

(1) 数据结点间的偏序(≤)定义为:给定结点u和v,u≤v当且仅当仅利用v即可计算出 u。这意味着v的各维上的级别均低于或等于u的相应维上的级别;

(2) 格中最大元记为V base。V base上各维的级别为该维中最低的。一般假定V base的数据是已知的,可利用它计算格中任意结点的数据。

例1.考虑销售业绩的多维数据模式[9],其中的维有两个:产品和销售地点,其度量数据为销售量。两个委的层次结构分别如图1所示。其中ALL表示对维中所有成员的综合。Dimension Product①:ProductID②→Category③→ALL Dimension Location④: StoreID⑤→Area⑥→All

①产品维,②产品,③种类,④地点维,⑤商店,⑥地区

图1 维的层次结构

例1中多维数据的格如图2所示,其中P,S,C,R,A分别表示ProductID, StoreID,Area,

base

图2 例1种多维的数据的格

在实视图的选择过程中,需要再估计一个数据结点v的尺寸|v|。文献[10]讨论了解决该问题的多种方案。

定义2(多维数据上的查询[6]). 多维数据集合MD上的查询q是对MD中某一数据结点的切片或切块。可以将q表示为由d个二元组组成的d组:{(l1,R1),(l2,R2),…,(l d,R d)},其中d为MD的维数,l i表示维d i的某一级别,R i表示在l i上的选择范围。若没有对l i的范围进行限制,可以将(l i,R i)简记为l i。若l i=ALL,则维i的二元组可以不出现在查询中。

查询q所访问的数据结点称为q的基,记为βq。若q={(l1,R1),(l2,R2),…,(l d,R d)},则βq={l1,l2,…,l d}。

查询间的偏序关系≤定义为:对于查询p和q,若q的结果可以用来响应p,则有p≤q。显然,若p≤q,不但要求βp≤βq,而且用来生成 p的数据均应包含在q中。

定义3(实视图的选择问题). 实视图的选择问题就是在给定存储空间Space的限制下,选择哪些视图物化可以最大限度地提高查询和维护的综合效率。

4 物化视图动态选择的处理策略

4.1 候选视图选择算法CVSA

在系统构建阶段,我们粗略地给出一个初始用户查询集Q0={q1,q2,…,q n};在没有统计数据条件下,可以根据用户需求和管理员的经验确定。相对

于所有的视图结点用户查询集Q 0在多数情况下只是对应其中的一小部分,查询稀疏性这一特点表明使物化视图总代价取得最小的相关视图只是所有视图中的一部分。

定义 4(影响视图).一个查询q i 的查询结果通常可以从多维数据格图的多个视图结点计算出来,其中计算代价最小的视图称为查询q i 的影响视图v i 。

对数据仓库的每一个查询q i ,可以按其group by 子句在多维数据格图上找到相应的影响视图v i ,设v i 和v i 的所有父结点构成的集合为father(v i ),q i 可以从father(v i )中的任何一个视图得到查询的结果。

定义 5(视图的查询概率). 以视图v 为其影响视图的查询的概率之和称作该视图的查询概率,用p(v)表示。

定义 6 (子视图). 对于视图v ,若u 与v 至少满足下列条件之一:

(1)u ≤v,即u 与v 满足偏序关系且|u|<|v|。 (2)u ∈v,即u 可由v 进行投影或选择操作直接得到,则称u 为v 的子视图,v 的子视图的集合成为v 的子视图集合,记为H(v)。

定义 7 (视图的访问概率). 对于视图v ,能够在v 上响应的查询的概率之和称为v 的访问概率,记为P(v),显然 ()

()()()u H v P v p v p u ∈=+

我们把访问概率大于0的视图(多维数据格图上的结点)称为候选视图CV(Candidate Views)。

算法1.候选视图的选择算法CVSA

输入:常用查询集合Q 0,每个常用查询的概率f q ,以及多维数据格图V 0

输出:候选视图集CV ,每个候选视图的查询概率p

CVSA(Q 0,f q ,V 0)

{CV=?;p(v i )=0;P(v i )=0; for each q i ∈Q 0

{ 根据q i 的分组属性,找到其相应的影响

视图v i ∈V 0

p(v i )= p(v i )+f qi ; P(v i )= P(v i )+f qi ;

L= father(v i );//each w ∈L,v i ≤w for each v j ∈V 0 and v j ≠v i { if v j ∈L

P(v j )= P(v j )+f qi ;} }

for each v i ∈V 0

{if P(v i )>0 CV=CV ∪v i ; }

return (CV,p); }

通过该算法得到候选视图集CV 以及每个候选视图的查询概率p 。

之所以选择访问概率大于零的视图作为候选视图,是因为当该视图v i 查询概率和访问概率都为零时,若v i 物化,则显然v i 和Q 0的成员没有相互关系,所以对查询收益没有影响,但是v i 既然属于物化视图集V ,则必然增加了更新代价,同时也不会对Q 0的成员更新提供任何帮助(不会降低它们的更新代价),所以势必造成视图总代价的增加,从而与实视图的选择问题定义矛盾。

4.2 多维数据物化视图选择算法 4.2.1 代价模型

预先物化一部分视图虽然可以达到加速查询处理效率,降低存储空间的目的。但另一方面,当数据源更新时需要更新物化视图。因此物化视图选择是查询性能和维护开销间的复杂权衡问题。本文将二者的加权和称为操作开销。

定义 8(访问者集合). 对于实视图 v ,为响应其上的查询而访问v 但不同于v 的那些视图的集合称为v 的访问者集合,记为Q(v)。显然,若u ∈Q(v),则u 没有实化,u ≤v 且不存在另外的实视图w ,使得

u ≤w 但|w|<|v|。若 u ∈Q(v),我们称v=Q -1

(u)。 一般情况下,仅对已经实化的视图才有必要考虑其访问者集合,否则其访问者集合为空。但我们常关注一个待实化视图的情况,因而当提到一个未实化视图的访问者集合时,是指若将其实化会发生的情形。

定义 9(视图物化的单位空间效益). 设已选择的实视图的集合为V ,v ?V ,则相对于V 而言,实化v 所带来的查询效益:

1(,)((())()B v V Q v v p v -=-*+

1()

(())()())/u Q v Q u v p u c r v v v -∈-*-**∑

其中c 为权重,由设计者根据视图维护开销相对于查询计算开销的重要程度来指定。通常指定c=1,如果c<1则表示查询计算开销占主要地位,反之则视图维护开销占主要地位。r(v)表示视图v 的更新概率。

定义 10 (视图的总体代价)

假设视图v 1,v 2,…,v n 的查询概率分别为p 1,p 2,…,p n ,这些视图中只有一部分v 1′,v 2′,…,v k ′被物化(k ≤n),物化后的视图的查询概率为p 1′,p 2′,…,p k ′,视图的更新概率为r 1,r 2,…,r k ,权重为c ,则视图的总体代价为:

1

1

()k k

i i i i i i C V v p c v r ==''''=*+**∑∑

4.2.2 物化视图的选择

由于只有一部分视图被物化,所以并不是所有查询都能够从它的影响视图中查询得到,一部分查询必须从影响视图的父节点中计算得到,从而增大了查询的代价。但全部物化视图伴随的是巨大的维护开销。

物化视图的选择问题已经被证明是NP-hard 问题,不存在多项式时间的算法。考虑到视图的相互依赖关系,我们先采用改进的BPUS 算法---IGA 算法,之后对得到的物化视图集合再根据单位空间的查询概率(p(v)/|v|)进行调整。

算法2.改进的BPUS 算法---IGA 算法

输入:算法1计算出的候选视图集合CV ,可利用的空间Space

输出:应该被物化的视图集合V Procedure IGA(Space,CV){

V=V base ; //事实表是第一个应被物化的视图 Space=Space-|V base |; Search=True ; CV=CV-{V base };

While Search==True and CV ≠? { select v ∈CV,使得B(v,CV)最大 If B(v,CV)<0 Search=false ; Else

{ If Space ≥|v| {V=V ∪v ;

Space=Space-|v|; CV=CV-{v}; } else

Search=false ; } }

return MAVM(Space,CV,V); }

假设多维数据格图共有n 个视图结点,如果不经过算法1的处理,算法2就需要对这些视图都进行

收益计算。而经过算法1的处理后,参与收益计算的视图数目为n/§(§>=1),时间复杂度变为

22(/)O n ξ,即222

2

l i m (/)/1/n n n ξ

ξ→∞

=

,随着§的

增加,算法时间复杂度呈指数趋势急剧下降,极大

的降低时间复杂度。

4.2.3 物化视图的调整

BPUS 算法的主要缺陷是每一步选取的视图都作为将来要物化的视图,没有考虑每选择一个新的视图后,已选视图的效益值出现衰减,而这一变化可能会使其应从已选视图集中删除。所以需要根据查询概率对算法2得到的物化视图集进行调整,用查询概率高的视图替代已选出的物化视图集V 中收益减少太多的视图。

算法3. 物化视图集的调整算法MAVM MAVM(Space,CV,V)

{ Search=True ;V temp =?;V remove =?;

while (CV ≠null&& V ≠null && Search==True) { v=CV 中f(v)/|v|最大的视图;

u=V 中f(u)/|u|最小的视图; if (f(v)/|v|)<(f(u)/|u|) Search=false ; else

if Space>|v|

if C(V ∪{v})< C(V)

{V=V ∪{v};CV=CV-{v}; Space=Space-|v|;}

else

Search=False ; else

{Search1=True ;

while Search1==True && V ≠null { w=V-V remove 中第一个视图; if ((v ∈D(w) or w ∈D(v)) and C(V ∪{v}-{w})< C(V))

if (Space+|w|≥|v|){

V=V ∪{v}-{w};CV=CV-{v}; Space=Space+|w|-|v|;

Search1=False ;V remove =?;} else

if (C(V)>C(V-{w}))

{V=V-{w};Space=Space+|w|;}

else

{V remove =V remove ∪{w};

If V==V remove

Search1=False;}

else

{V temp=V temp∪{w};V=V-{w};}

}

if (Search1==True and V==null) or

(Search1==False and V remove≠null )

CV=CV-{v};

V=V∪V temp;

}

}

return V;}

MAVM算法的时间复杂度为O(nlog2n)。如果采用适当的辅助存储,MAVM的时间复杂度可以大大降低。当系统中经过算法1筛选后的候选视图数量还是比较多时,可以为这些候选视图按照p(v)/|v|建立索引。这样其时间复杂度仅相当于所选择的物化视图的个数。

4.3 物化视图的动态调整

由于数据仓库的时变性特点,随着用户的使用,新的查询的增加,系统中的查询的分布情况亦可能发生变化,使得原有的物化视图集合不再适应新的查询分布情况,从而导致查询响应性能的下降,为此要求物化视图集及时做出必要的调整,以往常见的方法需要数据仓库管理员根据经验和需求的变化以及相关的统计信息,选择适当的时机(一般在数据仓库离线状态下)重新执行视图选择算法。然而各种因素制约了这一机制,由此对物化视图在线动态调整提出了更为迫切的要求。研究人员从动态的角度提出了一些时间复杂度较低适合在线的算法,文献[11]提出一种建立于cache机制的DynaMat系统,但其最优集的选择显得较为粗糙,缺乏相应的理论依据;而文献[7]采用一种实时调整策略--基于动态的FPUS算法,所谓实时调整,就是在计算查询后立即调整物化视图集合,这种实时调整发生在执行一个查询之后。但是这种实时调整策略会导致物化集存在频繁的“抖动”。

所以我们选择在一定的统计周期内,观察多维数据格模型中视图集合的查询分布概率有没有变化,若当前的统计周期与上一统计周期内视图集合的查询分布概率没有发生变化,则无须进行物化视图的动态调整;否则调用物化视图动态调整算法进行物化视图的调整。本文以固定的查询发生次数作为一个统计周期。查询概率p i(n)指的是在第n个统计周期T(n)里视图v i发生查询的频率(查询次数/统计周期)。

定义11(有效样本空间)在当前的统计周期T(n)内,发生的n个查询事件集合{q1,q2,…q n},称为有效样本空间,记作Q set(n)。

Q set(n)用来描述当前的查询趋势,预示未来可能发生查询趋势。因为对于随机分布的查询,选取最新的数据才能反映出查询变化,并可以用来预测未来可能发展的趋势。

定义12(有效样本集合)在Q set(n)内,查询事件相对应的影响视图集合为{v1,v2,…,v k},称为有效样本集合,记作V set(n)。

通过观察Q set(n)内查询代价的数学期望的变化,对查询视图类型分布变化来进行定量的估计,

数学期望为:

1

()()

n

n i i

i

E V p n v

=

=*

∑。但E(V)并不

能完全判断视图分布情况,同时还需要通过计算均方差来判断查询代价同E(V)的偏离程度。有效样本空间Q set(n)内的方差公式:

2

1

()(())()

n

n i n i

i

D V v

E V p n

=

=-*

但是在两个相邻的样本空间内若两个视图vi 和v j,|v i|=|v j|,在T(n-1)周期中p i(n-1)=p1,p j(n-1)=p2,p1>>p2但在T(n)周期中,p i(n)=p2,p j(n)=p1,而其他的视图的查询概率在两个周期中都不改变,则其查询代价的数学期望和方差都相等,但是其视图集合的查询分布概率也发生了本质变化,可能原本在物化视图集中的v i因为查询概率的减少应该被v j替换出物化视图集,所以还需要通过计算相邻两个样本空间中视图查询概率变化约束条件:2

1

()((()(1)))

n

i i i

i

G v p n p n v

=

=--*

所以在两个相邻样本空间内如果数学期望E n(V)≈E n-1(V),且D n(V)≈D n-1(V),且G(v)

物化视图的动态调整算法首先根据最近的统计周期中的有效样本空间Q set(n)作为输入,调用算法1,计算出有效样本集合中的每个视图查询概率,之后计算数学期望E n(V)和方差D n(V),并同上一个样本空间Q set(n-1)的数学期望E n-1(V)和方差D n-1(V)比较,此外还要计算G(V)并与约束up_limit比较。如果没有达到上限up_limit,则无须对物化视图进行调整;反之,实体化视图就需要调整,并调用动

态调整算法。

算法4.物化视图动态调整算法DMAVM

输入:用户查询集Q set(n),统计出的该周期内各查询集的查询概率f q,多维数据格图V0,可用空间Space,样本空间Q set(n-1)的数学期望E n-1(V)和方差D n-1(V)

输出:调整后的物化视图V

Procedure DMAVM(Space,Q set(n),f q,V0,E n-1

(V set(n-1)),D n-1(V set(n-1))) { (V set(n),p(n))=CVSA(Q set(n),f q,V0);

If Check_Modify(V set(n),p(n),

E n-1(V set(n-1)), D n-1(V set(n-1)))

//根据上述思想判断是否要动态调整

IGA(Space, V set(n));

Return V;

}

5 实验与性能分析

5.1 实验设计

目前各种视图选择算法中,较具代表性的选择算法有BPUS和PBS,其中PBS算法较快达到O(nlgn),然而该算法需要一定的前提条件(要求其格图属于SR-hypercube lattice),使该算法在实际应用中受到较大的限制。为了使算法对比更具有普遍性,实验采用DSSMV策略与单纯的BPUS相比较。

测试环境中的硬件平台为DELL OPTIPLEX GX270(P4 2.60GHz CPU,512M RAM),运行Windows 2000 Sever操作系统,数据库平台为Oracle 8,算法用Microsoft Visual C++ 6.0实现。

5.2 性能分析与对比

BPUS算法的时间复杂度为O(kn2),在允许物化视图数k相同的条件下,算法的时间消耗与结点总数n的平方成正比,所以减少n,对于降低算法的开销意义重大。DSSMV策略的开销包括4部分:①候选视图集合CV的构造为O(d2),d为与用户查询直接对应的视图数量。②IGA算法第一步进行初步物化视图选择为O(km2),m为生成候选视图的数量,m=n/§。

③MAVM算法对初步选择的物化视图集进行调整O(mlog2m)④物化视图动态调整算法DMAVM中判断是否要动态调整的Check_Modify算法O(m)。

我们测试数据集都有1个事实表,每个维表都有3个层次。在三个实验中我们都利用模拟的查询发生器产生2000次查询事件,统计周期为100次,其查询的分布满足2~8原则,即80%查询量产生于

20%的查询。

实验一中我们将数据集的维数从3个维逐渐增加到5个维。每次统计周期结束后分别调用BPUS算法和动态调整算法DMAVM进行比较。BPUS算法所面对的视图数量分别为 64,226,974,经过候选视图选择算法CVSA处理后候选视图的平均数量为:62,167,398。参与选择算法的视图数得以大幅减少。因为每个统计周期中的候选视图数量不同,我们取其平均值作为代表。具体的对比实验如图3所示:

图3 算法时间开销比较

50

100

345

维数/个

/

s

由上图可见,DSSMV策略相对于单纯的BPUS算法其算法时间开销很低,完全可以适用于物化视图的在线动态调整。此外,在维数较少时两种算法的时间开销差别不是非常明显,但是随着维数的增加,BPUS算法的时间开销成指数增加,而DSSMV策略的时间开销增加有限。这是因为当数据集维数较少时如3个维时,待筛选的视图总数不大仅为64个,在统计周期内(有效样本空间Q set(n)执行了100个查询),大部分视图都属于有效样本集合V set(n),所以经过候选视图选择算法得到的候选视图数量为62,和BPUS算法相差不大,甚至DSSMV算法的时间开销还要大于BPUS,因为它包括了候选视图算法CVSA和MAVM算法等算法的开销。但是当数据集维数增加后,DSSMV算法的优势就体现出来,由于候选视图算法对视图的筛选作用,以及在统计周期内有限的查询数量对应的有效样本集合V set(n)有限,使得参与DSSMV算法选择的视图数得以大幅度减少,从而大大降低了算法的时间开销。

虽然二者选择算法中都包含有BPUS算法的思想,但是他们面临的视图空间有很大差异,而且DMAVM算法在进行改进的BPUS算法的选择后还对物化视图集进行了适当的调整,所以两种算法选择的物化视图集会有不同,为此有必要对其物化视图集实际的查询响应性能进行比较。在此本文采用平均响应时间来衡量查询响应能力。实验二中我们在每500次查询后,计算其平均响应时间并进行比较。具体结果如下图所示。

图4 查询响应时间比较

5101520500

1000

1500

2000

查询次数/次

平均响应时间/s

由上图可见,DSSMV 策略所选择的物化视图集

在对查询的响应性能方面优于BPUS 算法,其主要因为DSSMV 策略中物化视图集调整算法MAVM 将收益值出现大幅度衰减的视图从已选视图集中删除,取而代之以能使总体查询代价减少的视图。

实验三中我们希望判断当查询类型分布发生变化时,算法对物化视图集的调整是否改善了查询代价。实验中我们在每次统计周期结束时执行物化视图的动态调整算法DMAVM ,为方便结果显示,我们仅列出了前1000次的结果。如下图所示。

图5 调整算法前后查询代价比较

100

120140160

100

200

300

400

500

600

700

800

900

1000

查询次数/次

查询代价

我们发现调整后的数学期望总是比调整前要小,说明算法有效地降低了查询代价。图中三个查询区间没有对物化视图进行调整,分别在400~500,700~800和800~900三个查询区间,这是因为在这几个区间查询视图分布同上一个查询区间的分布近似,所以没有进行物化视图调整。

6 结论

本文的提出的DMAVM 算法通过削减算法的搜索空间,降低了算法的复杂度,同时通过改进BPUS 算法,并增加调整算法提高了物化视图集对查询的响应性能,该策略通过定时地判断视图查询分布是否变化来决定是否进行物化视图的动态调整,避免了物化视图集的“抖动”。通过分析和实验可以看到,该算法通过定时地执行可以显著降低管理员的工作复杂度,保持物化视图集具有较好的响应性能。

参考文献

1 V Harinarayan, A Rajaraman ,J D Ullman. Implementing data cubes efficiently.In: H V Jagadish, I S Mumick eds. Proc of the 1996 ACM SIGMOD Int ’l Conf on

Management of Data. New York: ACM Press,1996.205~216

2 H Gupta, V Harinarayan, A Rajaraman,et al . Index selection for OLAP. In: A Gray, Larson,Per-?ke eds. Proc of the 13th Int ’l Conf on Data Engineering. Los Alamitos, CA: IEEE Computer Society Press, 1997. 208~219

3 A Shukla, P M Deshpande,J F Naughton. Materialized view selection for multidimendional datasets. In: Proc of the 24th Int ’l Conf on VLDB. San Francisco: Morgan Kaufmann,1998.488~499

4 H Gupta. Selection of views to materialize in a data warehouse. The 6th ICDT,Delphi,Greece,1997

5 J Yang, K Karlapalem, Q Li. Algorithms for materialized view design in data warehousing envirionment. In: Proc of the 23rd Int ’l Conf on VLDB. San Francisco: Morgan Kaufmann, 1997.136~145

6 C Zhang, X Yao, J Yang. An evolutionary approach to materialized views selection in a data warehouse environment. IEEE Trans on Systems, Man and Cybernetics, Part C,2001,31(3):282~294

7 谭红星,周龙骧。多维数据实视图的动态选择。软件学报,2002,13(6):1090~1096

8 Gupta H, Mumick IS . Selection of views to materialize under a maintenance cost constraint . In: Lecture Notes In Computer Science 1540: 1999.453~470

9 R Agrawal, A Gupta, S Sarawagi. Modeling multidimensional databases. In: A Gray, Larson Per-?ke eds. Proc of the 13th Int ’l Conf on Data Engineering. Los Alamitos, CA: IEEE Computer Society Press, 1997. 232~243

10 A Shukla, P Deshpande, J F Naughton,et al . Storage estimation for multi-dimensional aggregates in the presence of hierarchies. In: T M Vijayaraman, A P Buchmann, C Mohan eds. Proc of the 22nd Int ’l Conf on Very Large Data Bases. San Francisco: Morgan Kaufmann,1996.522~531

11 Y Kotidis, N Roussopoulos. DynaMat: A dynamic view management system for data warehouses. The 1999 ACM SIGMOD Int ’l Conf on Management of Data, Philadelphia,Pennsylvania,1999

西安石油大学数据库实验3索引及视图操作

实验报告 课程名称:学院名称:数据原理与应用计算机学院 专业班级:计1201 学生姓名:张文江 学号:201107010122

实验3 索引及视图操作 一、实验目的 1. 加深对索引和视图概念的理解。 2. 熟练掌握索引的创建和删除。 3. 熟练掌握视图的创建、修改和删除。 4. 熟练运用视图进行各种检索操作。 二、实验环境 硬件环境:PC机 软件环境:操作系统为Microsoft Windows 2000或以上版本。 数据库管理系统为Microsoft SQL Server 2000标准版或企业版。 三、实验内容 1. 熟悉运用SQL Server企业管理器和查询分析器进行索引的创建和删除。 2. 熟悉运用SQL Server企业管理器和查询分析器进行视图的创建、删除和修改。 四、实验步骤 1. 利用实验1已经建立并保存过的学生表、课程表,学生表按学号建立惟一索引,课程表按课程名建立惟一索引; create index S_sno on S(sno) create index C_cno on C(cno) 2. 利用实验1已经建立并保存过的学生表和选课表建立一个“网络工程”专业学生成绩视图JSGV(sno,cno,grade); create view JSGV(sno,cno,grade) as select S.sno,cno,grade from SC,S where dept='网络工程'and S.sno=SC.sno 利用视图JSGV查询“网络工程”专业的学生选课多于2门的学生学号; select distinct sno

from JSGV group by sno having (count(*)>2) 验证能否利用视图JSGV中插入一条“网络工程”专业学生选修“高等数学”课程的记录,并查询结果信息; insert into JSGV values('20080205','c03','85') 删除视图JSGV。 drop view JSGV 3. 利用实验1已经建立并保存过的学生表、课程表、选课表建立视图TOTAL(sno,sname,cname,grade); create view TOTAL(cno,sname,cname,grade) as select https://www.wendangku.net/doc/4511959049.html,o,sname,cname,grade from SC,S,C where S.sno=SC.sno and https://www.wendangku.net/doc/4511959049.html,o=https://www.wendangku.net/doc/4511959049.html,o

数据库实验4_数据库查询与视图

在学生选课数据库中完成规定查询,并创建视图。 1.查询线性代数不及格的同学的学号和姓名; SQL语句为:SELECT名单$.学号,姓名 FROM名单$,学生选课信息和成绩$,课程$ WHERE名单$.学号=学生选课信息和成绩$.学号AND课程$.课号=学生选课信息和成绩$.课号AND 课程$.课程名='线性代数' AND学生选课信息和成绩$.成绩<60; 执行后结果为: 2.查询没有选课记录的同学的所有基本信息; SQL语句为:SELECT* FROM名单$ WHERE NOTEXISTS (SELECT* FROM学生选课信息和成绩$

WHERE学号=名单$.学号); 执行后结果为: 3.查询具有简介先修课的课程信息及对应的先修课名;SQL语句为:SELECTFIRST.课号,SECOND.课程名FROM课程$FIRST,课程$SECOND WHEREFIRST.先修课号=SECOND.课号; 执行后结果如下:

4.统计高等数学(1)的平均成绩; SQL语句为:SELECT AVG(成绩) FROM学生选课信息和成绩$,课程$ WHERE学生选课信息和成绩$.课号=课程$.课号AND课程$.课程名='高等数学(1)'; 执行后结果如下: 5.统计各门课的选课人数; SQL语句为:SELECT课号,COUNT(学号) FROM学生选课信息和成绩$ GROUPBY课号; 执行后结果为:

6.查询选修5门课以上的学生的学号;SQL语句为:SELECT学号 FROM学生选课信息和成绩$ GROUPBY学号 HAVING COUNT(*)>5; 执行后结果为:

视图与索引作业

第一部分 创建如下表:并向每张表中添加5条数据 学生表t_student(f_no,f_name,f_sex,f_department) 课程表(f_id,f_name) 成绩表(f_no,f_subjectid,f_score) 作业: 1、对成绩表的课程编号创建非簇索引 2、对学生表的姓名和年龄创建非簇索引 3、对学生表的学号创建唯一索引 4、创建视图统计成绩表中任何一门课程及没有及格的信息 5、创建视图查询男生的平均成绩 6、对课程表的课程编号和分数创建非簇索引 7、将上题中的非簇索引删除 8、创建视图查询C#课程不及格的女生信息 9、创建视图统计男女生的平均分信息 10、简述索引的作用和种类 11、简述视图的作用 第二部分 使用northwind数据库完成: 1)在northwind库中(products和suppliers表中)查找每个商品对应的供应商名 称建立视图my_view,并通过该视图查询数据。 2)在视图my_view中,将companyname为以tokyo开头的改为ToKyo.使用修改表数 据的UPDATE语句。 3)使用DROP VIEW语句将视图my_view删除。 4)使用Northwind数据库,在Suppliers表的Country列和city列上创建一个名为 Country_index的非聚集索引。 5)删除Country_index索引。 6)在Suppliers表的Country列和city列上创建一个名为Country_index的非聚集 索引。请确保索引页留有50%的空白空间,并且删除具有相同名称的现有索引 7)使用CREATE VIEW语句,基于employees表创建一个名为EmpHierarchy的视图。 视图应包含有上级领导的雇员的雇员ID、名、姓及其上级的姓 8)在视图EmpHierarchy中,将雇员ID为4的雇员的姓改为”Jones”。使用修改表数 据的UPDATE语句 9)使用DROP VIEW语句将视图EmpHierarchy删除

物化视图

ORACLE中的物化(实体)视图 物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。 物化视图可以查询表,视图和其它的物化视图。 通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。 对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。 本篇我们将会看到怎样创建物化视图并且讨论它的刷新选项。 在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。 1.主键物化视图: 下面的语法在远程数据库表emp上创建主键物化视图SQL> CREATE MATERIALIZED VIEW mv_emp_pk REFRESH FAST START WITH SYSDATE 1/48 + NEXT SYSDATE WITH PRIMARY KEY

AS SELECT * FROM emp@remote_db; created. view Materialized 注意:当用FAST选项创建物化视图,必须创建基于主表的视图日志,如下: SQL> CREATE MATERIALIZED VIEW LOG ON emp; Materialized view log created. 2.Rowid物化视图 下面的语法在远程数据库表emp上创建Rowid物化视图SQL> CREATE MATERIALIZED VIEW mv_emp_rowid WITH ROWID REFRESH AS SELECT * FROM emp@remote_db; Materialized view log created. 3.子查询物化视图 下面的语法在远程数据库表emp上创建基于emp和dept表的子查询物化视图 SQL> CREATE MATERIALIZED VIEW mv_empdept AS SELECT * FROM emp@remote_db e EXISTS WHERE (SELECT * FROM dept@remote_db d WHERE e.dept_no = d.dept_no) Materialized view log created. REFRESH 子句

SQL_Server实用教程(第三版)实验4_数据库的查询和视图

实验四数据库的查询和视图 T4.1 数据库的查询 1.目的与要求 (1)掌握select语句的基本语法; (2)掌握子查询的表示 (3)掌握连接查询的表示 (4)掌握select语句的group by子句的作用和使用方法 (5)掌握select语句的order by子句的作用和使用方法 2 实验准备 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUPBY子句的作用和使用方法; (6)了解SELECT语句的ORDERBY子句的作用; 3实验内容 SELECT语句的基本使用。 ①对于实验2给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在查询分析器中输入如下语句并执行: USEYGGL GO SELECT * FROM Employees 【思考与练习】用SELECT语句查询Departments和Salary表中所有的数据信息。 用SELECT语句查询Employees表中每个雇员的地址和电话。 新建一个查询,在查询分析器中输入如下语句并执行: Use YGGL GO SELECT Address PhoneNumber

FROM Employees 【思考与练习】 a.用SELECT语句查询Deparments和Salary表的一列或若干列。 b.查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。 c.查询EmployeeID为000001的雇员的地址和电话。 Use YGGL GO SELECT Address PhoneNumber FROM Employees WHERE EmployeeID=’000001’ 【思考与练习】 a.查询月收入高于2000元的员工号码。 b.查询1970年以后出生的员工的姓名和住址。 c.查询所有财务部的员工的号码和姓名。 查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标 题分别指定为地址、电话。 USE YGGL GO SELECT Address AS 地址,PhoneNumber AS 电话 FROM Employees WHERE Sex=0 【思考与练习】查询Employees表中男员工的姓名和出生日期,要求将各列标题用中文标示。 ⑤查询Employees表中员工的姓名和性别,要求SEX值为时显示为“男”,为0时显示为“女”。 SELECTNameAS姓名, CASE WHENSex=1 THEN男 WHENSex=1 THEN女 END AS性别 FROMEmployees

第六章视图分析

第六章视图 1.概述 ?视图(View)是从一个或多个表(其他视图)中导出的表,其结构和数据是建立在对表的查询基础之上的。所以视图不是真实存在的基础表, 而是一张虚表。视图所对应的数据并不实际地以视图结构存储在数据库 中,而是存储在视图所引用的表中。 ?视图一经定义便存储在数据库中,与其相对应的数据并没有像表一样在数据库中另外存储一份,通过视图看到的数据只是存放在基表中的数据。 对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的 限制)和删除。 ?当对视图中的数据进行修改时,相应的基表的数据也要发生变化,同时,如果基表的数据发生变化,则这种变化也可以自动地反映到视图中 2.视图的特点 1.视点集中,减少对象大小 视图让用户能够着重于他们所需要的特定数据或所负责的特定要求,如 用户可以选择特定行或特定列。 2.从异构源组织数据 可以在连接两个或多个表的复杂查询的基础上创建视图,这样可以将单 个表显示给用户。 3.隐藏数据的复杂性,简化操作 视图向用户隐藏了数据库设计的复杂性,这样如果开发者改变数据库设 计,不会影响到用户与数据库交互。另外,用户可将经常使用的连接查 询、嵌套查询或联合查询定义为视图。 4.简化用户权限的管理 可以将视图的权限授予用户,而不必将基表中某些列的权限授予用户, 这样就简化了用户权限的定义。 3.视图的四种类型 ?关系视图: 关系视图(relational view)基本上就是经过存储的查询,可以将它的输出看作是 一个表。它就是基于关系数据的存储对象。 ?内嵌视图: 又称为嵌套查询,是嵌入到父查询中的查询,能够在任何可以使用表名称的地 方使用。 ?对象视图: 为了迎合数据库中对象类型而将关系表投射到特定数据类型的虚拟对象表中, 视图的每行都是带有属性、方法和唯一标识(OID)的对象实例。 ?物化视图: 就是在数据库中查询结果存储在视图中,并支持查询重写、刷新、提交等特性 的视图 4.视图的创建及管理

Oracle物化视图创建全过程

Oracle物化视图创建全过程 我们如果遇到需要从其它系统的数据库中取数据进行统计分析的问题,可疑选择使用ORACLE的ODI工具进行抽数,但是对方提供的数据库用户下没有任何对象,只是有查询所有表的权限,因此无法做数据反向。 于是决定使用物化视图,把对方数据库中的数据拿过来,虽然数据量比较大,但是每月只拿一次,而且如果设置成增量更新,也不会太慢。现在记录下物化视图的创建过程(以一张表为例)。 一、准备条件以及备注 假设双方数据库都是ORACLE10g,需要同步过来的表名叫:GG_ZLX_ZHU,对方数据库用户名:username,密码:password,SID:CPEES。 二、开始干活 1、首先要创建DB_LINK CREATE DATABASE LINK to_cpees CONNECT TO "username" identified by "password" using "CPEES"; 或者 create database link to_cpees connect to username identified by "password" using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =IP地址)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = cti) ) )'; 其中CPEES为新建的到对方数据库的TNS。执行,现在我们就已经创建了到对方数据库的DB_LINK TO_CPEES。 2、创建Oracle物化视图快速刷新日志 因为上面说过,以后视图的刷新将采用增量刷新的方式,因此,为配合增量刷新,ORACLE要求要在住表上建立物化视图日志。 CREATE MATERIALIZED VIEW LOG ON GG_ZLX_ZHU WITH PRIMARY KEY INCLUDING NEW VALUES; (上面的SQL要在远程数据库上执行,不能在本地执行) 3、创建Oracle物化视图 Oracle物化视图,从名字上面来开,它应该是属于视图,但是确实物化。 其物化是针对普通视图并没有真正的物理存储而言,其实可以简单的把物化视图看做一个物理表。

实验三大数据库地查询和视图

实验三数据库的查询和视图 T4.1 数据库的查询 1、目的和要求 (1)掌握SELECT语句的基本语法。 (2)掌握子查询的表示。 (3)掌握连接查询的表示。 (4)掌握SELECT语句的GROUP BY子句的作用和使用方法。 (5)掌握SELECT语句的ORDER BY子句的作用和使用方法。 2、实验准备 (1)了解SELECT语句的基本语法格式。 (2)了解SELECT语句的执行方法。 (3)了解子查询的表示方法。 (4)了解连接查询的表示。 (5)了解SELECT语句的GROUP BY子句的作用和使用方法。 (6)了解 SELECT语句的ORDER BY子句的作用。 3、实验内容 (1)SELECT语句的基本使用。 ①对于实验二给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在“查询分析器”窗口中输入如下语句并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 【思考与练习】 用SELECT语句查询Departments表和Salary表中所有信息。

新建一个查询,在“查询分析器”窗口中输入如下语句并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 在“消息”中会发现总共有60行受影响。 ②用SECECT语句查询Employees表中每个雇员的地址和电话号码。 新建一个查询,在“查询分析器”窗口中输入如下代码并执行。 单击右键空白处,选择执行,在下方会出现所有结果。 在“消息”中会发现有12行记录受影响 【思考与练习】 A、用SELECT语句查询Departments表和Salary表的一列或若干行。

利用SELECT语句查询Departments表和Salary表中 EmployeeID为000001的记录,在“查询分析器”中输入以下代码。 执行后在下方会出现所有EmployeeID=000001的记录 B、查询Employees表中部门号和性别,要求使用DISTINCT消除重复行。 对表只选择某些行时,可能会出现重复行。此时就需要使用DISTINCT关键字消除结果中的重复行。此时使用DISTINCT消除在Employees中查询到的部门号和性别的重复行,具体代码如下。 上面代码分别是使用了DISTINCT和没有使用DISTINCT关键字,下面就是两种的结果的对比。 可以从上面的执行结果中看出使用了DISTINCT关键字,结果集中的重复行就被消除了。 ③查询EmployeeID为000001的雇员的地址和电话。

数据库原理索引、视图的定义实验报告

数据库原理实验报告 题目:索引、视图的定义院系:计算机科学与工程学院

【实验题目】 索引、视图的定义 【实验目的】 掌握使用T -SQL语句创建视图的方法,包括视图的建立、删除、修改;了解如何应用视图有选择地查看所需数据,并熟悉通过视图更改数据表中数据的方法。掌握创建索引的方法。 【实验内容】 1、据库TestDB中,基于表"项目数据表"和"员工数据表"创建视图,要求为: (1)视图名为"员工项目"。 (2)包含字段"编号"、"姓名"、"名称"和"开始日期"。 (3)字段别名分别是"员工编号"、”员工姓名"、"项目名称"、"项目开 始日期"。 2、使用企业管理器和Transact-SQL语句在实验二的数据表"员工数据表"中基于"姓名"创建索引,要求索引名为"IDX_Name",索引类型为非聚集索引。 【实现方法】 1、视图 (1)打开查询分析器。 在查询窗口书写CREATE VIEW语句创建视图,并指定字段别名: USE TestDB GO CREATE VIEW员工项目(员工编号,员工姓名,项目名称,项目开始日期) AS SELECT a·编号,a·姓名,b·名称,b·开始日期, FROM员工数据表AS a INNER JOIN项目数据表AS b ON a·编号=b·负责人 WHERE a·编号=b·负责人 GO (2)使用INSERT语句通过视图向员工数据表中添加一条记录,要求"姓名"字段值 为"马中兴"。 USETestDB GO INSERTINTO 员工项目(员工姓名) VALUES('马中兴') GO (3)使用UPPDATE语句通过视图将第二步中插入记录的员工姓名改为"马中新"。 USETestDB GO UPDATE员工项目 SET 项目负责人= '马中新’, WHERE 项目负责人=’马中兴’

数据库原理实验报告实验四视图与索引

数据库原理实验报告实验 四视图与索引 The Standardization Office was revised on the afternoon of December 13, 2020

一、实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5分) 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。 --第一种方法 CREATE VIEW V_SPJ AS SELECT sno,pno,qty FROM SPJ WHERE jno=( SELECT jno FROM J WHERE jname ='三建' ); GO --删除建好的视图 DROP VIEW V_SPJ; GO --第二种方法 CREATE VIEW V_SPJ AS

SELECT sno,pno,qty FROM SPJ,J WHERE=AND='三建'; 3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、 零件代码(PNO)、供应数量(QTY)。 针对该视图VSP完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。

4.用SQL语句完成视图的数据更新。(15分,每题5分) (1)给视图V_SPJ中增加一条数据。 提示: -SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO为NULL,所以视图中没有该条数据。 -SPJ表中JNO不能为空时,可以使用instead of触发器实现。 (2)修改视图V_SPJ中的任意一条数据的供应数量。

物化视图BUG 导致CPU消耗超高

单击此项可添加到收藏夹 MATERIALIZED VIEW FAST REFRESH IS VERY SLOW, "AS OF SNAPSHOT" CURSORS NOT BEING SHARED (文档ID 1051346.1) 转到底部转到底部 In this Document Symptoms Cause Solution References Applies to: Oracle Database - Enterprise Edition - Version 10.1.0.5 to 11.2.0.2.0 [Release 10.1 to 11.2] Information in this document applies to any platform. Symptoms On a production database version 11.1.0.7, the fast refresh of a nested materialized view takes a lot of time comparing to the select statement used for the creation of the materialized view. The refresh of the mview takes approximately 16 min. The select statement itself finishes in about 8 seconds. It can be seen that most of the time is spent with the parse of update sys.sumpartlog$ statement. ******************************************************************************* * updatesys.sumpartlog$ s set s.timestamp = :1, s.scn = :2 where

SQL实验四:数据库的查询和视图

二 〇 一 五 年 四 月 题 目:数据库的查询和视图 学生姓名:孙跃 学 院:理学院 系 别:数学系 专 业:信息与计算科学 班 级:信计12-2 任课教师:侯睿 《数据库原理及应用》实验报告

一、练习目的 1、数据库的查询 (1)掌握SELECT语句的基本语法; (2)掌握子查询的表示; (3)掌握连接查询的表示; (4)掌握SELECT语句的GROUP BY子句的作用与使用方法; (5)掌握SELECT语句的ORDER BY子句的作用与使用方法; 2、视图的使用 (1)熟悉视图的概念和作用; (2)熟悉视图的创建方法; (3)熟悉如何查询和修改视图。 二、练习准备 1、数据库的查询 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUP BY子句的作用与使用方法; (6)了解SELECT语句的ORDER BY子句的作用; 2、视图的使用 (1)了解视图的概念; (2)了解创建视图的方法; (3)了解并掌握对视图的操作。 三、实验程序 实验4.1 数据库的查询 1、(1)对于实验2给出的数据库结构,查询每个雇员的所有数据. USE YGGL GO SELECT* FROM Employees (2)用SELECT语句查询Employees表中每个雇员的地址和电话. SELECT Address,PhoneNumber FROM Employees (3)查询EmployeeID为000001的雇员的地址和电话. SELECT Address,PhoneNumber FROM Employees WHERE EmployeeID='000001' GO (4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别制定地址和电话. SELECT Address AS地址,PhoneNumber AS电话 FROM Employees WHERE Sex=0 (5)查询Employees表中员工姓名和性别,要求Sex值为1时显示为“男”,为0时显示为“女”. SELECT Name AS姓名, CASE

物化视图

物化视图日志结构 物化视图的快速刷新要求基本必须建立物化视图日志,这篇文章简单描述一下物化视图日志中各个字段的含义和用途。 物化视图日志的名称为MLOG$_后面跟基表的名称,如果表名的长度超过20位,则只取前20位,当截短后出现名称重复时,Oracle 会自动在物化视图日志名称后面加上数字作为序号。 物化视图日志在建立时有多种选项:可以指定为ROWID、PRIMARY KEY和OBJECT ID几种类型,同时还可以指定SEQUENCE 或明确指定列名。上面这些情况产生的物化视图日志的结构都不相同。 任何物化视图都会包括的列: SNAPTIME$$:用于表示刷新时间。 DMLTYPE$$:用于表示DML操作类型,I表示INSERT,D表示DELETE,U表示UPDATE。 OLD_NEW$$:用于表示这个值是新值还是旧值。N(EW)表示新值,O(LD)表示旧值,U表示UPDATE操作。CHANGE_VECTOR$$表示修改矢量,用来表示被修改的是哪个或哪几个字段。 如果WITH后面跟了ROWID,则物化视图日志中会包含: M_ROW$$:用来存储发生变化的记录的ROWID。 如果WITH后面跟了PRIMARY KEY,则物化视图日志中会包含主键列。 如果WITH后面跟了OBJECT ID,则物化视图日志中会包含: SYS_NC_OID$:用来记录每个变化对象的对象ID。 如果WITH后面跟了SEQUENCE,则物化视图日子中会包含: SEQUENCE$$:给每个操作一个SEQUENCE号,从而保证刷新时按照顺序进行刷新。 如果WITH后面跟了一个或多个COLUMN名称,则物化视图日志中会包含这些列。 下面通过例子进行详细说明: SQL> create table t_rowid (id number, name varchar2(30), num number);

数据库实验-数据库索引、视图与触发器

石家庄经济学院 实验报告 学院: 信息工程学院 专业: 网络工程 信息工程学院计算机实验中心制

1.索引的建立和删除操作 2.视图的创建、修改、更新和查询操作 二实验目的 1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。 2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。 三实验内容 1.索引的建立和删除操作 (1)在S表中,建立按照sno升序的惟一性索引snoIDX。 (2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。 (3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。 (4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。 (5)删除索引cnameIDX。 2.视图的创建、修改、更新和查询操作 (1)建立一个关于所有女生信息的视图S_GIRL。 (2)将各系学生人数,平均年龄定义为视图V_NUM_A VG (3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。 (4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。 (5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。 (6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。 (7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。 (8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。 (9)删除视图S_GRADE。 (10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。 (11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询 结果。 (12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。 (13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。 (14)通过视图COMPUTE_A VG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实 现,请说明原因。 四实验要求 1.要求掌握索引的类型,以及创建索引时的注意事项,例如每个表只能创建一个聚集索引,可以创建非聚集索引最多为249个,等等。 2.理解创建视图的目的和意义。掌握创建视图时需要考虑的原则:只能在当前数据库中创建视图、

oracle物化视图同步

1.目标服务器A,数据库oracle,待同步数据表city,用户hnjcfx,口令hnjcfx 2.同步服务器B,数据库oracle,需要同步A中city表数据,服务名192(参见tnsnames.ora文件中配置,按照格式需自己配置) 192 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.192)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = fantlam) ) ) 注:HOST 为目标服务器IP地址 Fantlam为目标服务器数据库实例名 3.登录B数据库,在Boracle数据库中创建连接Aoracle数据库的连接名testlk:Create public database link testlk connect to hnjcfx identified by hnjcfx using ‘192’ 注:目标方数据库(A)的init.ora文件中的global_names设为false。 创建数据库链接的帐号(B)必须有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限,用来登录到远程数据库的帐号(hnjcfx)必须有CREATE SESSION权限。这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。 4.在A数据库中创建存储日志视图 Create materialized view log on city 5.在B 数据库中创建物化视图city create materialized view city refresh force on demand with rowid START WITH TO_DATE('08-12-2008 16:40:00','dd-mm-yyyy hh24:mi:ss') NEXT SYSDATE+1/(24*60)as SELECT * from city@testlk; 注:如果24小时同步刷新数据改动SYSDATE+1 6.B数据库中city视图是由A同步来的,只可以做查询操作,无增改删操作。

视图和索引(数据库实验4)

. . . 数据库基础与实践实验报告实验四视图和索引 班级:惠普测试142 学号:1408090213 :闫伟明 日期:2016-11-13

1 实验目的: 1)掌握SQL进行视图创建的方法; 2)掌握SQL进行视图更新的方法,理解视图更新受限的原因; 3)掌握SQL进行索引创建及删除的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验容与步骤 利用实验一创建的sch_id数据库完成下列实验容。 1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。 视图定义代码: CREATE VIEW V_TCS AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno FROM T,D WHERE T.dno=D.dno AND D.dn='计算机' 视图查询语句与查询结果截图: SELECT*FROM V_TCS 2.定义视图V_sal,存放全体教师的教师号,教师,教师酬金(工资+岗位津贴),职称信息。视图定义代码: CREATE VIEW V_sal AS

SELECT tno教师号,tn教师,sal+comm教师酬金,prof支撑信息 FROM T 视图查询语句与查询结果截图: SELECT*FROM V_sal 3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。视图更新代码: INSERT INTO V_TCS SELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dno FROM D WHERE D.dn='计算机'

物化视图PPT

SQL> CREATE MATERIALIZED VIEW 2> depart_sal_sum as 3> select d.department_name, sum(e.salary) 4> from departments d, employees e 5> where d.department_id = e.department_id 6> group by d.department_name; SQL> CREATE MATERIALIZED VIEW 2> depart_sal_sum as 3> select d.department_name, sum(e.salary) 4> from departments d, employees e 5> where d.department_id = e.department_id 6> group by d.department_name;

?刷新一个到多个基表的物化视图 DBMS_MVIEW.REFRESH (’CUST_SALES ’, parallelism => 10);DBMS_MVIEW.REFRESH (’CUST_SALES ’, parallelism => 10);DBMS_MVIEW.REFRESH_DEPENDENT DBMS_MVIEW.REFRESH_DEPENDENT((’SALES ’);DBMS_MVIEW.REFRESH_DEPENDENT (’SALES ’);DBMS_MVIEW.REFRESH_ALL_MVIEWS DBMS_MVIEW.REFRESH_ALL_MVIEWS; ;DBMS_MVIEW.REFRESH_ALL_MVIEWS ;

物化视图使用详解

一.物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。 物化视图可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。物化视图有很多方面和索引很相似:使用物化视图的目的是为了提高查询性能;物化视图对应用透明,增加和删除物化视图不会影响应用程序中SQL语句的正确性和有效性;物化视图需要占用存储空间;当基表发生变化时,物化视图也应当刷新。 物化视图可以查询表,视图和其它的物化视图。 通常情况下,物化视图被称为主表(在复制期间)或明细表(在数据仓库中)。 对于复制,物化视图允许你在本地维护远程数据的副本,这些副本是只读的。如果你想修改本地副本,必须用高级复制的功能。当你想从一个表或视图中抽取数据时,你可以用从物化视图中抽取。 对于数据仓库,创建的物化视图通常情况下是聚合视图,单一表聚合视图和连接视图。 在复制环境下,创建的物化视图通常情况下主键,rowid,和子查询视图。 物化视图由于是物理真实存在的,故可以创建索引。 1.1 物化视图可以分为以下三种类型 (1)包含聚集的物化视图; (2)只包含连接的物化视图; (3)嵌套物化视图。 三种物化视图的快速刷新的限制条件有很大区别,而对于其他方面则区别不大。创建物化视图时可以指定多种选项,下面对几种主要的选择进行简单说明: (1)创建方式(BuildMethods):包括BUILD IMMEDIATE和BUILD DEFERRED两种。

实验4数据库的查询和视图.docx

南京信息工程大学实验(实习)报告 实验(实习)名称实验4 数据库的查询和视图实验(实习)日期2016.10.24 得分指导教师方忠进系计算机专业网络工程年级2014 班次 2 姓名刘信言学号20142346074 一.实验目的 (1)掌握select语句的基本语法; (2)掌握子查询的表示 (3)掌握连接查询的表示 (4)掌握select语句的group by子句的作用和使用方法 (5)掌握select语句的order by子句的作用和使用方法 二、实验准备 (1)了解SELECT语句的基本语法格式; (2)了解SELECT语句的执行方法; (3)了解子查询的表示方法; (4)了解连接查询的表示; (5)了解SELECT语句的GROUPBY子句的作用和使用方法; (6)了解SELECT语句的ORDER BY子句的作用; 三、实验内容 T4.1 数据库的查询 (1)SELECT语句的基本使用。 ①对于实验2给出的数据库表结构,查询每个雇员的所有数据。 新建一个查询,在查询分析器中输入如下语句并执行:

【思考与练习】 用SELECT语句查询Departments和Salary表中所有的数据信息。

②用SELECT语句查询Employees表中每个雇员的地址和电话。 新建一个查询,在查询分析器中输入如下语句并执行: 【思考与练习】 a. 用SELECT语句查询Deparments和Salary表的一列或若干列。 b. 查询Employees表中的部门号和性别,要求使用DISTINCT消除重复行。

③查询EmployeeID为000001的雇员的地址和电话。 【思考与练习】 a.查询月收入高于2000元的员工号码。

实验 视图、索引与数据库关系图

实验名称:实验五视图、索引与数据库关系图 班级学号姓名日期 所在院系指导老师成绩 一、试验目的 使学生掌握SQL Server中的视图创建、查看、修改和删除的方法;索引的创建和删除的方法;数据库关系图的实现方法。加深对视图和SQL Server数据库关系图的理解。 二、实验内容 (1)创建、查看、修改和删除视图。 (2)创建、删除索引文件。 (3)创建数据库关系图。 三、试验步骤 1)视图操作 (1)创建视图。 使用SQL Server Management Studio直接创建,步骤如下: 1.单击数据库前面的+号,然后再单击“学生选课”数据库前面的+号,右击“视图”,在弹出的快捷菜单中选择“新建视图”命令,弹出“添加表”对话框。如图5.1所示 图5.1 “添加表”对话框 2.在“添加表”对话框中,添加视图数据来源的表,这里添加三张表,分别是student、course和sc表。添加表后,单击添加表对话框中的“关闭”按钮,出现创建视图界面。如图5.2所示 图5.2添加字段前的效果图

3.如果要在视图中显示某些表的某个字段,只需单击其字段前的复选框即可,同时在中间列中会显示该字段,在代码区中会看到具体实现的代码。 4.如果要查看视图,单击常用工具栏中的“执行”按钮,就可以看到视图的数据显示,如由字段student.sno、sname、cname、grade生成的视图效果。如图 5.3所示 图5.3 生成视图效果图 5.在创建视图中还可以为字段添加列名、进行排序、添加多个筛选条件。 6.单击常用工具栏中的“保存”按钮,就可以弹出保存视图提示对话框,输入视图名字即可,为view_stu_grade。 (2)修改视图。 视图创建好后,就可以利用它进行查询信息了。如果发现视图的结构不能很好的满足要求,还可以对它进行修改。 使用SQL Server Management Studio直接修改,步骤如下: 1.在SQL Server Management Studio中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。 2.右击要修改结构的视图,在弹出的视图功能快捷菜单中选择“修改”命令,就可以直接修改了。 (3)删除视图 使用SQL Server Management Studio直接删除,步骤如下: 1.在SQL Server Management Studio中,选择服务器、数据库、并使数据库展开,再单击“视图”前面的+,就可以看到已存在的视图了。 2.右击要删除的视图,在弹出的视图功能快捷菜单中选择“删除”命令,就可以直接删除掉制定的视图。 2)索引文件的创建与删除 索引是一个单独的、物理的数据库结构,是为了加速对表中数据行的查询而创建的一种分散的存储结构。 (1)创建索引文件。 使用SQL Server Management Studio直接创建索引文件,步骤如下: 1.单击数据库前面的+号,然后再单击“学生选课”数据库前面的+号,再单击表前面的+号,就额可以看到已存在的表了, 2.选定要添加索引的表,如数据表student。右击,在弹出的快捷菜单中选择“修改”命令。

相关文档