当前位置: 代码迷 >> Oracle技术 >> oracle大数据量表优化解决思路
  详细解决方案

oracle大数据量表优化解决思路

热度:105   发布时间:2016-04-24 08:36:53.0
oracle大数据量表优化
我的当前表信息:
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亿,我担心情况会更加严重。

所以在这里我希望各位大侠能帮我出出主意,将来这个表要怎么一个规划方法,怎么能同时承受往里插入和用户的查询访问,还有并发的优化。


------解决方案--------------------
其实优化的最关键点就在于业务。。如果数据库的优化已经不可以再优化了。。可以考虑从业务优化。。你访问这个表的业务查询语句是怎样的???这样才好拿方案?
  相关解决方案