oracle大数据量表优化

nanairong 2011-06-28 08:43:37
我的当前表信息:
create table CARDB.CAR_ALL_INFO
(
CAR_PASS_ID VARCHAR2(30) not null,
CAR_NO VARCHAR2(16),
PASS_TIME VARCHAR2(50),
CROSS_ID VARCHAR2(16),
ROAD_ID VARCHAR2(12),
CAR_PATH_ID VARCHAR2(4),
SPEED NUMBER(18,2),
PLATECOLOR VARCHAR2(30),
CAR_PIC_FILENAME1 VARCHAR2(300),
CAR_PIC_FILENAME2 VARCHAR2(300),
CAR_VIDEO_FILENAME VARCHAR2(300),
ABSOLE_SHOW NUMBER(22),
CAR_TYPE VARCHAR2(4),
MATCHED NUMBER(22),
OLD_PIC_FILENAME1 VARCHAR2(300),
OLD_PIC_FILENAME2 VARCHAR2(300),
OLD_VIDEO_FILENAME VARCHAR2(300),
V_MONTH VARCHAR2(2),
CLIENT_ID VARCHAR2(10),
WZXW VARCHAR2(4)
)
partition by list (V_MONTH)
(
partition CAR_ALL_INFO01 values ('01')
tablespace epdbbp01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO02 values ('02')
tablespace epdbbp02
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO03 values ('03')
tablespace epdbbp03
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO04 values ('04')
tablespace epdbbp04
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO05 values ('05')
tablespace epdbbp05
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO06 values ('06')
tablespace epdbbp06
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO07 values ('07')
tablespace epdbbp07
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO08 values ('08')
tablespace epdbbp08
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO09 values ('09')
tablespace epdbbp09
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO10 values ('10')
tablespace epdbbp10
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO11 values ('11')
tablespace epdbbp11
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO12 values ('12')
tablespace epdbbp12
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
),
partition CAR_ALL_INFO00 values (default)
tablespace epdbbp01
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
)
)
;
comment on table CARDB.CAR_ALL_INFO
is '监控到的车辆信息表';
comment on column CARDB.CAR_ALL_INFO.CAR_PASS_ID
is '通行ID';
comment on column CARDB.CAR_ALL_INFO.CAR_NO
is '车牌号码';
comment on column CARDB.CAR_ALL_INFO.PASS_TIME
is '通行时间';
comment on column CARDB.CAR_ALL_INFO.CROSS_ID
is '路口标识';
comment on column CARDB.CAR_ALL_INFO.SPEED
is '速度';
comment on column CARDB.CAR_ALL_INFO.PLATECOLOR
is '颜色';
comment on column CARDB.CAR_ALL_INFO.CAR_PIC_FILENAME1
is '图片一';
comment on column CARDB.CAR_ALL_INFO.ABSOLE_SHOW
is '是否显示 1=是,0=否';
comment on column CARDB.CAR_ALL_INFO.CAR_TYPE
is '车辆类型 表示轿车/大车';
comment on column CARDB.CAR_ALL_INFO.MATCHED
is '是否匹配上 1=是,0=否';
comment on column CARDB.CAR_ALL_INFO.OLD_PIC_FILENAME1
is '原始路径名';
comment on column CARDB.CAR_ALL_INFO.OLD_PIC_FILENAME2
is '原始路径名';
comment on column CARDB.CAR_ALL_INFO.OLD_VIDEO_FILENAME
is '原始路径名';
comment on column CARDB.CAR_ALL_INFO.V_MONTH
is '分区字段';
comment on column CARDB.CAR_ALL_INFO.CLIENT_ID
is '工控机编号';
comment on column CARDB.CAR_ALL_INFO.WZXW
is '违法行为';
alter table CARDB.CAR_ALL_INFO
add constraint P_INX_CAR_ALL_INFO primary key (CAR_PASS_ID)
using index
tablespace epdba01
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
);
create index CARDB.INDEX1_CAR_ALL_INFO on CARDB.CAR_ALL_INFO (PASS_TIME DESC)
tablespace epdbb01
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
);
create index CARDB.INDEX2_CAR_ALL_INFO on CARDB.CAR_ALL_INFO (CAR_NO, PASS_TIME DESC)
tablespace epdbc01
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
);
create index CARDB.INDEX3_CAR_ALL_INFO on CARDB.CAR_ALL_INFO (CROSS_ID, ROAD_ID, PASS_TIME DESC)
tablespace epdbd01
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 80K
minextents 1
maxextents unlimited
);

此表是一个分区表,根据12个月将数据放在不同表空间中。根据一些常用的查询做了一些索引。
现在我想对于此表再做更深层次的优化。

我的数据库是装在AIX系统下的,在AIX系统下挂了2T的存储专门用来存放数据。
我这个表里的数据是不断在往里插入的,每时每秒都在往里面插入数据(通过存储过程),然后用户还要调用这个表里的数据。现在表里已经存放了6000多万条的数据了,我预算了一下,这个表里将来会保存最少3亿条数据左右,因为要保存3年的数据。
现在的情况就已经不容乐观了,随着用户的访问量增加,随着表里的数量增加,现在情况已经是不容乐观了。查询一个礼拜的信息(分页查询),大约需要1分10秒左右。如果将来数据到达3亿,我担心情况会更加严重。

所以在这里我希望各位大侠能帮我出出主意,将来这个表要怎么一个规划方法,怎么能同时承受往里插入和用户的查询访问,还有并发的优化。
...全文
579 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
developer2002 2011-07-12
  • 打赏
  • 举报
回复
你所有的索引都是全局索引(从你的定义语句上看),尝试改成local的,同时在查询时最好带分区查询
iqlife 2011-07-01
  • 打赏
  • 举报
回复
分区表就满足你的条件了,至于你说的慢,可以查看执行计划到底是哪里导致了你的查询速度慢
Well 2011-07-01
  • 打赏
  • 举报
回复
其实优化的最关键点就在于业务。。如果数据库的优化已经不可以再优化了。。可以考虑从业务优化。。你访问这个表的业务查询语句是怎样的???这样才好拿方案?
naturemickey 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huertaowyx 的回复:]

引用 2 楼 naturemickey 的回复:

不要写复杂的业务逻辑就行了。

主要是从业务上去优化。

我们公司有一个表,每两天的数据量就超过1亿,要保存一个月的数据,但我们只允许用外键去查,速度还可以。

只允许外键查询,什么意思?只能查一个外键的数据?
[/Quote]

只能按一个查询条件去查。

我的意思是梳理好业务逻辑,设计上适当的加点冗余数据,就不需要开发复杂的SQL,十几个亿条数据的表,一样查询很快。
huertaowyx 2011-06-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 naturemickey 的回复:]

不要写复杂的业务逻辑就行了。

主要是从业务上去优化。

我们公司有一个表,每两天的数据量就超过1亿,要保存一个月的数据,但我们只允许用外键去查,速度还可以。
[/Quote]
只允许外键查询,什么意思?只能查一个外键的数据?
wolianlin1987 2011-06-30
  • 打赏
  • 举报
回复
是否可以规定7天前的数据转入历史表?
Rotel-刘志东 2011-06-29
  • 打赏
  • 举报
回复
分区划定时间段界限
hanzs 2011-06-29
  • 打赏
  • 举报
回复
可以再按年分开表存放

业务上可以限制查询时间跨度不要超过1个月、3个月、半年或一年的
naturemickey 2011-06-29
  • 打赏
  • 举报
回复
不要写复杂的业务逻辑就行了。

主要是从业务上去优化。

我们公司有一个表,每两天的数据量就超过1亿,要保存一个月的数据,但我们只允许用外键去查,速度还可以。
灰哥 2011-06-28
  • 打赏
  • 举报
回复
分区也分了,索引也有了,貌似优化起来不太好办噢;
我看你用的是list分区,你看能不能用你的时间字段作为分区字段呢?
做一个范围(range)分区,然后再建立相应的本地索引(local index)可能会有所提高,600多W数据还不算多;

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧