Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4043079
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类: Oracle

2006-11-21 12:17:38

Oracle主要有9种表类型:

1>. 堆组织表(heap organized table):
    "普通"的标准数据表. 数据以堆的方式管理, INSERT, UPDATE只要找到自由空间存放数据就可, DELETE数据后的空间可以重用.
    全表扫描时, 会按命中的顺序来获取数据, 而不是按插入的顺序. 数据表是无序的数据集合. 同一个查询可能以不同的顺序取出数据.

2>. 索引组织表(index organized table):
    按索引结构存放, 强制要求行本身有某种物理顺序. 数据按主键有序存放.
    与heap organized table比较: 堆表有主键索引的空间开销, IOT表就不存在了, 本身就是有序存放的.
    如果你只通过主键来访问该表, 侧使用IOT表比较好.
    CREATE TABLE IOT_tablename
    (
        -- ....
    )
    ORGANIZATION INDEX;

3>. (index clustered table):
    将一个或多个表组成的组, 物理的存放在相同的数据块上, 有相同键值的所有行会相邻地存放. 按B*树建立索引.
    Culster: 如果一组表有有一些共同的列, 就将这样一组表存放在相同的数据块上. Cluster也可以在一张表的某个列上. Cluster不是有序的存放数据, 而是按某个列聚簇方式存放数据, 数据存放在堆中.

4>. (hash clustered table):
    与index cluster table相似, 不使用B*树建立索引, 采用hash函数的型式.

5>. (sorted hash clustered table):
    add in Oracle 10g. 接合了IOT(index organized table)和hash clustered table的特性.

6>. (nested table):
    是Oracle对象关系的扩展, 类似父/子关系表, 但没有子表那样独立.

7>. (temporary table):
    存放事务期或会话期的"草稿"数据. 在临时表空间中分配.

8>. (object table):
    基于对象类型创建.

9>. (external table):
    表不存放在数据库中, 存放在操作系统的文件中.

--------------------------------------------
段(segment)类型    

1>. cluster:
    能存放表, 通常存放多个表上相关的数据, 该段可以把相关的信息物理的聚在一起. cluster有两种类型:B*树和hash.

2>. table:
    最常见的段类型, 通常与索引段关联使用.

3>. table partition or subpartition:
    用于表的分区.

4>. index:
    保存索引结构信息.

5>. index partition:
    用于索引的分区

6>. lob partition, lob subpartition, lob index, lob segment :
    对包含LOB对象的分区

7>. nested table:
    为nest表保存数据.        

8>. rollback and Type2 undo:
    rollback segment 由DBA手动建立, Type2 undo由Oracle自动建立与管理.

eg:
SQL>select segment_name, segment_type from user_segments;

no rows selected

SQL>create table t( x int primary key, y clob, z blob);

Table created.

SQL>select segment_name, segment_type from user_segments;
SETGMENT_NAME        SEGMENT_TYPE
---------------------        -------------------
T                TABLE
SYS_IL0000030233C00002$$    LOBINDEX
SYS_IL0000030233C00003$$    LOBINDEX
SYS_C002241            INDEX
SYS_LOB0000030233C00002$$    LOBSEGMENT
SYS_LOB0000030233C00003$$    LOBSEGMENT

6 rows selected.

-----------------------------------------------------------
Segment Space Management
1>. Manual Segment Space Management:
    由你设置FREELISTS, FREELISTGROUPS, PCTUSED和其它参数来控制如何分配,使用Segment.

2>. Automatic Segment Space Management:
    设置PCTFREE, BUFFER_POOL, INITRANS, MAXTRANS    
阅读(1880) | 评论(0) | 转发(0) |
0

上一篇:Oracle Table Type

下一篇:TRUNCATE and DELETE

给主人留下些什么吧!~~