用VB 6 + Oracle 8.05做的2层系统,要执行一个有4个回滚断点的事务,速度特别慢.其中有要执行insert,update,delete,select语句.  问题(1):   客户端提交SQL语句,SQL语句是在client端,还是server端编译 ?  问题(2):  数据insert,update,delete处理是先下载到client端处理后再提交到server端(这样网络负荷很重,速度当然慢),还是直接在server端处理? (如果是后者用存储过程在server端处理大量数据显然能解决问题).  问题(3):  我的系统慢的主要原因是什么?    问题(3):  怎么解决???

解决方案 »

  1.   

    应该都是在server端处理我估计速度慢和事务没有关系如果你把事务处理去掉,看看速度还慢不慢!
      

  2.   

    我认为可能是这样的:
    1。户端提交SQL语句,是在server端编译
    2。数据insert,update,delete处理是直接提交到server端处理,然后server端再返回数据给客户端。对于这一点,我有90%的保证。因为我在客户那里做过同样的操作,然后我打开服务器,看到了CPU在100%的运行,同时内存在缓慢上升,内存上升的原因我认为是服务器在执行大的SQL语句时需要占用大量的内存做缓冲,然后再将缓冲中的内容返回到客户端。
    3。你的系统慢的主要原因可能是:a)你的cup处理能力有限;b)你的内存空间有限,如果基本内存太小,系统将会频繁的访问硬盘上的虚拟内存空间,这样势必速度会慢一个数量级;c)你的数据库设置是否合理,比如锁的设定是否足够大,为应用程序分配的内存是否过大,tempdb是否太小,数据库的日志是否已经满了  
    4.解决方法:根据问题的所在做相应处理。以上观点不能保证完全正确无误,希望大家来共同探讨。
      

  3.   

    To   cuizm(射天狼), ukyoxh(我来学习) :  刚才 wqhj2000(阿杰)兄 说数据insert,update,delete处理是直接提交到server端处理,那么写存储过程可能就提高不了速度!
      

  4.   

    這個問題應該完全到sql版取問。 存储过程提高不了速度。那要他趕什麼?
      

  5.   

    虽然SQL命令和存储过程的命令都是在服务器端执行,但存储过程是在服务器端预编译的,所以效率要更高些。
      

  6.   

    我想是这样的。但数据条数太多,有87万条,可能要删除一些数据,提高CPU的速度,用存储过程。大家在替我想想其他办法吧!
      

  7.   

    1,优化你的应用,应用中的一个逻辑错误可能导致你的性能下降成千上万倍。而且要根据数据的优化规则来优化。我试过在4个分别为600万条记录的表中关联查询数据,没有优化时要25分钟,优化后第一次10秒搞定,运气好缓存的话,0.1秒搞定。2,大数据量一定要建索引3,设置好你的SGA4,看看你的数据瓶颈是否在I/O上,是则要提高硬盘个数,对表进行分区处理