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

2020-09-11  本文已影响0人  龙啊子工作室

前言

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


解决方案

  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. 如有需要还可定时执行删除历史数据表中已超过最大保存时效 的数据分区。
上一篇 下一篇

猜你喜欢

热点阅读