在ISAPI中表的问题...(50分)

  • 主题发起人 主题发起人 3h
  • 开始时间 开始时间
3

3h

Unregistered / Unconfirmed
GUEST, unregistred user!
假设我想建一个象大富翁一样的论坛...是假设...
为了让这个论坛更高效、稳定,我当然要想尽一切方法。
我想用ISAPI写这个论坛的核心部分。如显示全部待答问题我用UnAnswer.dll,

在此DLL中,我当然需要用到Query将未答的问题进行筛选。
我先关闭了此Query,然后设置了它的SQL语句,Open,就能用了。
不过实际的使用中,每一个进程调用此DLL都要进行一次Close,Open,
如果这个库很大——象大富翁的库一样,BDE的初始化将很花时间,慢。

所以我在DLL装入之后Close之前进行一次判别,如果Active则不再进行
Close, SQL, Open,直接进行查询,由于省了这个环节,只在第一次
装入时很慢,其余的都很快。
不过它也带来了一个很严重的问题,就是如果另外的用户发了新的贴子,
那这个Query不会知道......不是吗?它根本没有接到通知。
怎么办?重新初始化一次吗?太慢了。

请教。
 
我的经验是: 动态创建query,sql,open,然后free.

总觉得你的方法有问题.
 
其实慢的不是query, 而是database.connect, 所以, 可以建立一个总的database
然后每个线程建立一个query, open/close/free就可以了.
 
其实最好的方法应该是在web server端设置一个数据缓冲池,由中间件程序负责
此缓冲池和数据库之间的数据一致性。
不过,如果查询的条件复杂,查询结果太多,维护和和命中难度较大
另外,用一个database session,并且维持connected状态,的确可以节省
bde initialize的时间,但是,多用户的同时访问请求需要排队等待
不知道用户调用dll时会不会自动起一个新的session
 
如果是一个静态的数据库,象大富翁的离线库,那么很容易,因为不用考虑数据的更新。
但是动态的论坛则不然。

cytown 所说的“总库”是什么意思?如何建立?
难道这个DLL可以使用其它DLL的DataBase?

cAkk,动态与否我觉得不是问题。主要是解决这个问题,正如cytown说的,慢的原因
在于连接。我也觉得应该如此。

tlaolao,如果一个服务器带若干台客户机,如何考虑、设置、安装池?

现在的问题还是一个,多个客户同时访问这台服务器,可能有多个用户同时发出查询
请求或者增加新贴子。看来冲突是不可避免,主要是如何处理好先后的关系。

还有,Query的SQL可能要经常变动,例如我们在大富翁中查看这张贴跟那张贴,服务
器的Query的SQL语句可能要变两次。既然会变当然免不了Close & Open吧?这一来
就慢了。How can I do?

这张贴子的主要问题就是这个。

 
同时添加数据并不会产生冲突吧?

只有一个正在编辑/读取,而另一个已经将该记录删除,才会发生所谓冲突吧?
我相信你放在网上的数据库,是不会让别人删除数据的.
 
我觉得和数据库产品的选择也有联系。比如,这种Internet上的
后台数据库操作,Oracle就比mSQL慢。建议你可以使用一些功能
相对简单的数据库产品。不一定追求某些大型数据库。

程序中的方法就那些,再改进也不会有多大提高。
 
NO NO,CAKK误会了我的意思了,我是想说,如果一个用户新添了记录,原来的Query
会不知道的!怎么办?我又不想Close & Open.

> Oracle就比mSQL慢

MS SQL Server真的就那么好?
 
mSQL != MS SQL Server
 
mSQL就是mSQL,一种数据库.
 
在新增一条记录之前用不用先对数据库实行锁定,等完成之后再解锁?
我看这样才不会冲突吧?!
 
嘿嘿,你用QRY当然慢了,你把所有的东西都做成PROCEDURE,什么都搞定了
(我可做过测试的 ^_-)


 
不好意思,太久了。一直上不来。
 
后退
顶部