Oracle 中 partition和 subpartition 是超大表常用的两个关键字,主要用来分区是提高数据读取效率。
(有关分区种类及语法细节网上有很多文章可参考)
今天看到一个应用方案,使用范围分区与业务处理结合到一起。感觉不错,记录下大致思路。
【需求】:
表中每日数据量较大,旧数据需要每日清理,不同种类的数据保存期不同。
很明显如果每日用delete清除数据效率很低且麻烦。(还要考虑批量提交问题)
【思路】:
将种类1绑定到partion的分割条件上,日期(日间隔)绑定到subpartition的分割条件上。
(为使建表语句条件表达式不至于太复杂,使用虚拟列简化条件)
绑定完成后,大批量的操作都是针对subpatition来进行,即先查出对象数据的 distinct object_id(即subpatition)
然后使用下面的命令执行批量操作。如:
删除 Alter table [表名] drop subPartition [subPartition名]
压缩 Alter table [表名] Modify subPartition [subPartition名] COMPRESS
导出 exp user/pasword tables=[表名]:[Partition名]…
【优点】:
数据分区直接与数据的逻辑块一致,旧数据清除,备份和压缩等批量操作效率会有数量级的提升。
【缺点】:
应用场景较为有限(只能绑定两级),不过大多数场合应当说足够了。
虚拟列的引入对插入性能有损失(较轻微)。
还有就是要写一个PL/SQL来实现功能。
【留意点】:
当一个partition 只剩最后一个subpartition时使用上面的命令会抛出异常
这时必须捕获该异常并使用删除其所在的partition才行。(很奇怪Oracle为什么不把它作为bug)
相关推荐
ORACLE数据库中PARTITION的用法[文].pdf
主要介绍了Oracle查询中OVER (PARTITION BY ..)用法,内容和代码大家参考一下。
Oracle9i通过引入列表分区(List Partition),使得当前共有4种分区数据的方法,文中分别介绍了这四种分区方法:范围分区、Hash分区、复合分区、列表分区。
深入探讨oracle partition的机制与实现
Oracle Partition分区详细总结.pdf
本课程详细介绍了Oracle数据库的分区表机制、分区表应用场景、分区表与分区索引类型/创建/维护操作、分区裁剪等,结合大量的案例程序,对Oracle分区表的使用进行了详细的分析讲解。
Oracle分区表_(Partition_Table)_的创建及管理.doc
Oracle 8i Partition.rar
Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数(转载),这个命令很实用,对于分析人员经常用到。
oracle partition table: range partitioned table. list partitioned table; hash partitioned table
how to convert table from non-partition table to partition table in online mode.
02) >本产品中使用的分区调度表名称为AGGRE_PARTITION_TASK,可以根据该表中信息观察分区情况。 以下为说明解释部分: 2.分区改造主过程:AGGRE_PM_PARTITIONF.SQL, 意思是PARTITIONING THE FIRST TIME; 参数解释...
本文主要介绍Oracle中rank,over partition函数的用法,希望对大家有所帮助。
Oracle 表分区技术详解: 1.表空间及分区表的概念 2.表分区的具体作用 3.表分区的优缺点 4.表分区的几种类型及操作方法 5.对表分区的维护性操作.
oracle非常详细的将普通表转成分区表的方式
也就是说如果只有个partition你在同组启动多少个consumer都没,partition的数量决定了此topic在同组中被可被均衡的程度,例如消费者少于和
partition by关键字是分析性函数的一部分,partition by用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,本文给大家介绍SQLServer中Partition By及row_number 函数使用详解,需要的朋友参考下
利用什么第三方的分区工具来实现硬盘无损分区。说到这里,大家首先想到的工具八成是PQMagic,不过在这里我给大家介绍...不过Partition Manager目前还只支持2000和XP专用版,用服务器版操作系统的朋友就只能另谋高就了。
oracle表分析和表分区sql(针对于oracle数据库表上亿条数据量所要考虑的优化操作)