免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2562 | 回复: 4
打印 上一主题 下一主题

该informix数据插入太慢,如何解决 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-01-25 11:10 |只看该作者 |倒序浏览
$declare jzzfsqrb1_cur cursor for       
        select nr[2,17],min(rowid) into $nr2,$rowid from jzzfsh
        where t_name=$t_name and nr[1,1]='1'
        group by nr[2,17]
        order by nr[2,17] desc;
        SQLERR("declare jzzfsqrb1_cur err!!!");

        $open jzzfsqrb1_cur;
        SQLERR("open jzzfsqrb1_cur err!!!");
                       
        for(no=0,j=1;;no++)
        {
                $char bwbz[2],bwbsh[17],sxbz[2],ybwbsh[17],jsrq[9],ywnd[5],pzlx1[2],pzbh[33],
                      zjxz[2],fkmc[63],fkzh[31],fkhh[13],fkym[43],fkhm[63],skmc[63],
                      skzh[31],skhm[63],je[17],tzlx[43],tzmc[63],bzw[11],yt[201],bz[201];
                $double dje=0.00;
                $int ijsrq=0;
               
                memset(bwbz,0, 2);
                memset(bwbsh,0,17);        memset(sxbz,0,2);
                memset(ybwbsh,0,17);        memset(jsrq,0,9);
                memset(ywnd,0,5);        memset(pzlx1,0,2);
                memset(pzbh,0,33);        memset(zjxz,0,2);
                memset(fkmc,0,63);        memset(fkzh,0,31);
                memset(fkhh,0,13);        memset(fkym,0,43);
                memset(fkhm,0,63);        memset(skmc,0,63);
                memset(skzh,0,31);        memset(skhm,0,63);
                memset(je,0,17);        memset(tzlx,0,43);
                memset(tzmc,0,63);        memset(bzw,0,11);
                memset(yt,0,201);        memset(bz,0,201);


                rowid=0;
                memset(nr0,0,1024);
                $fetch jzzfsqrb1_cur;
                               
                if(sqlca.sqlcode==100)
                        break;
                if(sqlca.sqlcode)
                {
                        mesg_show("fetch jzzfsqrb1 err!!!",sqlca.sqlcode);
                        $close jzzfsqrb1_cur;
                        return 1;
                }
         
                $select nr into $nr0 from jzzfsh
                where t_name=$t_name and rowid=$rowid;
                if(sqlca.sqlcode)
                {
                        mesg_show("select nr1 from jzzfsh err!!!",sqlca.sqlcode);
                        $close jzzfsqrb1_cur;
                        return 1;
                }
               
                sscanf(nr0+1,"%16c%1c%16c%8c%4c%1c%32c%1c%62c%30c%12c%42c%62c%62c%30c%62c%16c%42c%60c%10c%200c%150c",bwbsh,sxbz,ybwbsh,jsrq,ywnd,pzlx1,pzbh,zjxz,fkmc,fkzh,fkhh,fkym,fkhm,skmc,skzh,skhm,je,tzlx,tzmc,bzw,yt,bz);
                dje=atof(je)/100.00;
                ijsrq=atoi(jsrq);
                $insert into jzzfsqrb1 values($bwbsh,$sxbz,$ybwbsh,$ijsrq,$ywnd,$pzlx1,$pzbh,$zjxz,$fkmc,$fkzh,$fkhh,$fkym,$fkhm,$skmc,$skzh,$skhm,$dje,$tzlx,$tzmc,$bzw,$yt,$bz,$t_name);
                if(sqlca.sqlcode)
                {
                        mesg_show("insert into jzzfsqrb1 err!!!",sqlca.sqlcode);
                        $close jzzfsqrb1_cur;
                        $close jzzfsqrb1_cur;
                        return 1;
                }
                //子报文
               
                $declare jzzfsqrb2_cur cursor for
                select nr into $nr0 from jzzfsh
                where t_name=$t_name and nr[1,1]='2' and nr[2,17]=$bwbsh;
                if(sqlca.sqlcode)
                {
                        mesg_show("declare jzzfsqrb2_cur select from jzzfsh(no=2) err!!!",sqlca.sqlcode);
                        $close jzzfsqrb2_cur;
                        return 1;
                }
         
                $open jzzfsqrb2_cur;
                if(sqlca.sqlcode)
                {
                        mesg_show("open jzzfsqrb2_cur err!!!",sqlca.sqlcode);
                        $close jzzfsqrb2_cur;
                        return 1;
                }
         
                for(no1=0;;no1++)
                {
                        $char mxbwbsh[17],mxbm[21],qshh[13],qszh[31],qshm[63],qszhmc[63],yskm[9],
                              yskmmc[63],zcjm[43],zcjmmc[63],jsfs[2],zjxzbm[43],zjxzmc[63],yslx[43],
                              yslxmc[63],xzmxbm[43],xzmxmc[63],gkcs[11],ysdwbm[16],ysdwmc[63],
                              mxje[17],mxbzw[11],hkrq[9],tkrq[9],hkpzbh[19],tkpzbh[19],rbbh[20],
                              rblx[2],mxzjxz[2];
                        $double dmxje=0.00;
                        memset(mxbwbsh,0,17);        memset(mxbm,0,21);
                        memset(qshh,0,13);        memset(qszh,0,31);
                        memset(qshm,0,63);        memset(qszhmc,0,63);
                        memset(yskm,0,9);        memset(yskmmc,0,63);
                        memset(zcjm,0,43);        memset(zcjmmc,0,63);
                        memset(jsfs,0,2);        memset(zjxzbm,0,43);
                        memset(zjxzmc,0,63);        memset(yslxmc,0,63);
                        memset(xzmxbm,0,43);        memset(xzmxmc,0,63);
                        memset(gkcs,0,11);        memset(ysdwbm,0,16);
                        memset(ysdwmc,0,63);        memset(mxje,0,17);
                        memset(mxbzw,0,11);        memset(hkrq,0, 9);
                        memset(tkrq, 0, 9);     memset(hkpzbh,0,19);
                        memset(tkpzbh,0,9);        memset(rbbh, 0, 20);
                        memset(rblx,  0,2);        memset(mxzjxz, 0,  2);
                        memset(yslx,0,43);        memset(nr0,0,1024);
                        $fetch jzzfsqrb2_cur;
                                               
                        if(sqlca.sqlcode==100)
                                break;
                        if(sqlca.sqlcode)
                        {
                                mesg_show("fetch jzzfsqrb2_cur err!!!",sqlca.sqlcode);
                                $close jzzfsqrb1_cur;
                                $close jzzfsqrb2_cur;
                                return 1;
                        }
         
                        sscanf(nr0+1,"%16c%20c%12c%30c%62c%62c%8c%62c%42c%62c%1c%42c%62c%42c%62c%42c%62c%10c%15c%62c%16c%10c%8c%8c%18c%18c%19c%1c%1c",mxbwbsh,mxbm,qshh,qszh,qshm,qszhmc,yskm,yskmmc,zcjm,zcjmmc,jsfs,zjxzbm,zjxzmc,yslx,yslxmc,xzmxbm,xzmxmc,gkcs,ysdwbm,ysdwmc,mxje,mxbzw,hkrq,tkrq,hkpzbh,tkpzbh,rbbh,rblx,mxzjxz);
                        dmxje=atof(mxje)/100.00;
                        $insert into jzzfsqrb2 values($mxbwbsh,$mxbm,$qshh,$qszh,$qshm,$qszhmc,$yskm,$yskmmc,$zcjm,$zcjmmc,$jsfs,$zjxzbm,$zjxzmc,$yslx,$yslxmc,$xzmxbm,$xzmxmc,$gkcs,$ysdwbm,$ysdwmc,$dmxje,$mxbzw,$hkrq,$tkrq,$hkpzbh,$tkpzbh,$rbbh,$rblx,$mxzjxz,$t_name);
                        if(sqlca.sqlcode)
                        {
                                mesg_show("insert into jzzfsqrb2 出错!!!",sqlca.sqlcode);
                                $close jzzfpzqd_cur;
                                $close jzzfpzqd1_cur;
                                return 1;
                        }
                }
                $close jzzfpzqd2_cur;
        }
        $close jzzfsqrb1_cur;

论坛徽章:
0
2 [报告]
发表于 2006-01-25 11:19 |只看该作者
一共也只有998条

论坛徽章:
0
3 [报告]
发表于 2006-01-25 14:30 |只看该作者
改insert 语句为 insert cursor 来处理可以提高效率。

论坛徽章:
0
4 [报告]
发表于 2006-01-25 20:52 |只看该作者

回复 3楼 wenlq 的帖子

wenly gave out the excellent suggestion. Additional for improving the performance of bulk insert/update tips:
1.  increase the physical log buffers
2. change log mode to buffered, increase logical log buffers
3. increase LRU_MAXDIRTY and LRU_MINDIRTY, increase the check point interval, to incease the "chunk wirte" instead of LRU wirte.
4. drop index before the operation, re-create the index after the operation
5. if it is possible:-
     a. drop all index on the table,
     b. alter table tabname type ( raw )
     c.  load
     d. alter table tabname type ( standard )
     e. re-create index
     f.  update statistics

论坛徽章:
0
5 [报告]
发表于 2006-01-27 20:57 |只看该作者
建议你先将所涉及的数据放入临时表,然后建立有效索引,避免使用嵌套循环,尽量避免使用游标
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP