对于一个在相当大数量级的记录,如何优化设计表的物理结构?

我的问题是这样的:
每天我的表将增加上亿条记录,如果我将这些记录放在同一个表内是相当不现实的,这些表的记录是用时间来区分的。假设结构如下:
a num , b num , c date
1111 2222 2002-12-17 10:28:30
3333 4444 2002-12-17 11:30:40
... ... ...
我能想到的办法仅仅有:
(1)将表分区,这样对于按时间分区有点难度的,按天分区不太现实,一天的记录就够我受的了。
(2)用多个表,比如:一天的记录放到几个表里的。这样一个月就得一百多个表的。
请各位给点建议!谢谢!(oracle中)

---------------------------------------------------------------

按小时分区,2小时或者3小时,每个区控制在千万记录级别

使用一个表,是没什么问题的

管理和查询也都比较方便

truncate partition
---------------------------------------------------------------

biti_rainy(biti_rainy)说的很好,这么大的数据量应该尽可能地细化分区。按照小时分区当然是可以的,如果你愿意,还可以根据分钟、秒来分区,这在技术上不是问题。参考如下的语句:
SQL> CREATE TABLE QSUN.t_part_test
2 ( a NUMBER,
3 b NUMBER,
4 c DATE)
5 PARTITION BY RANGE (c)
6 ( PARTITION part_1 VALUES LESS THAN (to_date('10/20/2002 10:00','MM/DD/YYYY HH24:MI'))
7 TABLESPACE TS_PART1 NOLOGGING,
8 PARTITION part_2 VALUES LESS THAN (to_date('10/20/2002 12:00','MM/DD/YYYY HH24:MI'))
9 TABLESPACE TS_PART2 NOLOGGING);

使用alter table truncate partitiion 来删除分区也非常方便。

Published At
Categories with 数据库类
comments powered by Disqus