我的当前表信息:
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亿,我担心情况会更加严重。所以在这里我希望各位大侠能帮我出出主意,将来这个表要怎么一个规划方法,怎么能同时承受往里插入和用户的查询访问,还有并发的优化。

解决方案 »

  1.   

    分区也分了,索引也有了,貌似优化起来不太好办噢;
    我看你用的是list分区,你看能不能用你的时间字段作为分区字段呢?
    做一个范围(range)分区,然后再建立相应的本地索引(local index)可能会有所提高,600多W数据还不算多;
      

  2.   


    只能按一个查询条件去查。我的意思是梳理好业务逻辑,设计上适当的加点冗余数据,就不需要开发复杂的SQL,十几个亿条数据的表,一样查询很快。
      

  3.   

    你所有的索引都是全局索引(从你的定义语句上看),尝试改成local的,同时在查询时最好带分区查询