Oracle几种表的简介

在大部分情况下,普通堆表可以满足项目的基本需求,但是对于性能要求较高的场合,普通堆表的一些劣势便显现出来:

1、  表更新产生大量的日志

2、  删除记录后无法真正释放空间(如执行delete命令后,再次执行select count(*)语句产生的逻辑读次数还和原来一样,需使用truncate table将表截断才能减少逻辑读)

3、  表记录太大时,检索较慢

4、  在有索引的情况下,索引回表读产生很大的开销

5、  有序插入,不能有序读出(如原来插入1,2,3几条数据,2被删除,再插入4,查询结果为1,4,3

Oracle提供了全局临时表、分区表、索引组织表、簇表来弥补以上缺点,每种表都有自己的适用场景。下面对几种表进行简要介绍:

一、全局临时表:分为基于事务和基于session的两种。

         基于事务的全局临时表在事务提交后(也就是commit后)或者session断开后表数据便自动清空,基于session的是在session断开之后清空。

无论是插入更新还是删除操作都会比普通堆表产生更少的日志。

此外,全局临时表的数据对不同的session是独立的,也就是说不同session访问全局临时表,看到的结果不同(如A连接在临时表中插入10条数据,B连接在同一表中插入1条数据,A查询结果为10条,而B仍然为1条,彼此互不影响)。

二、分区表:包括范围分区、列表分区、HASH分区、组合分区(每个分区是一个段)

         范围分区:将表记录按照创建时间范围进行划分。

         列表分区:将表记录按照运营区域进行划分(每个运营区域可建一个分区)。

         散列分区:不自己指定分区名,而是由系统自动分配,仅仅指定分区个数。

         组合分区:两种分区形式的组合,如范围-列表分区。

         使用分区表可达到分区消除的效果,提高检索效率,但分区表更适用于大表(一般数据大于上百万条记录),小数据量的表使用分区表可能会降低性能。

三、索引组织表(create table***   organization index)

         在索引组织表中,表就是索引,索引就是表。可避免回表读,提高查询效率。但索引组织表适用于更新较少、频繁读取的情况,否则更新时会给数据库带来很大的负担。

四、簇表:本身有序,可避免Order by语句。但是同索引组织表一样,更新操作开销大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值