表、索引、存储过程、函数 计算机教学课件.ppt

表、索引、存储过程、函数 计算机教学课件.ppt

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共108页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle引入了分区表的概念 1、分区表是多个小表的组合,每一个小表叫做一个分区 2、数据存放在分区里面,每个分区对应一个物理的segment 3、不同的分区可以具有不同的存储属性,可以存放在不同的表空间中 4、分区表的总表是一种虚表,没有对应的segment,分区表具有多个segment 5、逻辑上是一个表、相同的列、相同的约束 改进 1、不同的分区放在不同的磁盘上,既是一个磁盘损坏,只有这个损坏磁盘上的数据不能访问,其他数据还是能够访问 2、可以以分区作为单位进行备份、迁移时直接将分区里面的数据与其他表进行迁移 3、性能上,如果以列c1建立的分区,那么当where条件中使用c1的时候,数据库自动判断,直接到该分区里面检索数据,不需要对整个表进行扫描 1、范围分区 这个有必要定义,否则当插入的数据大于2003-01-01的时候,就会报错。 2、Hash分区 对列的值进行hash函数的运算以后,分布到分区里面,这样做的最大的好处就是能够实现分区数据的平均分布,我们在定义分区的时候,分区的个数应该是2的幂,例如2,4,8,16,否则出现数据分布不平衡,失去了hash分区的意义 当列中的数值不容易划分范围的时候,我们可以使用hash分区 3、列表分区 分区列的取值是一些指定的离散值的时候,该数据行就进入某个指定的分区 4、范围hash组合分区 1、首先根据范围进行划分,然后将每个范围划分的数据进行hash分区,分布到不同的hash子分区上,范围分区以后,并没有产生segment,对范围进行hash的时候,才会产生实实在在的segment 1、根据范围对表进行了范围划分,分成4个区。 2、对每个区的hash划分默认是根据id,分成4个分区 3、pmax分区没有使用默认值,而是分成了2个分区 因此一共产生了14个分区。 5、范围列表组合分区 首先对列进行范围划分,然后对每个分区进行列表分区 一共是6个分区 p1_1、 p1_2在ts01上 p1_3在ts02上 p2_1、 p2_2在ts03上 p2_3在ts04上 索引组织表 一般的表都是以堆来组织的,这是一种无序的组织方式。Oracle还提供了另外一种有序的表,索引组织表,简称IOT IOT表上必须有主键,表里所有的数据都存放在主键所在的索引的叶子节点里 在索引叶子节点里的索引条目里,不仅存放了被索引的列的值,还存放了其他列的值 对于总是通过主键访问数据的表来说,比较适合使用IOT表 普通表通过主键索引访问数据表,至少读取两个数据块 1、索引块 2、表的数据块 IOT表 只要读取索引块就可以 IOT是一个虚表,实际存放在索引segment里 在IOT的基础上建立索引,叫做二级索引,使用二级索引查找数据,存在两个阶段 1、在二级索引里面存储的是逻辑ROWID,就是主键值 2、二级索引进行查找的时候,首先是根据根据二级索引查找到逻辑ROWID,因为逻辑ROWID就是主键值,因此还需要进行一次二次查找,根据主键值再进行一次索引查找。 也就是二级索引最终还是要转化成对主键列的查找 二级索引里面存储的是逻辑ROWID、不是物理ROWID 1、必须创建一个主键约束 2、指定索引组织表的方式 如果我们在访问IOT表的时候,经常访问id和c1两个列,如果把c2、c3、c4也放在索引的叶子节点里面,那么会造成索引叶子节点的增多,单个叶子节点里面的行数减少,这样访问索引的速度就会降低。因此我们希望后面的三个列不要放在索引的叶子节点里面,而是放在溢出segment里面 通过两个参数来指定 1、留在索引块里面的数据空间占总数据块大小的百分比,0-50%,id列+c1列总共占的字节数/索引块的大小,超出这个范围的列不放在索引块里面 2、表示从c2开始,后面所有的列都放在overflow segment里面,不放在索引块里面 如果pctthreshold限制的列是c1开始后面的列,但是including限制的列是c2开始后面的列,那么以pctthreashold为准 簇表(cluster table) 两种类型的簇表:索引簇表、hash簇表 索引簇表的经典用法 1、主名细表关连查询,主表和明细表经常进行关连查询,适合使用这种表结构 2、建立一个 cluster segment,segment里面有extent,extent里面有block 3、簇表的数据就是存放在cluster segment里面 4、因为表并没有segment,因此是一个虚表 5、在cluster segment上面建立索引(主表和明细表的关联键) 6、将表关联到cluser segment上,根据关联键,将主表和明细表的记录放在同一个数据块里面。 7、因为总是关连查询,因此只要扫描一个数据块就可以取到两个表的数据 建立一个聚

文档评论(0)

专业写作找文采 + 关注
实名认证
服务提供商

修改润色代笔文章撰写。

1亿VIP精品文档

相关文档