当对表进行分区后,逻辑上是一张完整的表,只是将表中的数据在物理上可能存放到多个表空间或物理文件上。当查询数据时,不需要全表扫描。Oracle可以将大表或索引分成若干个更小、更方便管理的部分,每一部分称为一个分区,这样的表称为分区表。SQL语句使用分区表比全表能提供更好的数据处理与访问的性能。即便是个别分区不可用,其他分区仍然可用。,这称为分区独立性。
分区表的一些限制条件:
(1)何时考虑分区?对大表进行分区,将有益于大表操作的性能和大表的数据的维护。官方说通常当表的大小超过2GB,或者对于OLTP系统,当表的记录超过1000万条时,都应考虑对表进行分区。
(2)分区表有什么优点?分区表有如下的优点:
1)增强可用性:如果表的一个分区由系统故障而不能使用,那么表的其余好的分区仍可用使用。
2)减少关闭时间:如果系统故障只影响表的一部分分区,那么只有这部分分区需要修复,可能比整个大表修复花的时间更少。
3)维护轻松:单管管理每个分区比管理单个大表要轻松得多。
4)均衡I/O:可以把表的不同分区分配到不同的磁盘来平衡I/O,改善性能。
5)改善性能:对大表的查询、增加、修改等操作可以分解到表的不同分区来并行执行,可使运行速度更快。
6)分区对用户透明,最终用户感觉不到分区的存在。
(3)有哪些类型的分区?如何选择用哪种类型的分区表?Oracle的分区可以分为:
1)范围分区(RANGE PARTITION)
2) 哈希分区(HASH PARTITION)
3) 列表分区(LIST PARTITION)
4)复合分区(组合分区)
5)INTERVAL分区(间隔分区)
6)系统分区
(1)RANGE(范围)分区 在如下几种情况下会使用到范围分区:
1)频繁地被一个时间范围谓词扫描。
2)维护一个时间滚动的数据窗口(Rolling Window Of Data)
3) 保存历史数据的表。
(2) HASH分区,HASH分区有如下的优点:
下面几种情况用HASH分区比RANGE分区更好。
(3) LIST(列表)分区 列表分区(LIST PARTITION)提供了一种按照字段的值来进行分区的方法,这种方法非常适合有高重复率字段值的表。
列表分区有如下特点:
3.分区表常用数据字典视图有哪些?
Oracle分区表相关数据字典视图如下:
4.普通表转换为分区表有哪些办法?
将普通表转换成分区表有以下4种方法:
1)导出、导入方法(Export/Import Method)
2) 子查询插入方法(Insert With a Subquery)
3)分区交换方法(Partition Exchange Method)
4)在线重定义方法(DBMS_REDEFINITION Method)