Sql Oracle—如何最好地使用条件子句实现分区
我们的系统有许多需要分区以支持数据维护的表。让我们用一张桌子来简化问题。如果表中的数据达到100GB,则OLTP系统开始减速。我们建议客户将数据从OLTP系统移动到OLAP系统。我们使用按年或按月分区(基于数据插入率)来促进这一移动 以下是表定义的示例:Sql Oracle—如何最好地使用条件子句实现分区,sql,oracle,database-design,partitioning,Sql,Oracle,Database Design,Partitioning,我们的系统有许多需要分区以支持数据维护的表。让我们用一张桌子来简化问题。如果表中的数据达到100GB,则OLTP系统开始减速。我们建议客户将数据从OLTP系统移动到OLAP系统。我们使用按年或按月分区(基于数据插入率)来促进这一移动 以下是表定义的示例: create table myPartionedTable ( object_id number , object_type varchar2(18), RETIREDTIMESTAMP timestam
create table myPartionedTable
(
object_id number ,
object_type varchar2(18),
RETIREDTIMESTAMP timestamp
)
partition by range (RETIREDTIMESTAMP)
(
partition WM_2010 values less than(TO_DATE('01/01/2011','MM/DD/YYYY')),
partition WM_2011 values less than(TO_DATE('01/01/2012','MM/DD/YYYY')),
partition WM_2012 values less than(TO_DATE('01/01/2013','MM/DD/YYYY')),
partition WM_2013 values less than(TO_DATE('01/01/2014','MM/DD/YYYY')),
partition WM_2014 values less than(TO_DATE('01/01/2015','MM/DD/YYYY')),
partition WM_ACTIVE values less than(MAXVALUE)
)
tablespace MYDATE;
重要的一点是,数据需要保留在WM_活动分区中,直到数据被视为失效。一旦失效,数据将移动到适当的分区,然后有资格从OLTP移出分区并进入OLAP
这是一个好方法吗?是否有更好的方法来管理此需求列表?间隔分区可能会有所帮助。Oracle可以根据需要自动创建分区 可能不需要担心活动分区和非活动分区,因为可以很容易地为所有分区使用最小范围
create table myPartionedTable
(
object_id number ,
object_type varchar2(18),
RETIREDTIMESTAMP timestamp
)
partition by range (RETIREDTIMESTAMP) INTERVAL(NUMTOYMINTERVAL(1, 'MONTH'))
(
--You still need to specify the lowest possible partition.
partition WM_2010 values less than(date '2011-01-01')
);
你用什么版本?分区选项在每个版本中都有很大的变化。11g,我们同时使用10g和11g,但将全部迁移到11g。