请教一个关于ASP访问数据库时的速度问题?

inanition 2001-07-28 11:03:27
加精
我现在写一个社区网站,其中将用到大量的数据库访问,请问如何才能达到最高效率。
...全文
129 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
乱码 2001-07-30
neweb(永不言败) 说得很清楚很全面了
散分吧
回复
tripofdream 2001-07-30
neweb(永不言败)已经说了很多,就不再多说了,补充一点,在使用SQL SERVER时,我们常常会发现SQL SERVER占用了上百M的内存,数据查询变得十分缓慢,重启后就变得很快,造成这种情况的原因通常是使用connection没有及时释放,占用的资源越来越多,甚至导致假死机.
如果记录很多(比如有几十万条以上),而且访问量很大的情况下,就要使用分布式SQL SERVER并行处理了.
回复
hp1200 2001-07-30
up
回复
neweb 2001-07-29
Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=xxx;Data Source=127.0.0.1

区别在于provider 和 driver吧,有时间自己测试一下各种连接方式
回复
inanition 2001-07-29
To neweb:
首先谢谢您的不吝指教,我真的受益非浅。
但关于WEB服务器响应数据库访问这方面我还是不太明白,可否讲解一二,或着介绍我要看哪方面的书籍或资料都可以。
回复
feigmin 2001-07-29
请问:neweb!
我还有一点不明白,
Set conn = Server.CreateObject("ADODB.Connection")
DBPath="driver={SQL Server};server=name;uid=username;pwd=password;database=dataname"
conn.Open DBPath
这样建立的是DSN连接吧?怎么用OLEDB连接数据库?能写一下代码吗?
谢谢!
回复
neweb 2001-07-28
这个问题有点大,我针对 sql server 说几点:
1. 用oledb连接而不用DSN,
2. 对于复杂的查询并且参数不多的情况,请用存储过程,
3. 利用好视图、触发器
回复
xukey 2001-07-28
http://www.csdn.net/develop/library/asp/use/8536.shtm
回复
neweb 2001-07-28
1. OLEDB处于ODBC层和应用之间。对于ASP页面来说,ADO是OLEDB上的一种“应用”。ADO调用首先发送给OLEDB,然后才被发送给ODBC层。如果直接连接到OLEDB层,性能当然会有所提升。Wrox在ADO 2.0 Programmer's Reference这本书中的测试结果:
项目 OLEDB DSN
连接时间: 18 82
迭代1000个记录: 2900 5400
2. 一般来说,存储过程比嵌入式SQL语句性能要好,越复杂的查询优势越明显,如果逻辑简单参数又多,就没必要写存储过程了,嘿嘿。

3. 强烈反对“用application("cnCommon")保存connection”,这样将放弃数据库连接池的好处,用户多的时候大家都在争抢application("cnCommon")这一个连接,而浪费了数据库的并发性能,建议使用包含文件建立数据库连接。
4. 数据库连接在用的时候才打开,用完立即关闭(数据库不会真正地关闭连接,而会在连接池中放一段时间)。
5. >>要在许多的地方访问数据库
是否数据库结构还有待完善?或者能否尽量用一条或一个存储过程代替多次查询?
6. 优化数据库表结构,减少冗余及重复数据,必要时可将一个表拆为几个表。
7. 仔细地建立索引。
8. 如果并不需要所有的列,不要动辄select * from tb, 而是 select xx,xx,xx from tb
9. 如果要重复使用记录集中的某字段,请将该字段值放如变量中。

一口气写了不少,望大吓们指正。
回复
feigmin 2001-07-28
难道没人知道??
请问版主,你知道吗??
回复
feigmin 2001-07-28
另外,我听人说,这个论坛就是SQL数据库,这么多人访问速度还是很快,但我的论坛(http://www.ehang.com.cn/bbs)就不行了,现在才三万条记录就比较慢了,而却很不稳定.各位大侠,探讨探讨吧!
回复
feigmin 2001-07-28
我也正遇到这个问题,兄弟,能否告知QQ,咋们俩先探讨探讨(7767570)!!

那位高手能帮帮忙啊!!兄弟在此先谢过!
回复
inanition 2001-07-28
我想详细描述一下我的问题:
我因为要在许多的地方访问数据库,所以我曾想在application_onstart时建一个connection,打开它,用application("cnCommon")保存起来,然后在其它地方要用的时候再调用,我不知道这种方法是不是最好,或者说行不行,有没有更好的。
而我现在因为是用SQL Server,正如neweb所说,我想尽量使用SQL Sever提供的各种机制来加快速度,但好像connection对像的execute方法无法执行带parameter的storedprocedure,所以我只得用command,但command究竟是在什么时候建立数据库连接呢?我不太清楚,我用如下语名建立command:
set command = server.createobject("adodb.command")
command.activeconnection = strconn '连接database的string,并非一个connection object.
这样建立一个command之后,它是不是在每次execute的时候才建立数据库连接呢,这样岂不是每次执行一次都建立一次连接,太慢了。
另外还想问一下neweb:
1.为什么用oledb比用dsn要快?
2.参数多的storedprocedure是否比sql string速度更慢?
烦请多讲述一些原理,谢谢。
回复
ketao_78 2001-07-28
请具体点!
回复
相关推荐
发帖
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
帖子事件
创建了帖子
2001-07-28 11:03
社区公告
暂无公告