精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Powerbuilder>>PB中使用注册表技术>>[ 各执己见的讨论 ]>>Re: 再谈游标问题 :)

主题:Re: 再谈游标问题 :)
发信人: ilike()
整理人: edison(1999-10-21 01:45:35), 站内信件
每条fetch语句需要向服务器发送一条命令,也就是需要一个网络对话。
这是肯定的,我不知道Oracle有什么神通可以超越时空限制。
如果你对此感到怀疑,在连接oracle时:
原为:sqlca.dbms = "ORA ......"
改为:sqlca.dbms = "trace ORA....."
这样PB会将每一次向服务器的请求记录在一个文本文件中去。
你自己做一做以下的测试看看我说的对不对。

如果是一个2万条的记录。
使用dw或者是ds,检索过来需要一条select命令。
需要有不超过10次的网络连接。


使用光标,至少需要20002条命令。
open一条。
每条fetch一条,共20000条
close一条。
总计:20002条请求。
需要申请20002次对话。
至少需要不少于4万次的网络连接(fetch一次,取到数据一次,所以是 20000*2)


你注意了,我指的是网络连接,也就是底层的TCP/IP连接,不是与服务器之间的
高层连接。

如果同时有10个用户做同一条操作的话。
           网络连接数    命令数
datawindow <=100 10条命令
cursor >=400000     200020条命令 --- 我不知道什么服务器,什么类型的
网络能坚持住。

冗余之处以及谁的效率高一些,快一些显而易见。
这里我还不和你计算服务器端维护一个cursor所占用的内存以及资源的开销。

这个正是面向记录的数据库不可忍受的弊病之一。
本身关系数据库理论的出现,减少网络流量是其中一个非常重要的需求。

如果你还愿意坚持这一点很好,我也不想和你辨论下去了。

to: csboy
不要以为小批量的数据库很好,因为数据库中的数据是一直往上增长的,小批量
也会变成大批量的。
解决的方法:不到万不得已,不要使用curosr



--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.135.110]
※ 修改:.edison 于 Oct 19 12:36:23 修改本文.[FROM: bbs.szptt.net.cn]

[关闭][返回]