Oracle 表分区处理海量历史数据方案

前言

在实际项目中,随着项目的运行,数据量会越来越大,势必会影响到现有项目的性能以及体验。数据库的压力也随之增大。同时历史数据又不能轻易删除,需要保留一段时间。所以我们就需要有一种方案来解决这个问题。


解决方案

  1. 创建与现有数据库表结构相同的历史分区表。按照最后更新时间创建分区。
 CREATE TABLE CUSTOMER 
 ( 
     CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY, 
     FIRST_NAME  VARCHAR2(30) NOT NULL, 
     LAST_NAME   VARCHAR2(30) NOT NULL, 
     PHONE        VARCHAR2(15) NOT NULL, 
     EMAIL        VARCHAR2(80), 
     STATUS       CHAR(1),
     LAST_UDT     DATE
 ) 
 --按用户ID分区
 PARTITION BY RANGE (CUSTOMER_ID) 
 ( 
     PARTITION CUS_PART1 VALUES LESS THAN (100000) TABLESPACE CUS_TS01, 
     PARTITION CUS_PART2 VALUES LESS THAN (200000) TABLESPACE CUS_TS02 
 )
  1. 创建定时任务
    1. 定时执行sql新增分区。如果分区已存在则不创建。
    2. 定时执行对原数据表中的数据做数据迁移到分区表中。并删除原数据表中已迁移的数据。
    3. 如有需要还可定时执行删除历史数据表中已超过最大保存时效 的数据分区。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。