当前位置:数据库 > Oracle >>

深入理解Oracle表(7):10种表类型的数据存储和适用场景浅析

深入理解Oracle表(7):10种表类型的数据存储和适用场景浅析
 
深入理解Oracle表(6):堆组织表(HOT)和索引组织表(IOT)的区别
http://www.zzzyk.com/database/201305/208097.html
 
 ㈠ 堆组织表
          
          ⑴ 数据存储
             
             如果把一个区当作一个箱子,那么一个表就是一组无序的箱子堆在一起
             只要有可用的空间,数据可以放在任何地方
             全表扫时,会按命中顺序来获取数据,而非插入的顺序
             
          
          ⑵ 适用场景
             
             应用中99%的情况下使用的可能都是堆组织表
             执行create table语句时,默认得到的表类型就是堆组织表
             
             由于堆组织表在存储速度上较快,比较适合write I/O较多的情景
             
          
          ⑶ 相关参数
             
             以下参数仅适用ASSM
             
             ① PCTFREE
                
                这个参数用于控制能否将一行增加到一个块上
                如果设置的PCTFREE参数过小,也会导致没有给update操作留下足够的空闲空间
             
             ② INITRANS
                
                为块初始化分配的事务槽数,缺省为2,这也是最小值
                每个并发事务都需要一个事务槽
                倘若您认为将对同样的块完成多个并发操作,就应该考虑增大该值
                
                不过现在该参数已经可以自动调整了,除非遇到相关等待,不需要过多关注
                
             
       ㈡ 索引组织表
          
          ⑴ 数据存储
             
             索引组织表的数据保存在Index段中而不是Table段
             也就是,索引和数据是在一起的,数据是有序被存储
             
          ⑵ 适用场景
             
             什么时候用IOT要考虑的因素很多,连Tom 说一大堆也没说明白.
             但什么时候不用IOT却很清楚:如果不是大多情况下使用主键访问表,就不要用IOT
               
          ⑶ 相关参数
             
             ① OVERFLOW
                
                该选项允许您建立另一个段(这就使得IOT成为一个多段对象)
                如果IOT的行数据变得太大,就可以溢出到这个段中
                
             ② PCTTHRESHOLD
                
                如果PCTTHREHOLD是10%,而块大小是8K,则长度>800字节的行就会把其中一部分放到溢出段中
                
             ③ INCLUDING
                
                行中从第一列直到INCLUDING子句所指定列(也包括这一列)的所有列都存储在索引块上,余下的列存储在溢出段中
                
             ④ PCTFREE和PCTUSED对于考虑OVERFLOW段时的IOT意义非凡,像对待堆表时一样对待溢出段
             
             
       ㈢ 索引聚簇表
          
          ⑴ 数据存储
             
             含2层意义:
              多张表的相关字段保存在同一个块中
              多张表共同使用一个索引
          
          ⑵ 适用场景
             
             如果数据主要用于读,而且要通过索引来读,另外还会频繁地把这些信息联结在一起,此时,索引聚簇表就很合适了
             
          ⑶ 相关参数
             
             ① SIZE
                
                控制每个块上存储多少个聚簇键
                
                
       ㈣ 哈希聚簇表
          
          ⑴ 数据存储 
             
               数据在存储上同索引聚簇一样,然而在索引方面
               哈希簇是通过哈希函数直接定位数据的物理地址
             
          ⑵ 适用场景
          
               适合可以估计出大小的表,并且绝大多数查询都是通过HASH列进行等值查询
               全表扫描效率较低
               而且,HASH聚簇同样不适合大量DML操作
             
          ⑶ 相关参数
          
&
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,