• 售前

  • 售后

热门帖子
入门百科

Oracle表的分类以及相干参数的详解

[复制链接]
普通人物怨 显示全部楼层 发表于 2021-10-26 13:49:25 |阅读模式 打印 上一主题 下一主题
oracle中有如下几种类型的表:
1、堆构造表(heap organized tables):
常用的表类型,以堆的方式管理,当增加数据时,将使用段中第一个适合数据大小的空闲空间;当删除数据时,留下的空间答应以后的DML操纵重用。
2、索引构造表:表存储在索引结构中,使用行本身排序存储。在堆中,数据大概被填到任何适合的地方,在索引构造表中,根据主关键字,以排序序次来存储数据。
3、聚簇表:几张表物理存储在一块,通常是同一个数据块上。包罗雷同聚簇码值的所有数据在物理上存储在一起,数据"聚集"在聚簇码四周,聚簇码用B*Tree索引构建。
4、散列聚簇表:和聚簇表相似,但是不是用B*Tree索引聚簇码定位数据,散列聚簇把码散列到簇中,来到达数据地点的数据库块。在散列聚簇中,数据就是索引(比喻的说法)。这适适用于经常通过码等式来读取的数据。
5、嵌套表:OOP扩展的一部分,由体系产生,以父子关系维持子表。
6、暂时表:存储事务或会话中的暂时数据,用以中间结果的计算,分配暂时段做为存储区域。
7、对象表:根据对象类型创建,有特别属性并且和非对象表不关联。
一张表最多有1000列;理论上一张表有无穷多行;能有和列的分列一样多的索引,且一次可以或许使用32个;拥有表的数目没有限定。
表的相关参数及术语
1)高水位标记
高水位标记开始在新创建的表的第一个块上。随着数据不绝放到表中,使用了更多的块,从而高水标记上升。如果删除一些表中的行,高水标记仍不下移。即count(*)100000行和delete全部行后count(*)所需时间一样(全扫描情况下)。必要对表进行重修。
2)自由列表(freelist)
在oracle中用来跟踪高水标记以下有空闲空间的块对象。每个对象至少有一个freelist和它相关。当块被使用时,oracle将根据必要放置或取走freelist。只有一个对象在高水位标记以下的块才气在freelist上发现。保存在高水标记以上的块,只有freelist为空时才气被用到。此时oracle进步高水标记并把这些块增加到freelist中。用这种方式,oracle对一个对象推迟进步高水标记,直到必须时才进步。一个对象大概不光有一个freelist,如果预料会有许多并行用户对一个对象进行大量的insert或update,设置多个freelist可以或许进步整体性能(大概的代价就是增加存储空间)。
3)pctfree和pctused
如果pctfree设置为10,那么块在用完90%以前,都会使用freelist(都位于freelist中)。一旦达到90%,将从freelist中移除,直到块上空闲空间高出60%以后再使用(再次进入freelist中,当pctuser为40时)。
A.当pctfree设置过小,而经常更新时,轻易出现行迁移
B.高pctfree,低pctused---用于插入许多将要更新的数据,并且更新经常会增加行的大小,如许插入后在块上保存了许多空间(高pctfree),在块返回到自由列表之前,块必须几乎是空的(低pctused)
C.低pctfree,高pctused---用于倾向于对表只使用insert或delete,或者如果要update,update也只是会使行变小。
4)initial,next和pctincrease
例如使用一个initial盘区为1MB,next盘区为2MB,pctincrease为50,可得到盘区应该是:(1)1mb(2)2mb(2)3mb(2的150)(4)4.5mb(3的150%)。一般以为这些参数是逾期的,数据库应该使用局部管理并且盘区大小一致的表空间。在这种方式下,initial盘区总是等于next盘区的大小,并且不必使用pctincrease,使用pctincrease只会导致表空间产生碎片。在没用局部管理表空间的情况下,建议总是设置initial=next和pctincrease等于zero,如许可以模仿局部管理表空间的使用,为了避免碎片,所有在表空间中的对象应该使用雷同盘区的分配计谋。
5)minextents和maxextents
设置控制对象对它自己分配的盘区数。minextents为初始分配盘区个数。
6)logging和nologging
nologging答应对这些对象实验某些操纵时不产生重做。它只影响一些特定的操纵,例如开始创建对象或者使用sqlldr进行直接路径装载或者insert /*+ append */ select类型的语句。
7)initrans和maxtrans
对象中的每一块都有一个块头,块头的一部分是事务表,事务表中的条目形貌哪一个事务块上的行/元素被锁定了。事务表的最初大小由对象的initrans设置确定,对于表,默以为1(索引默以为2),当必要时,事务表可以动态地增加,大小最多到maxtrans(假定在快上有足够的空闲空间),每一个分配的事务条目在块头上占用23字节的存储空间。

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作