物理数据库设计 –引入受控冗余的考虑

物理数据库设计 –引入受控冗余的考虑

ID:81773398

大小:667.50 KB

页数:19页

时间:2023-11-13

上传者:159****6090
物理数据库设计 –引入受控冗余的考虑_第1页
物理数据库设计 –引入受控冗余的考虑_第2页
物理数据库设计 –引入受控冗余的考虑_第3页
物理数据库设计 –引入受控冗余的考虑_第4页
物理数据库设计 –引入受控冗余的考虑_第5页
物理数据库设计 –引入受控冗余的考虑_第6页
物理数据库设计 –引入受控冗余的考虑_第7页
物理数据库设计 –引入受控冗余的考虑_第8页
物理数据库设计 –引入受控冗余的考虑_第9页
物理数据库设计 –引入受控冗余的考虑_第10页
资源描述:

《物理数据库设计 –引入受控冗余的考虑》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

Chapter15物理数据库设计–步骤7引入受控冗余的考虑1

1Chapter15–目的反规范化的含义何时利用反规范化来改善系统性能2

2步骤7引入受控冗余的考虑确定是否放松规范化规则引入受控冗余数据来改善系统性能。规范化是确定哪些列属于同一张表的技术。实现规范化的结果就是产生最小冗余的表。然而,规范化的数据库设计可能不提供最大的处理效率。我们可能愿意接受规范化设计方面的一些损失而实现更好的性能。3

3反规范化(Denormalization)对基本表结构的修改,使得新表比原始表的范式低。将两个表合成一个新表,该新表与原表满足相同范式但比原始表包含更多的空值。4

4反规范化需要考虑的因素反规范化需要考虑下列因素使实现更加复杂会牺牲灵活性可能加快检索速度,但会降低更新速度通常,如果性能达不到要求,并且表的更新率较低,查询率较高,则反规范化就是可行的。5

5反规范化的一个例子Branch(branchNo,street,city,state,zipCode,mgrStaffNo)严格地说,该表并不满足3NF。因为zipCode属性决定了city和state。要规范化该表,则将其一分为二。Branch(branchNo,street,zipCode,mgrStaffNo)zipCode(zipCode,city,state)但是很少这样使用不完整的地址,因此我们通常使用原始的Branch表,尽管它只是满足2NF。6

6反规范化步骤反规范化的通常情况,以便加速进行常用或关键的事务步骤7.1合并一对一(1:1)关系步骤7.2复制一对多(1:*)关系中的非键列以减少连接步骤7.3复制一对多(1:*)关系中的外键列以减少连接步骤7.4复制多对多(*:*)关系中的列以减少连接步骤7.5引入重复组步骤7.6创建提取表步骤7.7分区表7

7步骤7.1合并1:1关系空间的浪费就不得不与合并表所带来的性能的提高进行权衡了。8

8步骤7.2复制1:*关系中的非键列以减少连接SELECTvfr.*,v.dailyRentalFROMVideoForRentvfr,VideovWHEREvfr.catalogNo=v.catalogNoANDbranchNo=‘B001’SELECTvfr.*FROMVideoForRentvfrWHEREbranchNo=‘B001’如果修改了父表中的复制数据,则必须在子表中也更新它。9

9步骤7.3复制1:*关系中的外键列以减少连接SELECTra.*FROMRentalAgreementraVideoForRentvfrWHEREra.videoNo=vfr.videoNoANDvfr.branchNo=‘B001’SELECT*FROMRentalAgreementWHEREvfr.branchNo=‘B001’10

10步骤7.4复制*:*关系中的列来减少连接SELECTv.title,a.*,r.*FROMVideov,Roler,ActoraWHEREv.catalogNo=r.catalogNoANDr.actorNo=a.actorNoSELECTa.*,r.*FROMRoler,ActoraWHEREr.actorNo=a.actorNo11

11Step7.5引入重复组12

12步骤7.6创建提取表报表要访问派生数据并且基于相同的一组基本表执行多表连接,但是,报表所基于的数据可能是静态的,或者有时不需要当前的数据而是历史数据。创建一张基于报表所需要的表的反规范化的提取表,并且容许用户直接访问提取表代替访问基本表。最常用的场合是在系统使用率较低时生成提取表,例如在前一天晚上生成当天的提取表。13

13步骤7.7分区表除了将表合并在一起之外,另外一个方法就是将表分解成一些较小的并且更易于维护的片段。Horizontalpartition水平分区:将表中的记录分布在几个较小的表中。Verticalpartition垂直分区:将表中的列分布在一些较小的表中.分区在存储和分析大数量数据的应用中非常有用。14

14步骤7.7分区表15

15分区表举例通过水平分区,使每个分公司占用一个分区,以提高查询性能。CREATETABLEVideoForRent_Partition(videoNoCHAR(6)NOTNULL,availableCHARNOTNULL,catalogNoCHAR(6)NOTNULL,branchNoCHAR(4)NOTNULL,PRIMARYKEYvideoNoFOREIGNKEYcatalogNoREFRENCESVideo(videoNo)FOREIGNKEYbranchNoREFRENCESbranchNo))PARTITIONBYHASH(branchNo)(PARTITIONb1TABLESPACETB01,PARTITIONb2TABLESPACETB02,PARTITIONb3TABLESPACETB03);16

16分区表的优缺点优点:改善负载平衡:分解后的表可以放置在二级存储的不同地方,允许并发访问。改善性能:并行机制。增强可用性:不同存储区域,提高了可用性。改善可恢复性:分区越小,恢复起来越快。安全性:不同分区的数据可以有不同的访问机制。缺点:复杂:多个分区的查询比较复杂。降低性能:当查询用到多个分区中的数据时,降低了性能。重复:垂直分解涉及主键的复制。17

17如何维护数据完整性触发器:用于自动更新派生或复制的数据。事务:在每个应用中构建事务使数据在一个事务中完成。批程序:在合适的时间运行批程序保持反规范化数据的一致。18

18小结在步骤7中,考虑引入受控冗余,以改善性能。如果性能达不到要求而且表的更新率比较低而查询率非常高,则非规范化可能是个可行的选择。在如下情况下考虑反规范化,特别是对于加速常用或关键事务:合并1:1关系;复制1:*关系中的非键列来减少连接;复制1:*关系的外键来减少连接,复制*:*关系中的列来减少连接;引入重复组;创建提取表;划分非常大的表。19

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭