最近刚从天津回来,就被老板的老板找去训话了,主要意思就是一个:广东的Sybase系统性能低下,无法满足实用化验收的要求.既然是大老板亲自发话了,就有点麻烦了.
还没吃午饭列,老板就再次提到这个问题,并且说必须配合开发人员找到问题所在,本周必须出报告,指明问题所在.事实上,目前系统的慢,主要反映在我们的系统向数据库中插入数据的时候,无法满足需求,现在的业务,在0,30分这两个时间点上插入的数据很多,大概达到30000条记录左右,而我们的入库操作需要超过15分钟.平均每秒才能入库大约60条记录左右,这对于一个中型的系统,速度上是绝对不够的.而且,整个系统的cpu负载基本上都是在70%左右,基本上没有空闲.
为了解决这个问题,首先我们作了测试,使用Rapid SQL这个工具,向服务器中插入数据,采用批量提交,每100条记录提交一次,根据测试结果,发现每提交1000条记录,需要的时间,不会超过1000ms,也就是每秒可以插入数据1000条左右.
既然如此,我们开始怀疑是client的问题.由于我们的提交的程序是用Delphi 6.0来作的,使用的是Delphi自带的ADO控件来实现的,这个时候,我开始怀疑是ADO的控件出现了问题.
由于我的Sybase的水平不高,只能找我的私家顾问了,在msn上抓到无言(其实每次Sybase的重大问题,俺都是找他的)和他交流了下,他认为可能是Sybase自带的OLEDB Driver出现了问题,或者说是有bug.查了下Sybase官方网站的文档,确实是有类似的bug.下载安装了EBF13644以后,似乎没有太大的改观.为了测试确认问题是在这里,继续找无言,要了个java写的JDBC的代码,并请我们的开发写了个应用,使用batch的方法,发现每秒的插入能提高到700条左右.这样一来就可以肯定问题是出在Delphi的控件上了.
现在的问题是如何去改变这个问题,不过我想既然问题找到了,那么解决问题,这是一个时间问题了.我也将继续关注这个问题.
1 Comment to “delphi 6.0+sybase12.5.2数据插入的问题”
Write a comment
You need tologin.

[...] 上文提到,在sybase中配合我们的开发一起来弄sybase的insert的速度问题,我们将问题定位在客户端. [...]