我正在使用的模式有少量客戶,每個客戶都有大量數據。Oracle按分區劃分ID和按DATE分區間隔
在確定分區策略時,我的第一個想法是按customer_id進行分區,然後按區間隔分配一個白天區間。但是,您不能在子分區中使用間隔。
最終,我希望能夠在創建新客戶時自動創建分區,同時還爲客戶數據創建自動日常子分區。所有應用程序查詢均在customer_id級別指定了各種日期範圍。
這個post幾乎是相同的,但答案涉及顛倒分區策略,我仍然想找到一種方法來完成範圍間隔分區。一種方法可能是每月的數據庫工作爲未來的日子/月份創建子分區,但這並不正確。
也許我錯了,我的假設是當前的數據結構將從範圍區間間隔分區策略中受益更多。我們有一些客戶的數據與其他客戶相差甚遠,所以我正在想辦法隔離客戶數據。
有關更好方法的任何想法/建議?
再次感謝您!
UPDATE
這裏是我提出的一個例子:
CREATE TABLE PART_TEST(
CUSTOMER_ID NUMBER,
LAST_MODIFIED_DATE DATE
)
PARTITION BY RANGE (CUSTOMER_ID)
INTERVAL (1)
SUBPARTITION BY RANGE (LAST_MODIFIED_DATE)
SUBPARTITION TEMPLATE
(
SUBPARTITION subpart_1206_min values LESS THAN (TO_DATE('12/2006','MM/YYYY')),
SUBPARTITION subpart_0107 values LESS THAN (TO_DATE('01/2007','MM/YYYY')),
SUBPARTITION subpart_0207 values LESS THAN (TO_DATE('02/2007','MM/YYYY')),
...
...
...
SUBPARTITION subpart_max values LESS THAN (MAXVALUE)
)
(
PARTITION part_1 VALUES LESS THAN (1)
)
我目前在模板290子分區。這似乎正在工作,除了一個障礙。在我的測試中我發現了比CUSTOMER_ID大於3615的任何記錄失敗ORA-14400:插入分區鍵沒有映射到任何分區
根據[邏輯數據庫限制](https://docs.oracle.com/cloud/latest/db121/REFRN/refrn0043.htm#REFRN0043),最多可以有1'048'575個分區。你有290 * 3'615 = 1'048'350。我**真的**推薦你修改你的分區計劃!你在桌面上有多少條記錄?萬億? –
謝謝Wernfried,最終我只期望大概2000個客戶,但在分區策略方面顯然過度。該數據庫是一個多租戶系統,我的目標是找到一種方法將每個客戶數據劃分爲多個部分以幫助提高性能等等,這是我在CUSTOMER_ID級別進行分區的原因,然後是按月/年進行分區劃分的原因。 – rcurrie