- 该系统具有
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? –
您可以在编号列上创建自动分区(如果分区不存在,则在新分区中可能会添加新行)。您可以使用模板添加子分区。告诉我你是否对这个解决方案感兴趣。 –