




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1表格类型1)堆组织的表。添加数据时,将使用数据段中第一个适合数据大小的可用空间。当数据从表中删除时,剩余的空间将允许后续的插入和更新重用。2)索引组织表。这里,表存储在索引结构中,并且行是物理排序的。在堆中,数据可以被填充到任何合适的位置。在索引组织表中,数据按照主键的排序顺序存储。3)聚类表。这种桌子可以完成两件事。首先,许多表是物理连接并存储在一起的。通常,希望数据存储在一个数据库块的一个表中。对于集群表,许多表中的数据可能存储在同一个块中。第二,所有包含相同簇代码值的数据将被物理存储在一起。数据是围绕集群代码值“聚集”的,集群代码是使用B *树索引构建的。4)散列聚类表。它类似于上面的聚类表,但是不是使用B *树来用聚类代码索引数据,而是散列聚类将代码散列成簇,以到达数据所在的数据库块。在散列聚类中,数据是一个索引(比喻地说)。这适用于经常通过代码方程读取的数据。5)嵌套表6)临时表7)对象表术语1)高水位线高水位线从新创建的表的第一块开始。随着数据继续被放入表中,更多的块被使用,因此高水位线上升。如果表格中的某些行被删除,高水位线仍然不会下移。也就是说,在删除所有行之后(在完全扫描的情况下),计数(*)100000行花费的时间与计数(*)相同。这张桌子需要重建。2)自由列表在oracle中用于跟踪可用空间低于高水位线的块对象。每个对象至少有一个关联的自由列表。当使用块时,oracle将根据需要放置或移除自由列表。只有低于高水位线的块才能在自由列表中找到。高水位线以上的块仍然存在。只有当freelist为空时,才能使用它。此时,oracle提高了高水位线,并将这些块添加到freelist中。通过这种方式,甲骨文推迟提高一个对象的高水位线,直到有必要。一个对象不能只有一个自由列表。如果预期许多并发用户会大量插入或更新一个对象,配置多个自由列表可以提高整体性能(可能的成本是增加存储空间)。3)无pct和有pct的如果pctfree设置为10,块将使用freelist(全部在freelist中),直到块的90%被用完。一旦达到90%,它将从空闲列表中删除,直到块上的空闲空间超过60%(当pctused为40时,再次输入空闲列表)。当pctfree设置得太小且频繁更新时,很容易发生行迁移。高pctfree,低pctused用于插入大量要更新的数据,更新通常会增加行大小,从而在插入后在块上留下大量空间(高pctfree)。在块返回空闲列表之前,块必须几乎是空的(低百分比)低pctfree,高pctused用于倾向于只对表使用插入或删除,或者如果您想要更新,只更新使行变小。4)初始、下一个和百分比增加例如,使用1 MB的初始范围、2 MB的下一个范围和50的百分比,可用范围应该是:(1)1mb(2)2mb(2)3mb(2 150)(4)4.5mb(3 150%)。我认为这些参数已经过时,数据库应该使用具有一致扩展区大小的本地管理的表空间。这样,初始范围总是等于下一个范围的大小,并且没有必要使用pctingase。使用pctingase只会导致表空间碎片化。在表空间没有本地管理的情况下,建议始终将initial=next和pctingase设置为零,这可以模拟本地管理的表空间的使用。为了避免碎片,表空间中的所有对象应该使用相同范围的分配策略。5)最大范围和最大扩展设置控件对象分配给自身的范围数。minextents是分配的盘区的初始数量。6)测井和去测井注销允许在这些对象上执行某些操作,而无需重做。它只影响某些操作,如开始创建对象或使用sqlldr直接加载路径或insert /* append */select类型语句。7)init trans和maxtrans对象中的每个块都有一个块头。块标题的一部分是事务表。事务表中的条目描述事务块被锁定的行/元素。事务表的初始大小由对象的initrans设置决定。对于表,默认值为1(索引默认为2)。必要时,事务表可以动态增加到maxtrans(假设快速通道上有足够的可用空间)。每个分配的事务条目在块头上占用23字节的存储空间。2.堆栈表:需要注意的参数是freelists、pctfree、pctused、initrans。其他参数应该使用本地约定表空间,而不是pct增量、next和其他参数3.索引组织表索引组织表(Index organized tables,iot)是存储在索引结构中的一个非常简单的表。因为以堆模式存储的表是随机组织的,所以数据存储在任何空间,并且数据根据物联网中的主代码进行存储和排序。物联网特别用于信息检索、空间和loap应用。索引块数据和溢出段数据的正确组合是物联网建设中最关键的部分。不同的情况有不同的溢出条件,有必要了解它如何影响插入、更新、删除和选择。如果有一个结构被构造一次并被频繁读取,那么数据可以被尽可能多地存储在索引块中。如果结构经常被修改,必须在允许所有数据在索引块上(通过检索)和频繁地在索引中重新组织数据(不利于修改)之间建立一定的平衡。堆组织表中考虑堆自由列表也适用于物联网。在物联网中,pctfree和pctused有两种功能。pctfree在iot的堆组织表中并不重要,并且通常不使用pctused。然而,当考虑溢出部分时,pctfree和pctused与堆组织表中的含义相同,并且在溢出部分中设置条目使用与堆组织表中相同的逻辑。创建表iot(x int,y日期,z varchar2(2000),约束iot_pk主键(x)组织索引包括yoveflow这表示y列和之前的列存储在索引块中创建表-假设这个表有2kb的块(x int,y日期,z varchar2(2000),约束iot_pk主键(x)组织索引pct阈值10溢出;这表示oracle将从最后一列向前移动,但不包括最佳列的主代码,以找出哪些列需要存储在溢出部分。在本例中,数字列x和日期列y总是放在索引块中,最后一列z的长度是可变的。当它小于约190字节(2kb块的10%约为200字节,7字节的增加日期,3-5字节的数字)时,oracle将在溢出部分存储数据列z,并设置一个指针指向它。pctthreshold或including,或两者的某种组合,哪个更好?这甚至更有必要。如果一个应用程序总是或几乎总是使用表中的前4列,而很少访问最后5列,这听起来就像一个应用程序使用including。它可以包含前4列,而剩余的5列存储在溢出段中。在运行时,如果需要,也可以使用与迁移或链接行相同的方法来检索它。另一方面,如果不能确定这些列几乎总是被访问,而其他列很少被访问,则可能需要考虑Pctthreshold。一旦确定了每个索引块上存储的平均行数,就很容易设置pctthreshold。假设20行存储在每个索引块中,这意味着每一行是块的1/20(5 %), pct阈值的值为5,索引块上占用的空间不应超过块的5%。请注意,最好将参数compress 2添加到索引组织表中。使用索引来组织表:(1)的情况下,当只需要访问索引列,而不需要访问实际的表时,也就是说,如果表列只有3列,并且这3列都需要是主键,那么最好使用索引来组织表。(2)构建自己的索引结构,即使用索引组织表来构建自定义索引,例如,创建表upper _ name (x $ name,x$rid,主键(x$ename,x $ rid)组织索引作为从emp中选择upper(ename),rowid然后在emp表上创建一个触发器来更新索引组织表。然后可以使用索引组织表作为索引。从中删除(从emp中选择ename,empno,其中emp.rowid在中(从upper_ename中选择up _ name,x$rid,其中x $ ename=KING);注意:如果在表中导出或导入emp或使用alter table move命令导致emp表中的行id发生变化,则需要重建索引组织表中的任何索引(3)当希望加强数据的共同定位或以特定顺序物理存储数据时,物联网是现成的结构。4.索引簇表在群集中,单个块上的数据可能来自多个表。从概念上讲,数据可以存储(预先连接),聚类也可以用于单个表。数据现在按照特定的列分组存储。例如,部门10的所有员工将被存储在同一个块上(或者如果不合适,尽可能少的块上)。没有存储已排序的数据(这是物联网的任务),与特定代码结合的数据被存储但存储在堆中。因此,部门100可能正好与部门1相邻。在所有集群表中,关于部门10的所有数据都存储在该块中。如果部门10的所有数据不能容纳在该块中,则附加块将链接到原始块以容纳溢出数据。这与物联网中的溢出块非常相似。对象存储的定义(pctfree、pctused、initial等。)是与集群相关的,因为集群中有许多表,在同一个块中每个表有不同的pctfree是没有意义的。创建大小为1024的集群emp_dept_cluster(deptno编号(2);此群集的群集列是deptno列。表中的这一列不必称为deptno,但必须是数字(2)才能与此定义匹配。定义中有一个size1024选项,用于告诉oracle每个集群代码预计会有大约1024字节的数据。oracle将使用此信息计算每个块可以容纳的最大集群代码数。假设一个8kb的块,oracle将在每个数据库块中保存多达7个集群代码(如果数据比预期的大,数量可能会减少)。即,部门10、20、30,40、50、60、70的数据倾向于存在于一个块上,插入部门80,并且将使用新的块。这并不意味着数据是以分类的方式存储的,而仅仅意味着如果部门以这种顺序插入,它们自然倾向于放在一起。数据的大小和插入顺序将影响每个块上可存储的代码数量。因此,大小参数控制每个块上的最大簇代码数。如果太高,将浪费空间,如果太低,将获得太多的数据链接,这将偏离聚类的目的。所有数据都将存储在一起,放在一个数据块中。大小参数是聚类的一个重要参数。在将数据放入集群之前,需要索引集群,并且可以立即在集群中创建表,但是表将被创建并且数据将被同时加载到表中,因此在拥有任何数据之前需要集群索引。创建索引EMP _ dept _ cluster _ idx _ disibleevent=x . dept no。结束循环;结束;如果首先加载所有的dept行,因为dept行非常小并且只有两个字节,显然每个块中已经获得了七个代码(基于设置的大小1024)。当轮到加载emp行时,一些部门可能会发布超过1024字节的数据,这将导致这些集群代码块的过度链接。通过同时使用指定的集群代码加载所有数据,块被压缩到最大程度,并且当空间用尽时使用新的块,而不是oracle在每个块中放置七个集群代码值,它将放置尽可能多的集群代码。何时使用集群?事实上,当不使用聚类时,描述起来可能更容易群集可能会对dml的性能产生负面影响-如果您期望对群集中的表进行较大的修改,您必须知道索引群集可能会有降低性能的副作用。在集群中,表的完全扫描将受到影响不仅一个表中的数据,而且许多表中的数据也必须被完全扫描。如果您认为您经常会截断和加载表,那么集群中的表是不能被截断的。因此,如果大部分数据都是通过索引读取的,无论是集群代码索引还是集群表中的其他索引,这些信息通常放在一起,因此集群是合适的。5.哈希聚类表它在概念上类似于索引簇表。主要区别是哈希函数取代了集群代码索引。表中的数据是索引,但没有物理索引。oracle使用行的代码值,使用内部函数或提供的函数对其进行哈希运算,并使用这些函数指定数据应该放在硬盘上的什么位置。使用哈希算法定位数据的副作用是,它不会将传统索引添加到表中。因此,哈希簇中的表不能进行范围扫描。在上面的索引集群中,查询:从emp中选择* 10到20之间的deptno可以使用集群代码索引找到这些行。除非在deptno列上有索引。否则,该查询将导致全表扫描。不使用支持区域扫描的索引,只能在哈希代码中执行精确的相等搜索。在完美的情况下,哈希聚类意味着可以通过i/o直接从查询中获取数据,这很少甚至不会与哈希算法发生冲突。实际上,大多数情况下可能会发生冲突,并具有周期性得行链接,这意味着检索某些数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论