我爱Aspx >> C#.Net >> 在ASP中优化数据库处理_ASP技巧在内存中缓存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语句中包含子查询的语句,充分利用索引。
只要在我们的电子商务网站的建设中充分考虑到效率问题,并利用上述介绍的解决方法,会极大地提高网站的响应速度。
Ҷƪл˵?
数据库的查询优化技术_数据库技巧[04-28]
SQL语句的自动优化_数据库技巧[04-28]
MySQL索引分析和优化_数据库技巧[04-28]
最大限度优化你的Asp性能_ASP技巧[04-28]
优化SQL Server索引的小技巧_数据..[04-28]
用ASP编写计数器的优化方法_ASP技..[04-28]
ASPX页Web服务调用性能优化_ASP...[04-28]
SQL Server数据库性能的优化_数据..[04-28]
微软建议的ASP性能优化28条守则_..[04-28]
Windows 2000下优化Oracle9i性能..[04-28]
数据库的查询优化技术_数据库技巧[04-28]
SQL语句的自动优化_数据库技巧[04-28]
MySQL索引分析和优化_数据库技巧[04-28]
最大限度优化你的Asp性能_ASP技巧[04-28]
优化SQL Server索引的小技巧_数据..[04-28]
使用OOP技术来优化PHP应用程序_P..[04-28]
用ASP编写计数器的优化方法_ASP技..[04-28]
ASPX页Web服务调用性能优化_ASP...[04-28]
SQL Server数据库性能的优化_数据..[04-28]
php代码优化及php相关问题总结_P..[04-28]