SQLServer中的文件及索引组织重点分析.pptVIP

SQLServer中的文件及索引组织重点分析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
B+树 聚集索引 以B+树方式实现 聚集索引叶节点是实际的数据页page 在数据页中数据按照索引search key的顺序存储 行的物理位置和行在索引中的位置是相同的 每个表只能有一个聚集索引 聚集索引的平均大小大约为表大小的5%左右 非聚集索引 非聚集索引的页,不是数据,而是指向数据页的页。 若未指定索引类型,则默认为非聚集索引 叶节点页的次序和表的物理存储次序不同 每个表最多可以有249个非聚集索引 在非聚集索引创建之前创建聚集索引,否则会引发索引重建 数据文件组织为堆文件、聚集索引文件 非聚簇索引的叶节点仍然是索引节点,指向对应的数据块 非聚集索引 E.g 见下图 1. 数据文件:堆文件 Page704,705,706,707, 808,709; 2. 索引文件 1) 非叶结点:Page 12, 37, 28 2) 叶结点:Page41, 51, 61, 71 3. 索引叶结点存储索引项keyvalue, RID 1) keyvalue: customername 2) RID: 记录的物理地址,file#:page#:RowID SQL Server平台下三种文件DB访问方法 表扫描: table scan 表组织为堆文件,对堆文件中的每个记录,依次扫描,判断是否满足where查询条件 e.g. where branch=‘Perryridge’ 索引扫描: index scan 索引查找: index seek 基于B+树的顺序文件组织 表内容变化?索引重组 使用索引是否一定能提高 select查询速度? ——未必 !! 索引查询成本m + n < 无索引查询成本k ?? 基于索引的查询: Step1. 根据search key,访问索引文件,获得数据对象物理地址 —— input m blocks (e.g. pages in SQL Server) from 索引文件 Step2. 根据物理地址,访问数据文件,获取查询结果 —— input n blocks from数据文件 I/O csots: m + n 无索引查询 直接扫描数据文件,获取查询结果 —— input k blocks from 数据文件 I/O csots: k Database System Concepts - Chapter 11 Storage and File Structures - SQL Server平台下 DB文件组织 堆 (heap) 文件 (聚集索引)顺序文件 B+/B树结构 聚集/非聚集索引实现机制 SQL语句中的索引使用 DB文件组织 教科书 四类文件组织 heap, sequential, hash, clustering do not allow records to cross block boundaries SQL Server中 堆文件 基于聚集索引的顺序文件 对关系表中的元组/行/记录,按照数据输入顺序,i.e. insert顺序,DBMS依次从DB空间中获取存放空闲存储块——SQL Server中的page/extent,存放 any record can be placed anywhere in the file where there is space for the record DB文件中的记录一般没有特定顺序 一般以纪录的输入顺序为序,决定了文件中记录顺序 纪录的存储顺序与记录中的主键无关 堆文件 堆文件account file 关系表account:9行,依次insert into 数据库; 数据库文件:9个记录,是乱序的!! 记录顺序与属性accountnumber、branchname、balance无关,没有按属性取值有序(小到大,大到小)排列 SQL Server堆文件中,数据页(data page)和数据页中数据没有按照特定的顺序存储,也没有链接在一起??。数据页之间唯一的逻辑链接是通过IAM页中记录来实现的??。 预先定义的主键、聚集索引,DB文件记录按照主属性、索引属性上的取值有序排列 Records are logically ordered by search-keys, that is, records are stored in sequential order, based on the value of the search key of each record it is desirable that the records are also phys

文档评论(0)

bbnnmm885599 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档