《Oracle编程艺术》学习笔记(40)-分区的优点
来源:互联网 发布:Tomcat不用绑定域名 编辑:程序博客网 时间:2024/05/22 18:22
1)提高数据的可用性
在一个大对象中如果一个分区不可用,查询可以消除这个分区而不予考虑。
恢复数据也可以更快。现在恢复的时间就只是恢复一个分区所需的时间。
例如下面把把2010年数据的分区离线,使这个分区不可用,可以通过在查询语句中指定分区,不受影响地访问2011年的数据。
tony@MYTEST2> select partition_name,tablespace_name,high_value 2 from all_tab_partitions where table_name='T_RANGE';PARTITION_ TABLESPACE HIGH_VALUE---------- ---------- --------------------------------------------------PART_1 TS1 TO_DATE(' 2011-01-01 00:00:00', 'SYYYY-MM-DD HH24: MI:SS', 'NLS_CALENDAR=GREGORIAN')PART_2 TS2 TO_DATE(' 2012-01-01 00:00:00', 'SYYYY-MM-DD HH24: MI:SS', 'NLS_CALENDAR=GREGORIAN')PART_3 TS3 MAXVALUEtony@MYTEST2> select * from t_range;RANGE_KEY DATA------------------- ----------------2010/12/31 00:00:00 AAA2011/01/01 00:00:00 BBB2011/02/24 00:00:00 CCC DDD sys@MYTEST2> alter tablespace ts1 offline;Tablespace altered.tony@MYTEST2> select * from t_range;select * from t_range*ERROR at line 1:ORA-00376: file 5 cannot be read at this time...tony@MYTEST2> select * from t_range partition(part_2);RANGE_KEY DATA------------------- --------------------------------2011/01/01 00:00:00 BBB2011/02/24 00:00:00 CCC
甚至根据查询条件,Oracle可以自动进行分区消除。
从下面查询计划的Pstart,Pstop可以看出,分区1已经被排除在查询计划外了。
tony@ORA11GR2> select * from t_range 2 where range_key >= to_date('2011/01/01', 'yyyy/mm/dd');RANGE_KEY DATA------------------- ---------2011/01/01 00:00:00 BBB2011/02/24 00:00:00 CCCExecution Plan----------------------------------------------------------Plan hash value: 1921532398----------------------------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | Pstart| Pstop |----------------------------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 2 | 80 | 4 (0)| 00:00:01 | | || 1 | PARTITION RANGE ITERATOR| | 2 | 80 | 4 (0)| 00:00:01 | 2 | 3 ||* 2 | TABLE ACCESS FULL | T_RANGE | 2 | 80 | 4 (0)| 00:00:01 | 2 | 3 |----------------------------------------------------------------------------------------------------...
2)减少管理负担
例如,表中50%的行都是“移植”行,可能想进行修正。为了“修正”移植行,需要重建这个表。
如果有一个100GB的表,就需要表所在的表空间上有额外的100G空闲空间才能使用ALTER TABLE xxx MOVE来执行这个操作。
如果有25个分区,每个分区的大小为4GB,就可以使用ALTER TABLE xxx MOVE PARTITION yyy一个接一个地重建各个分区,只需要少得多的空闲空间。
如果有充足的资源,甚至可以在单独的会话中并行地执行ALTER TABLE MOVE语句,这就很可能会减少整个操作所需的时间。
甚至可能移植行都集中在一个很小的分区子集中,因此,可以只重建一两个分区,而不是重建整个表。
3)改善性能
体现在2个方面:
a) 分区消除:处理查询时不用考虑某些数据分区。
b) 并行操作:例如并行全表扫描和并行索引区间扫描。
在OLTP系统中,不应把分区作为大幅改善查询性能的方法。因为分区消除只有在对大对象全面扫描时才有用,通过分区消除可以只扫描大对象的一部分。OLTP系统一般设计为不会需要进行大对象扫描。
不过通过分区把表的修改分散到多个物理分区上,可以减少竞争,从而提高并发度。
数据仓库系统中,可以充分利用分区带来的好处,包括分区消除,以及使用并行查询来充分使用可用资源。
- 《Oracle编程艺术》学习笔记(40)-分区的优点
- 《Oracle编程艺术》学习笔记(38)-表分区
- 《Oracle编程艺术》学习笔记(39)-索引分区
- 《Oracle编程艺术》学习笔记(12)-Oracle的锁
- 学习《Oracle 9i10g编程艺术》的笔记 (一)
- 学习《Oracle 9i10g编程艺术》的笔记 (二)
- 学习《Oracle 9i10g编程艺术》的笔记 (三)
- 学习《Oracle 9i10g编程艺术》的笔记 (四)
- 学习《Oracle 9i10g编程艺术》的笔记 (五)
- 学习《Oracle 9i10g编程艺术》的笔记 (六) 体系结构
- 学习《Oracle 9i10g编程艺术》的笔记 (七) 文件
- 学习《Oracle 9i10g编程艺术》的笔记 (九) 进程
- 学习《Oracle 9i10g编程艺术》的笔记 (十) 锁
- 学习《Oracle 9i10g编程艺术》的笔记 (十一) 事务
- 学习《Oracle 9i10g编程艺术》的笔记 (十三) 索引
- 《Oracle编程艺术》学习笔记(33)-基于函数的索引
- 《Oracle编程艺术》学习笔记(23)-段
- 《Oracle编程艺术》学习笔记(27)-散列聚簇表
- linux kernel 处理网络数据包流程
- 转 linux 信号
- SSH开发架构
- Activity
- 主流浏览器内核的解析和对比
- 《Oracle编程艺术》学习笔记(40)-分区的优点
- C语言规范:C89、C90、C95、C99
- RTSP协议介绍
- CSDN第一篇博客
- 赵老师说
- linux下添加用户和删除用户以及该密码
- ant debug 出现的错误:build.xml:49 taskdef class com.android.ant.SetupTask cannot be found
- 如何从零开始开发一款嵌入式产品(20年的嵌入式经验分享学习)
- linux下的sftp命令