起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: dragonsoft

【结贴】流程监控、待办任务问题**

[复制链接]
发表于 2008-10-29 17:59:44 | 显示全部楼层
还在找解决方案,非常棘手。
请少候,抱歉。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-30 17:09:09 | 显示全部楼层
斑竹,这周能不能搞定啦,我们好几个人轮流接电话了,都是在做解释工作了,用户那边一直催啊
回复 支持 反对

使用道具 举报

发表于 2008-10-30 17:18:49 | 显示全部楼层
楼主,经测试发现:
任务消息表数据量太大,FState、FROrgUrl字段的重复值太多,导致查询时,该字段索引无效,严重影响了查询效率。
对TTaskMessage表按照FState分成7个区后,速度大幅提高,执行22楼的sql语句只需要0.125秒。
下面是分区的语句,请参考(建议先创建表,再拷贝数据,最后创建索引):

create table TT
(
  FGUID          VARCHAR2(32) not null,
  FCLIENTACCOUNT VARCHAR2(64) not null,
  FPARENTGUID    VARCHAR2(32),
  FTASKGUID      VARCHAR2(32),
  FRDEPT         VARCHAR2(64),
  FRPOSITION     VARCHAR2(64),
  FRPERSON       VARCHAR2(64),
  FRORGURL       VARCHAR2(255) not null,
  FRECEIVETIME   DATE,
  FFINISHTIME    DATE,
  FSTATE         VARCHAR2(16) not null,
  FFLAG          VARCHAR2(32),
  FRDEPTNAME     VARCHAR2(200),
  FRPOSITIONNAME VARCHAR2(32),
  FRPERSONNAME   VARCHAR2(32),
  FNOTE          BLOB,
  FROGN          VARCHAR2(32),
  FROGNNAME      VARCHAR2(32),
  ESFIELD01      VARCHAR2(255),
  ESFIELD02      VARCHAR2(255),
  ESFIELD03      VARCHAR2(255),
  ESFIELD04      VARCHAR2(255),
  ESFIELD05      VARCHAR2(255),
  ESFIELD06      VARCHAR2(255),
  ECFIELD07      VARCHAR2(2048),
  ECFIELD08      VARCHAR2(2048),
  ENFIELD17      NUMBER(22,10),
  ENFIELD18      NUMBER(22,10),
  ENFIELD19      NUMBER(22,10),
  ENFIELD20      NUMBER(22,10),
  EDFIELD33      DATE,
  EDFIELD34      DATE,
  EDFIELD35      DATE,
  EDFIELD36      DATE,
  EBFIELD50      BLOB,
  EBFIELD51      BLOB,
  ETFIELD52      BLOB,
  ETFIELD53      BLOB
)
partition by list (FSTATE)
(
  partition P1 values ('tmsSend')
    tablespace DSEZHAJ_SYS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 64K
      minextents 1
      maxextents unlimited
    ),
  partition P2 values ('tmsAborted')
    tablespace DSEZHAJ_SYS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 64K
      minextents 1
      maxextents unlimited
    ),
  partition P3 values ('tmsFinished')
    tablespace DSEZHAJ_SYS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 64K
      minextents 1
      maxextents unlimited
    ),
  partition P4 values ('tmsCanceled')
    tablespace DSEZHAJ_SYS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 64K
      minextents 1
      maxextents unlimited
    ),
  partition P5 values ('tmsReturned')
    tablespace DSEZHAJ_SYS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 64K
      minextents 1
      maxextents unlimited
    ),
  partition P6 values ('tmsWaited')
    tablespace DSEZHAJ_SYS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 64K
      minextents 1
      maxextents unlimited
    ),
  partition P7 values ('tmsProcessing')
    tablespace DSEZHAJ_SYS
    pctfree 10
    initrans 1
    maxtrans 255
    storage
    (
      initial 64K
      minextents 1
      maxextents unlimited
    )
);
-- Create/Recreate indexes
create index TT_FSTATE_FRORGURL on TT (FSTATE)
  tablespace INDEX_SYS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 61M
    minextents 1
    maxextents unlimited
  );
create index TT_I1 on TT (FRDEPT)
  tablespace INDEX_SYS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 72M
    minextents 1
    maxextents unlimited
  );
create index TT_I2 on TT (FRPOSITION)
  tablespace INDEX_SYS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 46M
    minextents 1
    maxextents unlimited
  );
create index TT_I3 on TT (FRPERSON)
  tablespace INDEX_SYS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 48M
    minextents 1
    maxextents unlimited
  );
create index TT_I4 on TT (FRORGURL)
  tablespace INDEX_SYS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TT_I5 on TT (FTASKGUID)
  tablespace INDEX_SYS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
create index TT_I6 on TT (FRDEPT, FRPOSITION, FRPERSON)
  tablespace INDEX_SYS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-30 17:31:15 | 显示全部楼层
斑竹,希望能够把程序改掉
回复 支持 反对

使用道具 举报

发表于 2008-10-30 17:52:18 | 显示全部楼层
楼主,如果修改代码,涉及的面太广(x3平台中凡是与任务有关的部分都有可能涉及到),风险不可控制。

还是采取数据库优化的方案,性价比最高。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-31 15:28:41 | 显示全部楼层
斑竹测试了还是很慢,登陆相对好些,但是只有10个用户登陆就这么慢,要是很多就更慢了,进入流程监控要30多秒,还是从根本上面解决问题吧,分区只是针对查询会比较有效果,而对于还要更新操作就不会那么快了。还是两边都去处理,才能根本上解决问题
回复 支持 反对

使用道具 举报

发表于 2008-10-31 15:46:30 | 显示全部楼层
不会啊,我测试了,速度很快的。
楼主,你直接执行22楼的语句要多少时间呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-10-31 16:19:40 | 显示全部楼层
问题是流程监控的语句不一样啊
回复 支持 反对

使用道具 举报

发表于 2008-10-31 16:38:30 | 显示全部楼层
楼主,把你监控到的语句发来看看吧。

另外,你也可以根据这个sql来优化一下你的任务表、流程表
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-11-4 16:51:59 | 显示全部楼层
处理中
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-28 02:33 , Processed in 0.050802 second(s), 13 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表