论坛首页 综合技术论坛

ORACLE数据库名词解释

浏览 3728 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-21  
一:首先对几个有关模式对象进行下说明

二:AUTOEXTNED_CLAUSE相关参数的说明及建议

三:STORAGE主要相关参数的说明及建议

四:建表时一些可能影响系统性能的参数的说明

一:首先对几个有关模式对象进行下说明
    数据块(block):也叫逻辑块或ORACLE块,它是数据库进行I/O的最小单位。一个数据库块对应硬盘上的一个或多个物理块,它决定于建库时所使用的初始化参数DB_BLOCK_SIZE。数据库块的大小也决定了SGA中每一个数据库缓冲区的大小。

    范围(extent):范围是数据库存储空间分配的逻辑单位,它由一组连续的数据块所组成。当数据库的对象(如表、列等)增长时,空间就被分配给范围。

    段(segment):  是由一个或多个范围组成的范围集,它包含一个表空间内特定逻辑存储结构的所有数据。一个段是一个能被建立的逻辑结构,它占有存储,并且能增长,当一个段中的所有空间被用完时,ORACLE就分配它一个新的范围,但是一个段不能跨越表空间。

    表空间(tablespace):一个数据库从逻辑上来说是由一个或多个表空间所组成,表空间是数据库中物理编组的数据仓库。每一个表空间是由段所组成,一个表空间存放一个或多个数据库的物理文件。一个数据库中的数据被逻辑地存储在表空间上。  

    行链锁:当把一个包含LONG类型的列数据行存储到一个数据库中时,则该行就可能被存储在两个或多个相链接的数据块中,这种现象叫行链锁。  

    迁移:当数据库块中的行被更新时,其行长可能增长,此时可能会出现块的自由空间被用完,而使行被移至下一数据库块,这种现象叫迁移。不论是行链锁还是迁移都将会影响系统访问数据的效率,因为ORACLE是以数据块为单位进行读取的,所以ORACLE在访问一个行链锁或迁移行时就必须扫描多个数据块,降低I/O性能也就是影响系统性能。

二:AUTOEXTNED_CLAUSE相关参数的说明及建议
    AUTOEXTEND

    OFF: 当AUTOEXTEND开关设置为OFF时数据文件将不能进行自动扩展。               

    ON: 当AUTOEXTEND开关设置为ON时数据文件在空间用完时将自动进行扩展。

    NEXT:在AUTOEXTEND开关设为ON时,对指定该参数,表示数据文件每次向外扩展的字节数。MAXSIZE:指定允许数据文件向外扩展的最大空间大小。(有了此参数后面的UNLIMITED就不用)。UNLIMITED:表示不限止分配给数据文件的磁盘空间。(有了此参数那MAXSIZE就不用)。

    一般建议在建立数据文件时都指定允许其扩展,对于回滚段可设置为UNLIMITED,以防止事务大多时回滚段可以有更大的扩展空间;对于将来在其空间上要建立数据量较大增长较快的表时,应该给它指定个较大的MAXSIZE值。

三:STORAGE主要相关参数的说明及建议
    INITIAL:

    此参数指定分配给段的第一个范围的字节量,其缺省值相当于5个数据库块,最小值为相当于2个数据库块的大小。最大值要依赖于操作系统。该参数一般设定为该对象可能增长到的最大值稍大30%或更大些到预计可能大小的2倍。

    NEXT:

    分配给一个段的下一个增量范围的字节量,该参数的值一般设置等于INITIAL的值。MAXEXTENTS是能分配给段的范围总数。对于我们自己建立的表在磁盘空间允许时一般把它设为UNLIMITED(无限制)。

    MINEXTENTS

    是段建立时分配给它的范围总数,一般为1个范围。回滚段最少应为2个范围,应尽可能再大一些

    PCTINCREASE

    是一个百分数,每一个增量范围都在最新分配的增量范围上增长这个百分数。缺省值是50%,但在回滚段中此参数应设置为0。对于一般的表应把它设置为0,但对于一些修改频繁且增长很快的表应给它设置个较大的PCTINCREASE参数值,

    OPTIMAL(此参数只对回滚段而言)

    它指定在回滚段空闲时系统对回滚段回收的位置,当回滚段比OPTIMAL大时,ORACLE就能重新分配范围,从而维护其大小。以下几点建议可供参考:

    1、于长时间运行的更新事务的回滚段,应该分配一个高的OPTIMAL参数值,以避免过多的分配和重新分配。

    2、对于长时间运行查询的回滚段,为了保证在查询的同时能用于更新信息的事务,它应该有一个大的OPTIMAL参数值,以免错误快照太老。于短时间运行更新事务和短时间运行查询事务的回滚段,应该有一个较小的OPTIMAL参数值,以便增加回滚段的高速缓冲存储器。ORACLE具有范围动态重新分配的性能,其特点是:一个回滚段可以有一个最佳的尺寸,最佳尺寸是在段建立或修改时指定的。一旦一些活动事务被删除,回滚段将收缩到最佳尺寸(OPTIMAL)。(在指定存储参数时,应当遵循的的方针:即最大的使用连续的自由空间和防止数据文件碎片化。如果不控制范围的分配,则会由于过量的I/O操作和操作系统文件的碎片化而使系统性能下降。减少碎片的办法是使一个段符合INITIAL范围,并且设置PCTINCREASE适合于扩大的增量范围)以上参数在对clusters、 indexes、 rollback segments、 snapshots、 snapshot logs、 tables、 tablespaces、 partitions等对象进行创建或修改时进行设置。其中INITIAL、MINEXTENTS为在创建时设置,已后就不能对它进行修改;MAXEXTENTS、NEXT、PCTINCREASE、OPTIMAL都可以在对象创建后根据情况对其进行重新设置。

    3、表空间(TABLESPACE)与建立在其上的对象在STORAGE参数的关系

    在建立表空间(TABLESPACE)时可以设置有关存储参数(STORAGE),那么以后建立在其上的对象都将可以继承这些参数。这些参数只是一个较合理的设置,一般情况下建立在此表空间上的对象可以继承它。但有时可能有些对象较特殊,比如:对于一些修改频繁且数据量较大的对象,就应该给它个较大的NEXT参数值和较大的PCTINCREASE参数值,以避免范围的频繁删除—分配所导致的物理文件的碎片化。在这种情况下就应该在建对象时为此对象设置特有的STORAGE参数值。

四:建表时一些可能影响系统性能的参数的说明
    1、自由空间的控制及相关参数的说明

    对于插入、更新和删除数据库块中的行来说,可通过指定PCTFREE和PCTUSED空间参数的值来控制自由空间的使用,减少上面所讲到的“行链锁”和“迁移”:

    PCTFREE:该参数用于指定在向块中插入新行时应该保留的自由空间的百分数,该保留空间用于修改已包含在该块中的行时使用。比如在建表CREATE TABLE 语句中指定该参数为:PCTFREE=20,则在向该表插入新的数据行时,其每个数据块空间最多只能使用80%,一旦达到80%,就不能再向该块插入数据行。留下的20%空间留作此后修改该块中的行时使用。

    PCTUSED:该参数是一个限定值,其目的是控制向一个低于PCTUSED所指定的值时,。当通过删除行或更新行(减少了列的存储使用量)而使数据库块的使用百分数ORACLE又许可向该块插入新的数据行。

    所以在建表时可以根据表的特性和将来系统对表所要进行的操作对其设置一个合理的值。但两参数之和要小于或等于100((PCTFREE+PCTUSED)<= 100)。利用PCTFREE和PCTUSED对块的自由空间进行控制:

        1.  当选择较低的PCTFREE值时能允许向数据块中插入更多的数据行,使其填的更满,这样可节约数据块,使行移动少;但如果有频繁删除操作时,就需要频繁的空间再组织操作从而增加处理代价。

        2.  当选择较高的PCTFREE参数时,可为未来的更新操作提供更多的空间;减少空间再组织,从而降低处理代价,减少链锁行,但它需要更多的数据库块来存储数据,而且如果PCTFREE参数值太高,那么装入一个块的数据行就越少,因为ORACLE总是以块为单位读,块的数据少那每次读的数据就少,这样将影响访问数据的效率。

        3.  当选择较低的PCTUSED时,可降低处理代价(因为数据库块空闲的机会少),增加未用空间,但容易造成碎片增多。

        4.  当选择较高的PCTUSED时,可改善空间使用,但会增加处理代价(因为数据库块经常呈现空闲状态)

    2、建表时考虑对INITRANS和MAXTRANS参数的设置

    这两个参数是对数据块访问进行控制,合理调整两个参数也将尽量减少用户访问时的冲突,对所有数据的访问最终都是对数据块的访问。

    INITRANS:

    此参数指定在对象的每一个数据块中为指定数目的事务项预分配的空间,这样当事务进入数据块时系统就不必动态地来为事务项分配空间,其默认值为1。

    MAXTRANS:

    此参数指定能够并发进入一个数据块的最大事务数目,这也就限制了在任何特定的时间事务项在一个数据块所能占用的空间大小。

    说明:对于用户数量较大的情况,就应将这两个参数都设得大些,对于用户较少的情况,相应事务数目也不会太多,可以设得小些,以节省空间,另外要考虑对象的大小,对于大对象,数据分散在许多数据块中,这样对同一数据块访问的可能性较小,则可考虑将这两个参数设小些,而对于较小的表,也许用不了几个数据块当用户多时,对同一块的访问可能性很大,就需要将它们设得大些。

    在建表时应分析在将来开发的系统中将对表进行什么样的操作,对于在系统中要对表进行的经常性的查询的字段应为其建立索引,这样在系统中就可以利用此索引进行查询以提高查询的速度。同时在建索引时,应最好将索引存放在不同的表空间中,并且最好是存放在不同的磁盘上,这样在处理数据时就可以充分利用磁盘I/O,使数据和索引在不同的I/O上进行,以提高访问速度。


论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics