`
duanhengbin
  • 浏览: 384668 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Oracle 超大表中partition和 subpartition的使用案例

 
阅读更多

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数据库中PARTITION的用法[文].pdf

    Oracle查询中OVER (PARTITION BY ..)用法

    Oracle查询中的`OVER (PARTITION BY ..)`是一个窗口函数,它允许我们在数据集上执行计算,但不是在整个结果集上,而是针对每个分区。这部分功能非常强大,可以用于复杂的分析和排序任务,尤其是在处理分组数据时。在...

    oracle partition 深入讨论

    Oracle Partition 是一种数据库优化技术,它将大型表和索引分解为更小、更易管理的部分,称为分区。这一特性旨在解决支持非常大的表和索引时所面临的挑战。通过分区,可以对数据库对象进行有效的管理和维护,同时...

    Oracle分区表详解

    Oracle 的分区技术是一种用于管理和优化超大型表和索引的有效手段。通过将一个大型的表或者索引分割成多个较小且可管理的部分,分区技术能够显著提升数据库的性能、可用性和可维护性。 ##### 分区的作用: 1. **...

    Oracle分区表_(Partition_Table)_的创建及管理

    ### Oracle分区表(Partition Table)的创建及管理 #### 一、创建分区表 在Oracle数据库中,分区表是一种非常实用的技术,它能够通过将一个大表分割成多个更小的部分来提高查询性能和可管理性。根据不同的数据分布...

    oracle分区表之hash分区表的使用及扩展

    Oracle分区表中的Hash分区是一种基于哈希算法的分区策略,适用于处理无法清晰定义分区范围的大型数据表。这种分区方式通过计算分区键的哈希值来决定数据存储在哪个分区,以此达到数据分散和负载均衡的目的。Hash分区...

    Oracle9i中分区Partition的使用简介

    Oracle9i通过引入列表分区(List Partition),使得当前共有4种分区数据的方法,文中分别介绍了这四种分区方法:范围分区、Hash分区、复合分区、列表分区。

    Oracle Partition分区详细总结.pdf

    在Oracle数据库中,**表空间**是数据文件的逻辑容器,用于组织和管理数据。它由一个或多个数据文件组成,其中包含了数据库的所有数据对象,如表、索引、视图等。表空间的引入主要是为了方便管理和分配存储资源,以及...

    oracle数据库表分区实例

    ### Oracle数据库表分区实例 #### 一、Oracle表分区简介 在Oracle数据库中,表分区是一种将大型表物理地划分为多个较小部分的技术。...希望这些内容能够帮助您更好地理解和应用Oracle数据库中的表分区技术。

    Oracle分区表(Partition Table)使用详解

    Oracle分区表是Oracle数据库系统中一个强大的特性,用于提高数据管理效率和查询性能。通过将大表分成逻辑上独立的小块,每个块对应一个特定的数据范围或键值,可以实现数据的并行处理,简化管理和优化查询。在本文中...

    oracle 普通表转分区表方式

    本文详细介绍了将 Oracle 普通表转换为分区表的方法,包括备份创建表脚本、查看数据类型、创建分区表、迁移数据和更新索引和约束等步骤。通过将普通表转换为分区表,可以提高查询效率、减少存储空间和提高数据管理...

    ORACLE TABLE PARTITION

    本文档详细介绍了在Oracle数据库中如何将一个非分区表转换为分区表的过程,尤其关注在线模式下的转换方法,以便在不影响业务的情况下进行转换。 #### 二、基础知识 在深入讨论转换过程之前,我们先了解一些关于...

    Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数(转载)

    `OVER (PARTITION BY ...)` 和开窗函数在Oracle数据库中提供了极其强大的数据处理能力,特别是在需要进行复杂的数据分析或报表制作时。掌握这些技术对于提高数据库查询效率和数据处理能力至关重要。

    oracle分区表总结

    在Oracle数据库中,分区是一种对大型表进行物理分割的方法,它可以显著提高查询性能并简化数据管理任务。通过将一个大表分成多个较小的部分(即分区),可以更快地执行查询操作,尤其是在处理大数据集时。此外,分区...

    Oracle表分区 建表空间 创建用户

    在Oracle数据库中,**表空间**(Tablespace)是物理存储的逻辑容器,它由一个或多个数据文件组成。创建一个新的表空间对于数据库的管理非常重要。 ##### 创建表空间 根据给定的内容,创建表空间`JPA_TAB`的SQL语句...

    利用kettle自动创建oracle表分区

    在本篇文章中,将会介绍如何使用Kettle自动创建Oracle表分区。Oracle表分区是一种非常重要的数据库优化技术,它可以将大型表分割成多个小的独立表,从而提高查询效率和数据管理效率。在本篇文章中,我们将使用Kettle...

    ORACLE SYSTEM表空间已满解决方案.docx

    6. **其他Oracle软件产品要求的表**:这些表用于支持Oracle提供的其他工具和服务。 #### 二、查询SYSTEM表空间的大小及占用情况 为了有效地管理和监控SYSTEM表空间,需要定期检查其大小和使用情况。这可以通过执行...

    Oracle 分区表自动维护脚本

    标题中提到的“Oracle 分区表自动维护脚本”是指一种在Oracle数据库系统中用于管理和维护分区表的自动化脚本。这种脚本可以执行多个维护任务,包括但不限于:增加新分区、删除历史分区、拆分分区和数据清除等操作。...

    ORACLE分区表的创建

    在Oracle数据库中,分区是一种高效的数据管理方式,尤其适用于大型表和索引组织表。通过将数据逻辑地分割成多个独立的部分(即分区),可以显著提高查询性能,并简化表维护操作。本文将详细介绍在Oracle中如何创建...

    Oracle数据库分区表操作方法

    Oracle数据库中的分区表是将大型数据表分割成多个小表,以提高应用系统的性能和方便数据管理。在本文中,我们将详细介绍分区表的使用方法和优点。 分区表的优点 使用分区表可以带来以下几个优点: ·增强可用性:...

Global site tag (gtag.js) - Google Analytics