选择显示字体大小

在asp中优化数据库处理

     asp是一个web服务器端的开发环境,它提供了一种简单易学的脚本(vbscriptjscript),并带有许多内置的对象,从而提供了一条简捷的编程之路。更为重要的是,asp中提供了ado对象,让程序员可以轻松操作各种数据库,从而可以产生和运行动态的、交互的web服务应用程序。
  
  目前,国内很多电子商务站点都采用了asp技术来与数据库交互,为用户提供各类服务。
  
  由于电子商务站点的大部分信息都存放在数据库中,要提高web的响应速度、建立高性能的电子商务站点,很大一部分取决于asp数据库之间的处理性能,本文将具体介绍一些优化数据库处理的方法。
  
  使用connectionpool机制
  
  在数据库处理中,资源花销最大的是建立数据库连接,而且用户还会有一个较长的连接等待时间。若每一个用户访问时,都重新建立连接,不仅用户要长时间等待,而且系统有可能会由于资源消耗过大而停止响应。如果能够重用以前建立的数据库连接,而不是每次访问时都重新建立连接,则可以很好地解决这些问题,从而提高整个系统的性能。在iis+asp处理体系中,采用了connectionpool机制来保证这一点。
   
  
  connectionpool的原理是:iis+asp体系中维持了一个连接缓冲池,建立好的数据库连接在asp程序中的断开都是逻辑断开,而实际的物理连接被存储在池中并被加以维护。这样,当下一个用户访问时,直接从连接缓冲池中取得一个数据库连接,而不需重新连接数据库,因此,可以大大地提高系统的响应速度。
   
  
  为了正确使用connectionpool机制,必须注意以下几点:
  
  1.在mdac2.0以前的版本中,必须经过数据库驱动程序的配置才能使用connectionpool;在以后的版本中(比如mdac2.1),缺省是使用connectionpool机制。具体配置情况可以参见微软公司的站点(http://www.microsoft.com/data/)。
   
  
  顺便提一句,在使用oracle数据库时,最好使用微软提供的驱动程序。
  
  2.每次数据库连接串参数必须相同,否则会被认为是不同的连接而重新去连接数据库,而不是使用缓冲池中的连接。最好的做法是将连接串存储在application变量中,所有的程序在建立连接时使用application变量的值。
   
  
  3.为了更好地使用和维护连接缓冲池,建议在程序中使用以下的方法对数据库连接进行操作,因为隐式使用数据库连接时不能利用缓冲池的机制:
   
  
  显式创建连接对象: set conn=server.createobject(“adodb.connection”)
  建立数据库连接:conn.open application(“connection_string”)
  显式关闭连接对象:conn.close
  
  利用直接的ole db驱动程序
  在asp中,通过ado可以使用两种方式连接数据库,一种是传统的odbc方式,一种是ole db方式。由于ado是建立在oledb技术上的,为了支持odbc,必须建立相应的ole db 到odbc的调用转换(如ms oledb provider for odbc)。而使用直接的oledb方式(如ms oledb provider for sql,oracle),则不需转换,从而提高处理速度,同时,还能利用ole db的新特性。
   
  
  在内存中缓存ado对象或其内容
  通常,在asp程序中,都会涉及到一些存储在数据库中的常用信息,如省份列表、商品分类等,这些信息对于每一个访问用户都是相同的。若每一个用户访问时,都要去数据库里取出来,然后显示给用户,不仅会使数据库服务器负载加重,无法快速服务于更重要的事务处理,而且web服务器也必须不停地创建ado对象,从而消耗大量资源,导致了当用户很多时几乎失去响应。若能把一些常用信息事先存储在内存中,当用户访问时,直接从内存中取出,显示给用户,则可以大大减小系统的压力,提高响应速度。
  
  比如,我们可以把已经取得了数据的recordset对象存储在application变量中,当用户访问时,从application变量中取得recordset对象,而不需再次建立数据库连接;也可以将recordset对象里的数据以其他方式存储,比如存储在数组中,然后再将数组存储在application变量中,使用时用数组的方式读取。
  
  需要注意的是,一个对象要存储在application变量中,线程模式必须是both;对于不满足该条件的对象,必须以其他方式,比如转换成数组的方式存储在application变量中,这也是上面所说的将内容存储在数组中的原因。
  
  使用数字序列
  在asp程序中,从诸如recordset中读取数据时,为了方便,常使用数据库列名的方式进行: response.write rs(“fieldnamen”)
  
  
  而很少采用该数据库列名所在的数字序列来读取,即:
  
   
  
  response.write rs(n)
  
  
  其实,为了从recordset得到列值,ado必须将列名转化为数字序列,因此,若直接使用数字序列,则可以提高读取速度。若感觉使用数字序列后,程序可读性不直观,可以采用建立常量的方法,如定义:
  
   
  
  const fieldname1 1
  
  
  这样就保证了程序的可读性和读取速度。
  
  使用数据库过程
  在电子商务站点中,尤其是要进行交易的站点,为了完成交易,可能需要多次查询大量的信息,用于判定是非,然后更新入库。若在编写asp时,直接在一个程序中作多次数据库操作,不仅iis要创建很多的ado对象,消耗大量资源,而且加重了数据库服务器的负担,增大了网络流量。若把多次数据库操作流程定义为一个数据库过程,用如下方式调用:
  
  connection.execute “{call procedurename(..)}”
  
  这样可以利用数据库的强大性能,大大减轻web系统的压力,而且由于页面内容与业务分开,管理维护也变得方便。
  
  利用数据库的特性
  ado是一套通用的对象控件,本身没有利用数据库的任何特性。但若在asp程序编写时,有意识地考虑结合数据库的特性,往往可以有很好的效果。
  
  比如,oracle数据库服务器对于执行过的sql语句,通常都经过了分析优化,并存储在一个sql内存缓冲区中,当下次同样的sql语句请求时,直接从内存缓冲区取出执行,不再进行分析优化,从而可以大幅度提高性能。这就要求在asp程序编写时,尽量使用相同的sql语句,或者参数化的sql语句:
  
   
  
  set cmd=server.createobject(“adodb.command”)
  cmd.commandtext=”select * from product where productcode=?”
  
  
  用时创建用完释放
  在前面也提到过,ado对象是非常消耗资源的,因此一定要牢牢记住,只在用到ado对象时才创建,用完后马上释放,程序如下:
  
   
  
  set rs=server.createobject(“adodb.recordset”)
  ….
  rs.close
  set rs=nothing
  
  
  使用优化过的sql语句
  对于电子商务网站,最主要的就是要保证不论访问用户的多少,系统都要有足够快的响应速度。由于在asp技术中,ado对象消耗的资源是非常大的,若一个sql语句要执行很长的一段时间,对整个资源也将一直占用,使系统没有足够的资源服务于其它用户。因此,尽量使用优化过的sql语句,减少执行时间。比如,不使用在in语句中包含子查询的语句,充分利用索引
  
  只要在我们的电子商务网站的建设中充分考虑到效率问题,并利用上述介绍的解决方法,会极大地提高网站的响应速度。
  
  
    


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons