RSS订阅
用户名: 密码:

动态网页编程中优化数据库注意的十大原则

2007-09-10 05:04:13 作者:探索者 来源: 浏览次数:0 网友评论 0

与没有数据库的网站相比,数据库的存取会降低你的系统性能。但是大多数情况下,网站和数据库有密不可分的关系,正是数据库给站点提供了大容量、多样性、个性化等特色,并实现了很多特殊的功能。

1?不要忘记给数据库做索引。合理的索引能立即显著地提高数据库整个系统的性能。可以参考有关SQL性能调试书 籍,学会根据所需查询方式合理制作索引和根据索引方式改进查询语句。

2?在适当的情况下,尽可能的用存储过程而不是SQL查询,因为前者已经过了预编译,运行速度更快。同时让数据库仅仅返回你所需要的那些数据,而不是返回大量数据再让A 程序过滤。总之要充分和有效地发挥数据库的强大功能,让它按照我们的要求反馈给我们最合适和最精练的信息。

3?在可能情况下我们应该使用SQL Server而不是Acce 。因为Acce 仅仅是基于文件的数据库,多用户性能很差。数据库连接尽量使用OLEDB和非D 方式,因为这种连接方式有更好的并发性能。

4?避免使用DAO(Data Acce  Objects)和RDO(Remote Data Objects)数据源,因为他们主要应用在单用户的处理系统里,ADO(ActiveX Data Objects)才是为Web应用设计的。

5?建立记录集Rescordset的时候要清晰合理地设置数据游标(cursort)和锁定方式(locktype)。因为在不同的方式下 A 会以不同的方式操纵数据库,其执行速度也有很大区别,尤其在大数据量的时候。如果你只想遍历数据,那么默认游标(前进、只读)会带来最好的性能。

6?当你引用ADO变量的时候,会消耗较多的CPU周期。因此,如果在一个A 页面中多次引用数据库的字段变量,一个较好的方式是将字段值先放入本地变量,然后可以直接调用本地变量来计算和显示数据。

7?缓存ADO Co ection对象也许不是一个好主意。如果一个连接(Co ection)对象被存储在A lication对象中而被所有A 页面使用,那么所有页面就会争着使用这个连接。但是如果连接对象被存储在Se ion对象中,就要为每个用户创建一个数据库连接,这就减小了连接池的作用,并且增大了Web服务器和数据库服务器的压力。可以用在每个使用ADO的A 页创建和释放ADO对象来替代缓存数据库连接。因为IIS内建了数据库连接池,所以这种方法非常有效,缺点是每个A 页面都需要进行一些创建和释放操作。

8?A 最强大和主要的用途之一就是对数据库进行操作,在数据库操作中我们要注意:不要任意使用&ldquo ELECT * ......” 形式的SQL查询语句。应该尽量检索你所需要的那些字段。比如一个表中有10个字段,但是你只会用到其中的一个字段(name),就该使用&ldquo elect name from mytable”,而不是用&ldquo elect * from mytable”。在字段数比较少的时候,两者的区别可能并不明显,但是当一个表中拥有几十个字段的时候,数据库会多检索很多你并不需要的数据。在这种情况下你最好不要为了节省打字时间或者害怕查找对应字段名称的麻烦,而要老老实实地使用&ldquo elect id,name,age... from mytable”。

9?及时关闭打开的记录集对象以及连接(Co ection)对象。记录集对象和连接对象耗费系统资源相当大,因此它们的可用数量是有限的。如果你打开了太多的记录集对象以及连接对象而最后却没有关闭它们,可能会出现A 程序刚开始的时候运行速度很快,而多运行几遍就越来越慢的现象,甚至导致服务器死机。请使用如下方法进行关闭:

MyRecordSet.closeSet MyRecordSet=Nothing
Set MyCo ection=Nothing   

10 连接数据库

仍然使用ODBC系统或者文件D 来连接数据库,或者使用很快的OLEDB技术来连接。使用后者,当移动Web文件时,不再需要修改配置。

OLEDB位于应用程序与ODBC层之间。在A 页面中,ADO就是位于OLEDB之上的程序。调用ADO时,首先发送给OLEDB,然后再发送给ODBC层。可以直接连接到OLEDB层,这么做后,将提高服务器端的性能。怎么直接连接到OLEDB呢?

如果使用SQLServer 7,使用下面的代码做为连接字符串:

strCo tring = "D ='';DRIVER={SQL SERVER} quot; &am  _
        "UID=myuid WD=mypwd quot; &am  _
        "DATABASE=MyD ERVER=MyServer quot;

最重要的参数就是“DRIVER=”部分。如果你想绕过ODBC而使用OLEDB来访问SQL Server,使用下面的语法:

strCo tring =" rovider=SQLOLEDB.1 a word=mypa word quot; &am  _
        " ersist Security Info=True;User ID=myuid quot; &am  _
        "Initial Catalog=myd ame quot; &am  _
        "Data Source=myserver;Co ect Timeout=15"

为什么这很重要?

现在你可能奇怪为什么学习这种新的连接方法很关键?为什么不使用标准的D 或者系统D 方法?好,根据Wrox在他们的ADO 2.0程序员参考书籍中所做的测试,如果使用OLEDB连接,要比使用D 或者D -le 连接,有以下的性能提高表现:

性能比较:

----------------------------------------------------------------------

SQL                   Acce 
OLEDB D                 OLEDB D 
连接时间: 18 82             连接时间: 62 99
重复1,000个记录的时间: 2900 5400   重复1,000个记录的时间: 100 950

----------------------------------------------------------------------

这个结论在Wrox的ADO 2.0程序员参考发表。时间是以毫秒为单位,重复1,000个记录的时间是以服务器油标的方式计算的。

相关文章

[错误报告] [推荐] [收藏] [打印] [关闭] [返回顶部]

最新图片文章

最新文章


关于本站帮助(?)┊广告服务版权声明业务合作加盟我们网站地图联系我们
Copyright © 2005-2008 www.phpip.com online services. All rights reserved. 陕ICP备05002402号
在线管理员 QQ:271162318 17864997