小弟有一些实时数据(大约每秒有几条记录)要存储到数据库中,在delphi中使用了aodquery进行的插入记录操作,可是应用程序进程和sqlserver进程占用cpu率一直为100%,怎样改善?
望高手指教,谢谢!

解决方案 »

  1.   

    ADOQuery.Append
    ADoQuery.Post不会占有那么多的,可能是你的循环的问题。
      

  2.   

    不要实时入库,时间间隔长一点,比如半分钟。不要用Query先open再post,这样效率不高,直接用SQL语句或者用存储过程,后者速度最快
      

  3.   

    碰见新问题了:
    time1为datetime类型字段,使用参数插入报错:“没有执行可选特性”  
      adoq.sql.add(insert into table1(time1)  values(:time1)');
      adoq.parameters[0].value := now;
      adoq.execSql;但是使用append就不报错:
      adoq.sql.add('select * from table1');
      adoq.open;
      adoq.append;
      adoq.fields[0].values := now;
      adoq.post;为何?
      

  4.   

    为什么不试试这样?
    AdoQuery1.Close;
    adoquery1.sql.add('insert into mytab2(dt)  values('''+DateTimeTostr(Date)+''')');
      adoquery1.execSql;
      

  5.   

    1、如果你使用了Timer,尽量不要用它,可以改用进程的方式
    2、数据更新方式改为批量更新的方式
      

  6.   

    先放到内存里,过一段时间一起提交,还有,你的系统肯定有别的线程在运行,光这个用不了那么多内存和CPU