在ASP中优化数据库处理

2016-01-29 18:30 3 1 收藏

在ASP中优化数据库处理,在ASP中优化数据库处理

【 tulaoshi.com - ASP 】

  来源:中国计算机报

  ASP是一个Web服务器端的开发环境,它提供了一种简单易学的脚本(VBScript或Jscript),并带有许多内置的对象,从而提供了一条简捷的编程之路。更为重要的是,ASP中提供了ADO对象,让程序员可以轻松操作各种数据库,从而可以产生和运行动态的、交互的Web服务应用程序。

  目前,国内很多电子商务站点都采用了ASP技术来与数据库交互,为用户提供各类服务。

  由于电子商务站点的大部分信息都存放在数据库中,要提高Web的响应速度、建立高性能的电子商务站点,很大一部分取决于ASP与数据库之间的处理性能,本文将具体介绍一些优化数据库处理的方法。


  使用Connection Pool机制


  在数据库处理中,资源花销最大的是建立数据库连接,而且用户还会有一个较长的连接等待时间。若每一个用户访问时,都重新建立连接,不仅用户要长时间等待,而且系统有可能会由于资源消耗过大而停止响应。如果能够重用以前建立的数据库连接,而不是每次访问时都重新建立连接,则可以很好地解决这些问题,从而提高整个系统的性能。在IIS+ASP处理体系中,采用了Connection Pool机制来保证这一点。

  Connection Pool的原理是:IIS+ASP体系中维持了一个连接缓冲池,建立好的数据库连接在ASP程序中的断开都是逻辑断开,而实际的物理连接被存储在池中并被加以维护。这样,当下一个用户访问时,直接从连接缓冲池中取得一个数据库连接,而不需重新连接数据库,因此,可以大大地提高系统的响应速度。

  为了正确使用Connection Pool机制,必须注意以下几点:

  1. 在MDAC2.0以前的版本中,必须经过数据库驱动程序的配置才能使用Connection Pool;在以后的版本中(比如MDAC2.1),缺省是使用Connection Pool机制。具体配置情况可以参见微软公司的站点(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是建立在OLE DB技术上的,为了支持ODBC,必须建立相应的OLE DB 到ODBC的调用转换(如MS OLEDB provider for ODBC)。而使用直接的OLE DB方式(如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

  这样就保证了程序的可读性和读取速度。

来源:https://www.tulaoshi.com/n/20160129/1506067.html

延伸阅读
标签: ASP
  Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言。许多ASP开发人员一直在考虑,能否在开发互联网应用、电子商务网站、互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库。在本篇文章中,我们将主要讨论...
标签: Web开发
目前web2.0的程序,很大瓶颈是数据库的吞度量。不过,如何才能确定系统的瓶颈是数据库呢,因为只有确定数据库是整个系统的瓶颈,我们才有必要去优化他,毕竟,还有这么多需求等待我们去做。 如何确定数据库是瓶颈? 1 如果程序设计良好,有一个数据库操作逻辑层,可以从这个层的统计数据看到每个请求花费的时间,如果平均时间已...
标签: Web开发
本文关键字:教程/ASP/技巧     ASP有一个最重要的功能,就是它可以让你非常轻松地连接数据库。通常都是和一个Access或者一个SQL数据库相连。因为Access是最容易起步的,同时,在你的机器上也许已经都装有Access了,所以,在下面的例子中,我们都将使用Access来做例子。一旦你学习了ASP和Access数据库连接的核心技术方法,当你...
标签: Web开发
Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言。许多ASP开发人员一直在考虑,能否在开发互联网应用、电子商务网站、互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库。在本篇文章中,我们将主要讨论如何使用ASP...
标签: ASP
  Oracle是世界上用得最多的数据库之一,活动服务器网页(ASP)是一种被广泛用于创建动态网页的功能强大的服务器端脚本语言。许多ASP开发人员一直在考虑,能否在开发互联网应用、电子商务网站、互联网管理系统时结合使用ASP和Oracle数据库?这个问题的答案是肯定的,我们还可以使用VB访问Oracle数据库。在本篇文章中,我们将主要讨论如...

经验教程

282

收藏

67
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部