在创建表的mysql存储过程创建表中,参数initrans是什么意思

建表时的一些参数pctfree initrans
maxtrans storage的含义,该怎么处理 - Oracle开发当前位置:& &&&建表时的一些参数pctfree initrans
maxtrans stora建表时的一些参数pctfree initrans
maxtrans storage的含义,该怎么处理&&网友分享于:&&浏览:1001次建表时的一些参数pctfree initrans
maxtrans storage的含义-- Create tablecreate table X_SMALL_AREA( & SMALL_AREA_ID
NUMBER(10) not null &)tablespace TBSL_SDDQ & pctfree 10 & initrans 1 & maxtrans 255 & storage & ( &
initial 64 &
minextents 1 &
maxextents unlimited & );请教各位指点一下,其中pctfree initrans
maxtrans storage的属性的含义解释一下,谢谢------解决方案--------------------
-- Create table& create table X_SMALL_AREA& (&
SMALL_AREA_ID
NUMBER(10) not null& )& tablespace TBSL_SDDQ --表段X_SMALL_AREA放在表空间TBSL_SDDQ中 pctfree 10 --块保留10%的空间留给更新该块数据使用 initrans 1 --初始化事务槽的个数 maxtrans 255 --最大事务槽的个数 storage --存储参数 (&
initial 64k --区段(extent)一次扩展64k
minextents 1 --最小区段数
maxextents unlimited --最大区段无限制&
------解决方案--------------------
表空间包含段段里包含区段区段包含数据块块上的事务槽是对影响该块的事务进行登记使用的这儿有一些概念http://blog.csdn.net/CYHJRX/archive//3877369.aspx
------解决方案--------------------
楼主参考下:http://www.chinaunix.net/jh/19/517843.html
------解决方案--------------------
探讨-- Create tablecreate table X_SMALL_AREA(  SMALL_AREA_ID  NUMBER(10) not null)tablespace TBSL_SDDQ  pctfree 10  initrans 1  maxtrans 255  storage  (    initial 64    minextents 1    maxextents unlimited  );请教各位指点一下,其中pctfree initrans  maxtrans storage的属性的含义解释一下,谢谢   
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有数据库逻辑结构管理-博泰典藏网
典藏文档 篇篇精品
数据库逻辑结构管理
导读:1.INITIAL:建立段时分配的第一个范围的大小(字节)缺省:5个数据块,最小:2个数据块,最小:1个数据块,缺省:根据数据块的大小和操作系统而定,6.INITRANS:为初试数量的DML事务条目(并发访问数据块中的行)保留的预,空间保留在相关数据段或索引段中所有数据块的标题中,7.MAXTRANS:为多个事务同时访问同一数据块的行时,为数据块中每个DML事务,MAXTRANS参数限制同时使274
下面简要介绍一下各个存储参数的值: 1. INITIAL:建立段时分配的第一个范围的大小(字节) 缺省:5个数据块。 最小:2个数据块。 最大:由操作系统指定。 2. NEXT:未段分配的下一个增量范围的大小(字节) 分配段时,第二个范围等于NEXT的初值,接着NEXT为NEXT前面的大小乘以(1+PCTINCREASE/100)。 缺省:5个数据块。 最小:1个数据块。 最大:由操作系统指定。 3. MAXEXTENTS:分配给段的范围的总数(包括第一个)。 缺省:根据数据块的大小和操作系统而定。 最小:1个范围。 最大:无限制。 4. MINEXTENTS:建立段时分配的范围的总数,也就是段的最小范围数量。 缺省:1个范围。 最小:1个范围。 最大:无限制。 5. PCTINCREASE:为段分配的每个增量范围超过上一个范围的百分比,如果为0则所有增加范围的大小相同。如果大于0,则每次计算NEXT为(1+PCTINCREASE/100)。注意PCTINCREASE不能够为负数。 缺省:50%。 最小:0%。 最大:操作系统指定。 6. INITRANS:为初试数量的DML事务条目(并发访问数据块中的行)保留的预分配空间数量。空间保留在相关数据段或索引段中所有数据块的标题中。 表的INITRANS缺省为1,聚集和索引的INITRANS缺省为2。 7. MAXTRANS:为多个事务同时访问同一数据块的行时,为数据块中每个DML事务的条目分配空间。一旦耗尽了INITRANS保留的空间,为额外的事务条目分配的空间超过块中的空闲空间。分配后该空间成为块标题的永久部分。MAXTRANS参数限制同时使用数据块中数据的事务条目数量,因此可以使用MAXTRANS来限制分配给事务条目的空闲空间数。MAXTRANS的缺省值由操作系统指定,最多为255。 当创建一个段时,它至少会获取一个范围(其他值可以通过MINEXTENTS设定)。范围用于存储数据,直到没有可利用的自由空间为止(PCTFREE子句用来在每个范围的每一个块中保留一个空间百分比以供更新现有行使用)。当段中增加新的数据时,这个段通过获取由NEXT参数规定大小的另一个范围来实现扩充。无法保证第二个范围与第一个范围物理上相邻接。 PCTINCREASE参数用于最小化增长的表中的范围数量。若该参数的值不是零,则可能出现危险―它会导致每个相继范围的尺寸几何地增长,而这个增长率由PCTINCREASE系数 275确定。 例如,假使DB_BLOCK_SIZE参数为2K,下列一个语句在创建表时指定了相应存储参数:
CREATE TABLE mytable1 (……) STORAGE( INITIAL 40K NEXT 40K PCTINCREASE 50);
一个INITIAL范围大小为20块,NEXT范围大小也为20块,并且PCTINCREASE值为50的数据段。表9-1示出了这个段中前10个范围的大小。 表9-1 使用非零PCTINCREASE参数的结果 范围号 大小(Oracle块) 总块数 20 40 70 范围容量注释 INITIAL NEXT NEXT×1.5 1 20 2 20 3 30 4 45 5 70 6 105 7 155 8 230 9 345 10 520 115 NEXT×1.5×1.5 185 NEXT×1.5×1.5×1.5 290 类推 445
仅在前10个范围中,段的大小已经增加了7700 %!表明这是一个不正常的空间规划,这也是数据库管理员要处理的管理问题。数据表存在很多碎片,范围很有可能不会连续,并且在表进行下一次扩展(甚至只增加一个数据行)时,将需要750个以上的Oracle块(假设一个Oracle块为2 K,共需要1.5MB )。理想情况是,一个段只具有一个大小合适的范围,并且NEXT值较小,设表的PCTINCREASE值为0。这样设置将避免段中碎片所带来的影响。 注意:在表空间级设置PCTINCREASE值为0,将影响Oracle自动合并表空间中自由空间的能力。把表空间的缺省PCTINCREASE设置为一个非常低的值,例如1。 在NEXT值还没有改变时,不要改变PCTINCREASE值。每一个连续的范围大小可以通过表的存储参数来计算,上一次增加的范围的大小不予考虑。例如,如果要把表9-1中段的PCTINCREASE值改变为0,则11号范围的大小为20个Oracle块( next×1.0×1.0等)而不是520块。 276
二.范围的分配 Oracle使用不同的算法分配范围,这取决于他们是否本地管理或由数据字典进行管理。 在本地管理表空间时,Oracle首先在表空间决定一候选的数据文件,然后检查这个数据文件的位映像得到需要的邻近的空闲块的数量。最终寻找到空闲空间来分配新的范围。如果那数据文件没有足够邻近的空间,Oracle向另外的数据文件里边找。 在由数据字典管理的表空间中,Oracle采用如下方法为给定的段控制增量范围的分配: (1)Oracle通过在包含那段的表空间中寻找空闲空间。对于增量范围的大小一样或更大的第一个空闲的、连续的一系列数据块,使用下列算法: ? Oracle查找一组邻近的数据块,于新的范围大小进行匹配,以防止内部分裂。(如果必要时,这个大小会舍入到那表空间的最小的范围的大小)例如,如果新范围要求19个数据块,Oracle搜索连续的20个数据块。如果新范围是5或更少,则Oracle不增加额外的块。 ? 如果没发现严格匹配,那么Oracle查找比需要的数量大的一组连续的数据块。如果Oracle发现与范围的大小比需要的大了至少5块的一组连续的块时,则它将块分开进不同的范围,其中一个是它需要的大小。如果Oracle发现比需要大小大的一组块,但是不到5个数据块,则它将所有的连续的块分配到新的范围。 在当前的例子中,如果Oracle没有发现一组包含了20个连续的数据块,Oracle接续查找比20个块大的一组连续的数据块。如果它发现的第一组包含25个以上的块,它将拆散块并且分配他们中的20到新范围,留下5个以上的数据块作为空闲空间。否则,它分配所有块(在21和24之间)到新的范围。 ? 如果Oracle没有发现连续的等于或大于所需要数量的一组数据块,则它结合在相应的表空间中任何邻近的数据块,形成更大的一组连续的数据块。(SMON后台进程周期性地也结合邻近的空间。)在结合以后,Oracle按照前两个步骤进行查找。 ? 如果在第二次查找以后范围仍然不能被分配,Oracle试着通过自动扩展来缩放文件。如果Oracle不能缩放文件,它返回一个错误。 (2)一旦Oracle在表空间发现并分配的必要的空间,它分配对应于增量范围大小的空闲空间部分。如果Oracle发现了比范围要求多的大量空闲空间,Oracle作为空闲空间(不小于5连续的块)。 (3)Oracle更新标题和数据字典来显示出新范围已经被分配了,分配的空间现在不再是空闲的。 新分配的范围的块,尽管他们是空闲的,但可能不是空(可能包含旧的数据)。通常,当Oracle开始使用范围时,它格式化最新被分配了的范围的块,但是仅仅当需要时。然而在一些情况中,例如当一个数据库管理员使用带ALLOCATE EXTENT子句的ALTER TABLE or ALTER CLUSTER语句强迫增量范围的分配时,Oracle在分配范围时会格式化范围的块。 三.范围的释放 总的来说,段的范围不回返回给表空间除非你删除有数据存储在该段上的模式对象(使用DROP TABLE或DROP CLUSTER语句)。这些情况有: ? 表或聚集的拥有者,或有DELETE ANY特权的一个用户,能使用 277TRUNCATE...DROP STORAGE语句清空表或聚集。 ? 如果回滚段指定了最佳(OPTIMAL)的大小,Oracle周期性地重新释放它的一个或多个范围。 ? 一个数据库管理员(DBA)能使用下列SQL语句释放的闲置的范围: ALTER TABLE table_name DEALLOCATE UNUSED; 当范围被释放时,Oracle修改数据文件位映像(在本地管理的表空间中)或更新数据字典(数据字典管理的表空间中)来反映作为可用空间而重获的范围。在释放的范围的块中任何数据不可以存取,并且当块随后被另外的范围再使用时,Oracle会清除这些数据。 只要一非聚集表存在或直到你清空表以前,任何分配给这个数据段的数据块仍然是由表分配的。如果有足够的空间,Oracle把新行插入到块中。就算你删除表的所有行,Oracle不会回收数据块让它由表空间中其它对象使用。 在你删除一张非聚集表以后,当另外的范围需要空间时,这个空间能被回收。Oracle为所在表空间回收所有表的数据段和索引段的范围,使得范围可以由该表空间另外的模式对象使用。 在字典字典管理的表空间中,当段要求比可用范围更大的范围时,Oracle识别并且结合连续的回收的范围形成更大的一个范围。这被称为接合范围(coalescing extents)。 接合范围在本地管理的表空间中不是必要的,因为所有的连续的空闲空间可以用来分配到一个新的范围而不管它是否是回收的。 聚集表在为聚集创建的数据段中存储它们的信息。因此,如果你在聚集中删除一个表,在聚集中数据段保留给另外的一个表,并且没有范围被释放。可以通过截断聚集(除了哈希值聚集)来释放范围。 分配到索引段的所有的范围只要这个索引存在就会仍然存在。当你删除这个索引或相关的表或聚集时,Oracle从表空间中回收范围以作它用。 Oracle周期性地检查数据库的回滚段看他们是否变得了比他们的最佳大小大。如果比最佳的大小大(也就是说,它有太多的范围),Oracle会从回滚段中自动地释放一个以上的范围。 当Oracle完成一个语句的执行时需要使用临时段,Oracle自动地删除临时段并且返回为那段分配的范围给相关表空间。对于单排序在临时表空间中分配自己的临时段。对于多排序而言,能够使用专门设计用于排序的临时表空间中的排序段。排序段在实例中只分配一次,在排序完成以后不会返回仍然保持可用以进行其它排序。临时表的临时段包含单个的事务或会话的多重的语句数据。Oracle在事务或会话的结束时删除临时段,返回为那段分配的范围到相关的表空间。 9.1.3 段 段是在表空间内包含所有的数据的由一组范围组成的特定逻辑存储结构。例如,对每表,Oracle分配一个以上的范围以形成那表的数据段,并且为每个索引,Oracle分配一个以上的范围形成它的索引段。 Oracle数据库使用4种类型的段,分别是:数据段、索引段、临时段和回滚段。 278
一.数据段 Oracle数据库中数据段保持下列所有的数据: ? 未分区和未聚集的表 ? 分区表的分区 ? 表的聚集 当你用CREATE语句创建表或聚集时,Oracle自动创建数据段。 表或聚集的存储参数决定它了的数据段的范围是如何分配的。你能用CREATE或ALTER语句直接设置这些存储参数。这些存储参数影响了与对象相关的数据段数据检索和存储的效率。 二.索引段 在Oracle数据库中每个未分区索引都有一个索段保存它的数据。对于一个分区索引,每个分区都有一个索引段保存它的数据。 当你发出CREATE INDEX语句创建索引时,Oracle为一个索引或一个索引分区创建索引段。在这个语句中,你能为索引段中每个范围指定存储参数。(表的段和相关索引的段可用不在同一表空间)。设置存储参数直接影响数据检索和存储的效率。 三.临时段 当处理查询时,Oracle经常需要临时的工作空间来分析SQL语句和执行的中间过程。于是Oracle自动地分配这个磁盘空间――临时段。典型地,Oracle需要临时段作为排序操作的工作区域。如果排序的操作能在内存中完成或如果Oracle发现可以使用索引等一些另外的方法执行操作时,Oracle不创建这个段。 下列语句要求使用临时段: CREATE INDEX
SELECT ... ORDER BY
SELECT DISTINCT ...
SELECT ... GROUP BY
SELECT ... UNION
SELECT ... INTERSECT
SELECT ... MINUS
一些非索引连接和相关的子查询同样需要使用临时段。例如,如果查询包含一个DISTINCT、GROUP BY或ORDER BY子句,Oracle需要2个临时段。如果应用程序经常在先前的列表中发出语句,数据库管理员能由调整初始化参数SORT_AREA_SIZE提高性能。 Oracle能临时表和创建在临时表上的索引也分配临时段。临时表保存的数据只是在事务或会话的持续时间内存在。Oracle为查询和临时表分配不同的临时段。 在用户会话期间需要Oracle分配临时段,存放在用户发出语句的临时表空间中。指定这个临时表空间可用CREATE USER或ALTER USER时使用TEMPORARY TABLESPACE子句。如果用户没有定义临时表空间为,则缺省的临时表空间是SYSTEM表空间。包含的表空包含总结汇报、行业论文、出国留学、计划方案、教学研究、外语学习、自然科学、党团工作、IT计算机、经管营销、表格模板以及第09章
数据库逻辑结构管理等内容。本文共10页
相关内容搜索404页面_天天BT电影天堂
资源搜索:
你的位置 :
404无法打开页面
可能原因:
该页面可能已经被删除了!
你输入的网址有错或者本站不存在该页面!
网站可能出错!你可以向网站管理员反应此问题。
该资源被网友举报为恶意资源,已删除!!亲如果发现有下载后无法播放或者需要证书什么的请加QQ群联系群主删除该资源!创建表时,带的一些参数意义tablespace 表空间 & pctfree 10 & initrans 1 & maxtrans 255 & storage & ( &
initial 64K &
minextents 1 &
maxextents unlimited & );上面是创建表时,带的一些参数,我都不知干嘛用的,我一般创建表都默认,不去管他;听说这里面参数不能乱改?请高手指点,每个参数意义?对表性能有什么影响?谢谢~!!!
  SQL code  tablespace 表空间 --指定建立对象的表空间
pctfree 10 --块预留10%空间用于以后数据更新
initrans 1
--初始化事务槽数
maxtrans 255 --最大事务槽数
storage --下面是存储参数
initial 64K --初始化扩展区为64k
next 1M --下次扩展1m
minextents 1 --最小区数为1
maxextents unlimited --最大区数无限制工作中需要学习oracle,但是在使用DBMS_METADATA.GET_DDL中获取对象DDL语句时,末尾部分返回pctfree&10&pctused&40&initrans 1 maxtrans 255 nocompress logging tablespace &USERS&。网上找了下,还有真有朋友给出了这些关键字的解释。留下来。
原文链接:http://blog.csdn.net/huang_xw/article/details/6995442
1. PCTFREE
要形容一个 BLOCK 的运作,我们可以把一个 BLOCK 想成一个水杯。侍者把水倒入放在我们面前的水杯,要多满呢,我们要求他倒 9 分满好了,这时候 PCTFREE 代表着设定为 10 ,意思就是说,当 BLOCK 使用到达 90% 的时候,就不可以在使用了,这个 BLOCK 应该从 FREELIST 列表中移除 (un-link) 。为何要保留 10% 的空间呢?这是为了提供 update 数据时所可能增加的空间使用,如果空间保留的太小,就容易发生 row chaining 。
2. PCTUSED
PCTUSED 代表着这杯水什么时候可以添加,假设 PCTUSED 为 40 ,代表当我们把水杯的水喝到剩下 40% 以下时,侍者就会知道需要加水了。你想想看,如果说在餐厅里妳每喝一口水侍者就来加水,你会不会觉得很烦,对餐厅来说,也要派很多人不断帮每桌客人加水,这生意还能做吗?所以说, PCTUSED 代表着 re-link 回 FREELIST 的意义,如果说 PCTUSED 设的太大,例如 70 好了,代表这杯水你随便喝一口侍者就要来加水了,这隐含的意义是,这个杯子的利用率增加,但是侍者频繁的服务造成了负荷
(I/O Overhead) 。 PCTUSED 设小一点,例如 10 ,代表当水喝到剩下 10% 的时候 ( 如同 DELETE 事务操作 ) ,才须要放回 FREELIST ,代表可以加水了 ( 如同 INSERT 事务操作 ) 。
简单的说,如果希望储存空间发挥最大使用效益,可以把PCTUSED设大一点,相反的,如果想要提高IO效能,应该把PCTUSED设定小一点。
FREELIST 储存着可使用的 BLOCK 信息,当 BLOCK 被 DELETE 数据使用量下降到 PCTUSED 时,就会重新放置到 FREELIST 上,让其它交易新增数据使用。 FREELIST 存放在 TABLE/INDEX 的 Segment Header 中,他管理着所有可以新增数据的 BLOCK 信息。想想,如果有多人同时要新增数据而要求 FREELIST 提供可使用的 BLOCK 信息, FREELIST 不就也会成为另一个 Overhead ?所以依照 TABLE 使用的需求调整
FREELIST 的数量也是 IO Tuning 的一个重点。
这个参数在ASSM中已经没有用了,只剩下PCTFREE是生效的了。
3. INITRANS
INITRANS 指的是一个 BLOCK 上初始预分配给并行交易控制的空间 (ITLs)
( 当 BLOCK 上某笔 ROW 被交易更新锁定时,会在 BLOCK header ITL allocate 一个锁,当下一个交易要更新同一笔 row 时,就会发现他已经被先前的交易持有锁了,会先去检查该交易是否 active? 如果是,后来的该笔交易就会被 blocking ,等待 ) 如果一个表格需要同时有大量交易存取,你应该设定 INITRANS 大一点,可以减少 ITL 还要动态扩充的 Overhead 。
For tables INITRANS defaults to 1 for indexes 2
4. MAXTRANS
MAXTRANS 指的是如果 INITRANS 空间不够用了,就会自动扩展 ITL ,直到最大值也就是 MAXTRANS 值为止,预设是 255 。但是,如果 BLOCK 空间已经不足,也有可能无法持续扩充到 255 个 ITS 空间喔。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13391次
排名:千里之外
转载:21篇
(1)(1)(2)(6)(3)(4)(1)(3)(3)

我要回帖

更多关于 创建表空间参数 的文章

 

随机推荐