- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第八章 关系数据库查询优化; 学习内容; 学习目标;8.1 查询处理概述;8.1.1 查询处理的定义;8.1.2 查询处理的执行步骤;8.1.3 相关基本概念;8.1.3 相关基本概念(续);8.1.3 相关基本概念(续);8.1.4 查询优化概述 ;假设1:外存:
Student:1000条,SC:10000条, 选修2号课程:50条
一个硬盘块放10个student或者100个SC
假设2:一次I/O交换元组:10个Student, 或100个SC, 内存中一次可以存放: 5块Student元组(即50个Student),
1块SC元组(即100个SC)和若干块连接结果元组
假设3:读写速度:20块/秒
假设4:连接方法:基于数据块的嵌套循环法
;8.1.4 查询优化概述;1 Q1= ПSname(бStudent.Sno=SC.Sno ∧SC.Cno=2 (Student×SC))?
① Student×SC
读取总块数= 读Student表块数 + 读SC表遍数
*每遍块数
(读SC表遍数=Student表的总元组数/在内存中的元组数)
?=1000/10+(1000/(10×5)) ×(10000/100)
=100+20×100=2100
读数据时间=2100/20=105秒
; 中间结果大小 = 1000*10000 = 107 (1千万条元组)
写中间结果时间 =10/20 = 50000秒
(设每块能装10个中间结果元组)
?
②б
读数据时间 = 50000秒?
③П
总时间 =105+50000+50000秒 = 100105秒
= 27.8小时
?
;2. Q2= ПSname(бSC.Cno= 2 (Student SC))
?①
读取总块数= 2100块(Q1的结果)
读数据时间=2100/20=105秒
因为只有SC只有10000条元组,故等值连接的结果,即:
中间结果大小=10000 (减少1000倍)
写中间结果时间=10000/10/20=50秒?
②б
读数据时间=50秒?
③П?
总时间=105+50+50秒=205秒=3.4分(减少了中间结果)?;3. Q3= ПSname(Student бSC.Cno= 2 (SC))?
①б
读SC表总块数= 10000/100=100块
读数据时间=100/20=5秒?
中间结果大小=50条 不必写入外存?
②
读Student表总块数= 1000/10=100块
读数据时间=100/20=5秒?
③ П?
总时间=5+5秒=10秒 (减少中间结果,且全部在内存)
;8. Q4= ПSname(Student бSC.Cno=2 (SC))
假设SC表在Cno上有索引,Student表在Sno上有索引
?①б
读SC表索引=(发现2号课程只有50条元组)
读SC表总块数= 50/1001块
读数据时间:1/20=0.5?
中???结果大小=50条 不必写入外存
;②
读Student表索引=(根据索引发现只有50个学生)
读Student表总块数= 50/10=5块
读数据时间 :5/20=0.5秒
③ П
总时间1~2秒(不必遍历所有的元组记录);用户不必考虑如何最好地表达查询以获得较好的效率。
关系数据语言的级别很高,使DBMS可以从关系表达式中分析查询语义。
系统可以比用户程序的优化做得更好。
;Student×SC(做SC×Student)
读取总块数= 读SC表块数 + 读Student表遍数
*每遍块数
(读Student表遍数=SC表的总元组数/在内存中的元组数)
=10000/100+(10000/(100×1)) ×(1000/10)
=100+100×100=10100
读数据时间=10100/20=505秒
;8.1.4查询优化概述 ;查询优化的总目标
选择有效策略,求得给定关系表达式的值
;代价模型:
集中式数据库
单用户系统
总代价 = I/O代价 + CPU代价
多用户系统
总代价 = I/O代价 + CPU代价 + 内存代价
分布式数据库
总代价 = I/O代价 + CPU代价[+ 内存代价] + 通信代价
;8.2 基本运算实现举例;8.2 基本运算实现
文档评论(0)