若天明 发表于 2015-1-16 22:39:54

MYSQL教程之Oracle的体化D办理

对于现有业务,可以轻松移植到MySQL。当你需要替换掉老的硬件,当你需要削减历史遗留下的老系统的时候,选用MySQL对于财务部门来说更具吸引力。oracle
Oracle的体化D办理

作者:CCBZZP


1.体化D观点
体化D办理是用于R,A算,制或分l稻莸ο,在年夜型的稻中利用它能够进步触及到的SUM,COUNT,AVG,MIN,MAX等的表的查的速率,只需在体化D办理上建了y,查优化器⒆拥氖褂体化D办理,@特征被QQUERYREWRITE(查重).与一般的D分歧的是体化D办理存稻,占有稻的物理空g的.
建体化D办理的用舻嘞薇仨有:CREATEMATERIALZEDVIEW,CREATETABLE,CREATEVIEW,SELECT等,假如在其他的形式中建的要在表上有CREATEANYMATERIALIZEDVIEW和SELECT嘞.
要查重援用e的形式中的体化D办理的,要有援用的表的GLOBALQUERYREWRITEORQUERYREWRITE嘞.
假如划利用体化D办理的,要修正滴募屑:QUERY_REWRITE_ENABLE=TRUE

2.建体化D注重事:
建以后,是不是要填
多Lrg革新一次
利用那种革新型:COMPLE(完整),FAST(疾速),FORCE(制),NEVER(不)

3.建体化D
CREATEMATERIALIZEDVIEWTEST3
PCTFREE0TABLESPACEMTEST
STORAGE(INITIAL1MNEXT1MPCTINCREASE0)
BUILDDEFERRED
REFRESHFASTONCOMMIT
ENABLEQUERYREWRITE
ASSELECTEMP_NO,SUM(QTY_PSC)ASQTY_PSCFROMBSEMPMSGROUPBYEMP_NO;

4.h除体化D
DROPMATERIALIZEDVIEWTEST3;

5.办理和u估体化D的工具
要行DBMSSNAP.SQL和DBMSSUM.SQL体化D建包DBMS_MVIEW和DBMS_OLAP
DBMS_MVIEW用于绦泄芾砘拥.
DBMS_OLAP断定体化D是不是能进步查的功能.

6.革新体化D的办法
EXECUTEDBMS_MVIEW.REFRESH(TEST3,C);
个中TEST3体化D名Q,C樗⑿骂型中的一种.
革新型有:C-完整革新
F-疾速革新和制革新
EXECUTEDBMS_MVIEW.REFRESH_ALL
不承受任何,全体革新.

7.体化Dg的完全性
在体化D相互嵌套的r候貌煌体化D的革新的体例和rg的分歧而引发的稻莸耐暾缘},τ谶@种情r,建h把相P的体化D放在统一革新M中,f{M行革新.
DBMS_REFRESH件包中供应MAKE^程建一革新M.
比方:
EXECUTEDBMS_REFRESH.MAKE
(NAME=>TEST_GROUP,
LIST=>LOC_EMP,LOC_DPT,
NEXT_DATE=>SYSDATE,
INTERVAL=>SYSDATE+7);
下面建一体化D革新MTEST_GROUP,革新周期7天一次的.
体化DLOC_EMP和LOC_DPT通^一鬟fo^程的.

8.向革新M中增添革新的体化D
DBMS_REFRESH.ADD
(NAMEINVARCHAR2,
LISTINVARCHAR2,|
TABINDBMS_UTILITY.UNCLARRAY,
LAXINBOOLEAN:=FALSE);

9.向革新M中h除革新的体化D
DBMS_REFRESH.SUBTRACT
(NAMEINVARCHAR2,
LISTINVARCHAR2,|
TABINDBMS_UTILITY.UNCLARRAY,
LAXINBOOLEAN:=FALSE);

10.手工h除一革新M
EXECUTEDBMS_REFRESH.REFRESH(TEST_GROUP);
也能够
EXECUTEDBMS_REFRESH.DESTROY(NAME=>TEST_GROUP);

11.体化D的日记办理
体化D日记是一表,坚持体化D操纵的v史.
要建体化D日记必能在表上建AFTERROW触l器,必有CREATETRIGGER,CREATETABLE嘞

比方:
CREATEMATERIALIZEDVIEWLOGONBSEMPMS
TABLESPACEDATA_TEST
STORAGE(INITIAL1MNEXT1MPCTINCREASE0)
PCTFREE5PCTUSED90;
体化D日记的PCTFREE很小,PCTUSED很年夜的.
通^ALTERMATERIALIZEDVIEWLOG命令能够修正体化D日记.
如:
ALTERMATERIALIZEDVIEWLOGBSEMPMSPCTFREE1;
要撤N体化D日记,能够用DROPMATERIALIZEDVIEWLOG命令
如:
DROPMATERIALIZEDVIEWLOGONBSEMPMS;

12.扫除体化D日记
要p少体化D日记利用的空g,可用DBMS_MVIEW件包中的PURGE_LOG^程,PURGE_LOG有三:
主表名Q,NUM量,DELETE酥
NUM指比来起码革新的体化D盗
比方:
EXECUTEDBMS_MVIEW.PURGE_LOG
(MATER=>BSEMPMS,
NUM=>1,
FLAG=>DELETE);
BSEMPMS表的体化D⑶宄体化D比来起码利用的l目.
要在截嘀鞅淼r候而不G掉体化D日记l目,能够用命令
TRUNCATETABLEBSEMPMSPRESERVEMATERIALIZEDVIEWLOG;

13.也能够用OEM建和办理体化D


MySQL在业界的流行所带来的另一个好处是,人们总可以很轻松地发现本行业的MySQL学习教程。厂商都希望他们的开发工具和应用程序框架可以与MySQL数据库兼容。

山那边是海 发表于 2015-1-19 21:04:58

从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。

灵魂腐蚀 发表于 2015-1-27 09:10:27

作了些试验,发现使用CLR的存储过程或函数在达到一定的阀值的时候,系统性能会呈指数级下滑!这是非常危险的!只使用几个可能没有问题,当一旦大规模使用会造成严重的系统性能问题!

若相依 发表于 2015-2-5 05:55:15

然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情

小女巫 发表于 2015-2-11 06:32:18

个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。

变相怪杰 发表于 2015-3-1 23:08:37

需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。

再现理想 发表于 2015-3-11 00:54:46

我个人认为就是孜孜不懈的学习

分手快乐 发表于 2015-3-17 17:11:51

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

乐观 发表于 2015-3-24 15:47:47

大家注意一点。如下面的例子:
页: [1]
查看完整版本: MYSQL教程之Oracle的体化D办理