有关Oracle8数据库的实时性问题?(200分)

B

bcb

Unregistered / Unconfirmed
GUEST, unregistred user!
各位好!
在下正在编写一个数据库软件,采用nt4+oracle8,Memory 128M.可我是初次
接触大型数据库,希望各位高手/赚家在以下几方面提提建议:
1。如何提高程序的实时性(Insert a record per 1 second).
2. 如果达不到要求,使用何方法接近这一目标呢?
3。如何优化数据库性能?

将就这分再提疑问:
Cursor有何用处,能不能将我在cursor中处理过后的数据返回程序,就向
是用Select反回到DbGrid中显示呢?
 
跟踪问题!
 
就你所提的优化问题,完全可以参照有关的数据库优化资料进行。

至于性能的提高和你设计的表的结构,SQL语句等有很大关系。

建议在选择SQL语句或PL-SQL语句时尽可能采用基于服务器一端运行的语句,
尽可能的不让数据经网络传送至客户机上处理后再返回服务器保存,而是把
数据库处理请求发至服务器,由服务器处理,以减少网络占用。

至于Cursor,则是提供编程者顺序处理数据的一种方法。你的要求可以如以下例子来
实现:

Declare C1 Cursor for select * from your_tab for update of bh;

Open C1;

Fecth C1 Into ....;

Update your_tab set Bh = :bh + 1 where current of C1;

Commit;

 
1. 当然可以做到。
2. 无
3. 问题太大, 首先看数据库设计3原则, 然后对数据库索引方式有一定了解,
然后具体问题具体分析。
 
to volan:
我的程序都是在本地运行(既 Server and Client 都在pc机中)。
我曾作过测试,用一般优先机的Thread,每一秒可Insert Record 40-50个左右。
不知当记录总素达到10万级时,还会有次速度吗?
关于Cursor:
你所说的用法我会用,我的意思是指能否在SQL语言不能处理时,能否将Cursor中
取得的数据再处理后返回(不用改变Table或建立Temp Table。如曾经CJ提出的是
否可以用SQL得到前n个满住条件的记录。如Select前10个记录。(在Oracle 使
用Rownum)。 但我曾记得(如果记错请提醒我{:) )如果SQL语句中使用了Group
By or Having 就不能使用RowNum 书如是说:用Cursor取得数据,再自己处理。

To SeaKey:
-->1: 我想你曾经编写过如此与实时性相关的程序,能否将其中的实时参数列出来呢?

-->3: 你能将你曾经使用过的优化技术介绍一点点摸。我对此毫无概念,所以问题
只能提这摸大。 Sorry.
 
bcb: 用oracle, insert一般都不会影响速度.
cursor的方法是可以的, 尤其是再处理大数据量的返回时.

至于优化, 实在是太大, 如果能精通, 可以坐着收钱了:)
 
To cytown:

我也知道Oracle可以实现,Delphi4中也有返回数据Cursor,but how?Can you
tell me?
 
just buy a oracle book, asking questions can not instead of learning!
 
Oracle的书好象只是介绍Cursor的一般用法,我还没找到通过他返回数据集的例子。
是不是很复杂,"Delphi4核心编程技术"上说,Oracle,SQL Server,Sybase都可以
返回数据集,只介绍了后两者的用法,可就是没介绍Oracle的方法,是不是太难了,
如果有谁写一个简单的范例,我可以将全部积分奉上!
 
一样的呀?!
 
建议买一本将SQL的书,学一下游标(cursor)的用法。这在做一些复杂的统计时是必不可少的,即你需要返回大量的数据然后计算后填充到grid中去。
 
具体的就单独问我吧,不过我
一般很忙,恐怕没时间回答
1. 一般情况肯定可以,找一本ORACLE的性能调整的书看看
2. 一般应该不用返回大量数据,你的具体情况?
 
谢谢各位的帮助,我的程序已经接近完成。但我还是有以下疑问:
Oracle的Cursor与Delphi4的ftCursor(TFidldType)是否有一定的联系,ftCursor
又是如何使用的呢?
 
多人接受答案了。
 
顶部