前言
在實際項目中,隨著項目的運行,數(shù)據(jù)量會越來越大,勢必會影響到現(xiàn)有項目的性能以及體驗。數(shù)據(jù)庫的壓力也隨之增大。同時歷史數(shù)據(jù)又不能輕易刪除,需要保留一段時間。所以我們就需要有一種方案來解決這個問題。
解決方案
- 創(chuàng)建與現(xiàn)有數(shù)據(jù)庫表結(jié)構(gòu)相同的歷史分區(qū)表。按照最后更新時間創(chuàng)建分區(qū)。
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分區(qū)
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
)
- 創(chuàng)建定時任務(wù)
- 定時執(zhí)行sql新增分區(qū)。如果分區(qū)已存在則不創(chuàng)建。
- 定時執(zhí)行對原數(shù)據(jù)表中的數(shù)據(jù)做數(shù)據(jù)遷移到分區(qū)表中。并刪除原數(shù)據(jù)表中已遷移的數(shù)據(jù)。
- 如有需要還可定時執(zhí)行刪除歷史數(shù)據(jù)表中已超過最大保存時效 的數(shù)據(jù)分區(qū)。