前言
在实际项目中,随着项目的运行,数据量会越来越大,势必会影响到现有项目的性能以及体验。数据库的压力也随之增大。同时历史数据又不能轻易删除,需要保留一段时间。所以我们就需要有一种方案来解决这个问题。
解决方案
- 创建与现有数据库表结构相同的历史分区表。按照最后更新时间创建分区。
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
)
- 创建定时任务
- 定时执行sql新增分区。如果分区已存在则不创建。
- 定时执行对原数据表中的数据做数据迁移到分区表中。并删除原数据表中已迁移的数据。
- 如有需要还可定时执行删除历史数据表中已超过最大保存时效 的数据分区。
网友评论