`
seawavenews
  • 浏览: 231699 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

在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

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

使用数据库过程
在电子商务站点中,尤其是要进行交易的站点,为了完成交易,可能需要多次查询大量的信息,用于判定是非,然后更新入库。若在编写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语句中包含子查询的语句,充分利用索引。

只要在我们的电子商务网站的建设中充分考虑到效率问题,并利用上述介绍的解决方法,会极大地提高网站的响应速度。
分享到:
评论

相关推荐

    asp论坛 asp+sql数据库论坛

    在【标签】中,"asp+sql"强调了技术栈,即使用ASP进行前端动态页面处理,配合SQL数据库处理后端数据。"asp+sql数据库论坛"和"asp论坛"进一步明确了项目类型,这是一个使用ASP技术构建的论坛,其中数据库部分采用SQL...

    利用ASP实现Web数据库的访问

    - **优化数据库连接**:合理管理`Connection`对象的生命周期,避免频繁地打开和关闭连接。 - **缓存查询结果**:对于经常被访问的数据,可以考虑使用缓存机制存储查询结果,减少对数据库的直接访问次数。 - **精简...

    asp 自动生成数据库操作代码

    在压缩包中的“ASP 数据库+表单处理代码自动生成工具”很可能是一个这样的实用程序,它可以简化ASP开发中的数据库操作部分,让开发者更专注于业务逻辑和页面设计,而不是繁琐的底层代码。使用这类工具,开发人员可以...

    ASP.NET数据库网站设计教程

    在ASP.NET框架中,数据库连接和交互主要依赖于ADO.NET(ActiveX Data Objects .NET)技术。ADO.NET提供了一组丰富的类库,允许开发者直接与各种数据库(如SQL Server、Oracle、MySQL等)进行通信。它包含了DataSet、...

    ASP数据库实例精析

    6. 错误处理和优化:讨论如何在ASP代码中添加错误处理机制,以及提高数据库访问性能的方法,如预编译SQL语句、批量操作等。 7. 安全性:讲解如何防止SQL注入攻击,以及在处理用户输入时确保数据的安全性。 8. 实例...

    ASP 数据库类封装

    标题“ASP 数据库类封装”指的是一种优化的数据库处理方式,它不再依赖于传统的conn.asp文件,而是通过创建一个数据库类来封装数据库连接和操作。这种方式的优点在于提高了代码的可维护性和复用性,同时能更有效地...

    asp将本地excel数据上传到access数据库中,也可用与其它数据库

    4. 数据库连接:在ASP中,首先需要建立与Access数据库的连接。这通常通过创建一个ADODB.Connection对象并设置其ConnectionString属性完成。连接字符串会包含数据库的位置、用户名、密码等信息。 5. Excel数据导入:...

    ASP & Web 数据库经典教程

    在ASP中,我们可以与各种数据库进行交互,如Access、SQL Server等,以实现Web数据库应用。 在“ASP & Web 数据库经典教程”中,重点可能包括以下几个关键知识点: 1. **ASP基础**:首先,教程可能会讲解ASP的基本...

    ASP数据库操作类 -ASP源码.zip

    9. **性能优化**:包括合理设计数据库结构、索引使用、减少数据库访问次数、缓存策略等,都是ASP数据库操作中需要考虑的性能优化点。 这个压缩包中的源代码可能是上述知识的具体实现,比如包含数据库连接、查询、...

    Asp在线压缩Access数据库

    总的来说,“Asp在线压缩Access数据库”是一个结合了ASP、Ajax和Access技术的实用解决方案,旨在优化数据库性能和管理,提高Web应用的响应速度,同时提供了良好的用户体验。开发者可以根据自己的需求,参考这些文件...

    ASP读取纯真数据库源码

    在“ASP读取纯真数据库源码”这个主题中,我们主要关注的是如何使用ASP来处理和查询纯真IP数据库(QQWry.Dat)。纯真IP数据库是一个包含了大量IP地址与对应地理位置信息的数据文件,广泛应用于网站的IP查询服务,...

    ASP.NET2.0数据库高级编程

    书里可能会讲解如何在ASP.NET 2.0中使用TransactionScope类进行事务管理,以及如何处理并发冲突,例如通过乐观并发策略和悲观并发策略。 7. **安全性与性能优化**:内容可能涉及如何使用参数化查询防止SQL注入攻击...

    asp.net数据库管理工具

    文件名称列表中的"WEB SQL数据库管理工具_web_sql_manager"可能是一个特定的数据库管理工具,或者是教程、示例项目,用于演示如何在ASP.NET Web应用中实现自定义的数据库管理功能。这个工具可能包含前端页面和后端...

    精通ASP数据库程序设计

    本书可能会涵盖防止SQL注入、处理跨站脚本攻击(XSS)、优化数据库查询、减少服务器负载等策略。 通过阅读《精通ASP数据库程序设计》,读者不仅可以掌握ASP的基本语法和特性,还能了解到数据库编程的最佳实践,从而...

    Asp.net数据库开发实例

    在Asp.net数据库开发实例中,我们探讨的是如何利用ASP.NET这一强大的Web应用程序框架与数据库进行交互,以创建高效、动态的网站应用。ASP.NET是由微软公司开发的,它为开发者提供了一整套构建高性能、安全性和可伸缩...

    asp.net数据库开发实用工程案例精选

    ASP.NET是一种由微软开发的...总结,"ASP.NET数据库开发实用工程案例精选"将引导开发者深入理解如何在ASP.NET环境中有效地设计、实现和优化数据库驱动的应用程序,结合实际案例,帮助开发者提升技能,解决实际问题。

    结合ashx在DataGrid中显示数据库中图片

    结合ASHX处理程序与DataGrid控件在Web应用程序中显示数据库中的图片,不仅提高了数据展示的灵活性和效率,还优化了用户体验。通过以上分析,我们了解了这一技术的实现机制,为后续的Web开发项目提供了宝贵的参考。

    asp+access数据库+用户管理

    在"asp+access数据库+用户管理"这个主题中,我们将探讨如何使用ASP结合Access数据库来实现用户管理系统。 Access数据库是微软开发的一种关系型数据库管理系统,适合小型到中型的应用场景。它具有易于使用、操作简单...

    asp.net连接数据库的代码

    ASP.NET是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能和强大的性能,使得开发者能够轻松地创建交互式...在实际项目中,确保正确管理和关闭连接,以及合理使用连接池,都是优化数据库性能的重要策略。

    ASP及数据库

    7. **安全性与性能优化**:了解防止SQL注入、XSS攻击等安全措施,以及如何优化数据库查询和页面加载速度,如使用存储过程、缓存和有效的索引策略。 8. **实例应用**:通过实际项目练习,例如创建一个用户注册登录...

Global site tag (gtag.js) - Google Analytics