Chinaunix

标题: tuxedo游标操作大表慢的问题? [打印本页]

作者: jazy    时间: 2003-02-25 10:49
标题: tuxedo游标操作大表慢的问题?
我在测试时发现,在tuxedo(8.0)中使用游标对数据库(ASE12.0)的大表操作时速度很慢,为排除是数据库本身慢的原因,我写了一个和tuxedo中功能相同的procedure进行直接调用,发现速度很快!

所以有以下疑问:
1、是否在tuxedo中在使用游标操作时需要进行特别的调优?
该如何调优?

2、是否tuxedo中使用游标对大表操作就是慢,没辙?

考虑到这里没有中间件版,只好跑到这发一贴了,希望大家发表点意见!谢谢!!
作者: 一无所有    时间: 2003-02-25 12:34
标题: tuxedo游标操作大表慢的问题?
你的这个问题我们也碰到了。
  但我不知道你所知的大表是指字段数,还是记录数。
  如果是记录数,可以使用分页的办法来处理。
作者: jazy    时间: 2003-02-25 18:28
标题: tuxedo游标操作大表慢的问题?
比如我要同时从两个表中取10条符合条件的纪录,其中一个表中每天只有不到5万的纪录,另一个表中则有上千万纪录。两个表的结构基本相同,但是游标在对大表open时非常的慢,这点已经单步跟踪出来了!,但是其实这个表是有索引的,如果直接在存储过程中进行游标操作,几乎在1秒内就有结果,但在tuxedo中却要数十秒!

我这里所说的大表是指纪录数,而非字段!
你所说的分页是什么概念,是在数据库级吗?还是在tuxedo中处理?

如果是在数据库级,就没什么意义了,因为数据库本身性能很好啊!但对于tuxedo来讲却那么慢!
作者: 一无所有    时间: 2003-02-26 13:07
标题: tuxedo游标操作大表慢的问题?
我想你指定的数据一般是做查询,显示用,
  如果是做统计用,你完全可以在存储过程里处理后再提取。
  如果是做查询用,我所指的分页就是在tuxedo处理,
  每次例如只提取50条数据,
  向下翻页显示的时候,再取下面的50条,
  你可以尝试用快照实现。
作者: jazy    时间: 2003-02-26 14:08
标题: tuxedo游标操作大表慢的问题?
现在的问题是如何在服务端快速的获取到客户端需要的数据!
不使用游标行吗?
作者: 一无所有    时间: 2003-02-26 19:54
标题: tuxedo游标操作大表慢的问题?
客户端需要的是什么样的数据?
  可否对原数据和目标数据进行一下描述?
作者: jazy    时间: 2003-02-26 22:43
标题: tuxedo游标操作大表慢的问题?
其实,客户端需要的是10条以内的缴费纪录,每条也就是3个字段!

在服务端通过游标从数据库获取按查询条件得到的数据,然后进行拼串返回给客户端。
作者: 一无所有    时间: 2003-02-27 18:47
标题: tuxedo游标操作大表慢的问题?
如果是这样你就完全没有必要用游标了,
  如果客户那边的数据库服务器不是太差,
  你可以把所有的动作都放到存储过程里,
  然后从前台解析字符串。
作者: jazy    时间: 2003-02-28 14:03
标题: tuxedo游标操作大表慢的问题?
是啊,我现在也只能这样选择了,因为目前还没有任何解释为什么在tuxedo中使用游标会那么慢了!但是通过存储过程返回查询结果集的方式不是很灵活,而且对于大量数据集就可能不适用了,编程上麻烦多了!
作者: 一无所有    时间: 2003-02-28 17:04
标题: tuxedo游标操作大表慢的问题?
一般情况下,在一次需要200条以上数据时,我不会用Tuxedo的游标,
  那样做简直是磨练人的耐心。
  我们现在也只有这样了。
  我不知道你们那边的具体情况,
  我们这边已经有了一套比较成熟的字符处理包函数,
  所以这样处理对我们而言是比较方便的。
  如果是大数据的查询,
  我以为一般是发生在数据比较集中的几个地方,
  用C/S算了。
作者: jazy    时间: 2003-02-28 17:07
标题: tuxedo游标操作大表慢的问题?
其实,目前我们查询的要求只是播放给用户10条以内的纪录,所以才会用三层方式!但是我在处理结果时遇到了些问题,不知道你能否帮忙看看!
在c/c++中我有一贴关于这个问题!
作者: 无双    时间: 2003-03-06 18:30
标题: tuxedo游标操作大表慢的问题?
这样的文章也不加精华
看来这里的版主要求也太严格了
作者: 一无所有    时间: 2003-03-06 23:11
标题: tuxedo游标操作大表慢的问题?
我觉得我们还没有真正解决问题!
  加入精华,怕误导别人!
作者: jazy    时间: 2003-03-07 03:00
标题: tuxedo游标操作大表慢的问题?
问题已经暂时解决,但却走的是不同的路@
作者: lucky_han    时间: 2006-01-06 20:12
good
作者: zhhui2000    时间: 2006-01-13 09:48
能不能把相应表的索引及ESQL/C相关语句、存储过程的脚本贴出来。
作者: adoyen    时间: 2006-02-24 22:09
标题: 用临时表解决这个问题
楼主是在一张大数据量的表中取出部分数据,可以使用临时表处理:
1、现将符合条件的数据选入临时表
2、在临时表上使用游标

我做过试验,从300万数据的表中检索30条数据使用游标需要7分钟,改用临时表只需要2秒
作者: adoyen    时间: 2006-02-24 22:11
标题: 请问版主?
如何才能加精?

是否需要提供示例代码?
作者: flyhu    时间: 2006-11-12 20:27
如果用Oracle 得Pro*c,那么建议你用大结构数组...充分利用内存..




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2