- 該系統具有
dispositives
,基本上由id, type, name
形成。 - 我可能有N
dispositives
。 - 我有一張桌子來存儲所有
dispositives
的log
。這是系統中最大的桌子。 (現計算100公里記錄) log
表中有:id_dispositive, date, status
。
問題
顯然,這是導致性能問題這個龐大的數據。我必須保存至少兩個月登錄值..
今天我有這個dispositives
通過type
:
TYPE COUNT
---------------
1 78956
2 125161
3 13213
4 6112
5 25426
6 12314
7 1241
8 622
我也有一些業務邏輯來養活這個log
表。不管怎麼說,這是我的想法:
我的「解決方案」
我在分區想這log
表。這裏是問題:
- 它值得嗎?
- 我應該按類型分區嗎?
- 我應該按類型和子分區按DATE進行分區嗎?
- 我可以通過編程的方式嗎?
由於這些類型是動態的,用戶可以刪除/插入新的類型。
因此,如果他們刪除某種類型,我必須刪除該類型的所有日誌。 就像他們插入某種類型一樣,我必須註冊(存儲)該類型的所有日誌。
根據編輯弗朗西斯塞拉的答案
我想創建這樣的表:
create table log(
id_dispositive number,
type number,
date_verification date,
status number
)
partition by range (date_verification)
subpartition by list (type)
subpartition TEMPLATE (
SUBPARTITION type1 VALUES (1),
SUBPARTITION type2 VALUES (2),
SUBPARTITION type3 VALUES (3),
SUBPARTITION type4 VALUES (4)
)(
interval (numtoyminterval(1,'MONTH'))(
partition p0816 values less than (to_date('01/09/2016','dd/mm/yyyy'))
));
和我越來越:
ORA-14004: PARTITION keyword not found.
如果不是日誌表的一部分,你將如何按類型進行分區? 如果您按日期訪問,您至少應該嘗試按日期進行分區。使用DBMS_REDEFINITION分區表以最大限度地減少停機時間。 – vercelli
嗯,它有'id_dispositive'。我可以得到它的類型...像分區所有類型X的ID? –
您可以在編號列上創建自動分區(如果分區不存在,則在新分區中可能會添加新行)。您可以使用模板添加子分區。告訴我你是否對這個解決方案感興趣。 –