APP下载

基于改进ASP设计的提高执行效率探究

2010-02-16吴贵山

漳州职业技术学院学报 2010年3期
关键词:数据表组件程序

吴贵山



基于改进ASP设计的提高执行效率探究

吴贵山

(漳州农业学校,福建 漳州 363000)

通过对ASP的不同设计方法进行对比测试,总结出使用存储过程、数据库索引、DLL组件、Action Query指令等提高ASP执行效率的方法,并对ASP程序中的变量的使用等进行改进。

存储过程;数据库索引;DLL组件;Action Query指令

0 引言

随着计算机的普及和网络的迅猛发展,网站已成为树立企业形象、产品宣传及发展电子商务的重要平台,同时也是政府部门、企事业单位实行政务公开、无纸化办公和交流的重要平台。笔者在对网站服务器的长期监测中发现,有些网站只实现简单的功能,数据量也不大,但CPU的占用率却很高,在多人同时访问时更为明显。在对一些网站的ASP程序进行分析测试后发现,有部分程序的结构和设计方法存在问题,通过改进设计方法可以较好的提高其执行效率。

ASP即Active Server Pages,是一种功能强大、灵活易学的服务器端脚本编程环境,ASP程序在服务器端解释运行,并把运行的结果以HTML代码的形式输出到客户端。虽然其执行效率总体来说比不上.Net程序,但因其易学易用等特点而广泛应用于企业网站、电子商务网站等动态交互网站。 

ASP的执行效率除了与服务器的配置等硬件有关外,程序的设计方法也是一个不可忽视的问题,特别是对于海量数据,好的设计方法将使执行效率提高数倍。笔者经过重复试验,总结以下几点提高ASP执行效率的方法,希望对ASP的设计人员有所帮助。(假设SQL Server数据库中存在一个数据表,表中有两个文本字段col1、col2和一个日期型字段time1,并且数据库已连接。)

1 使用存储过程

存储过程[1](Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。在ASP程序中可以通过调用存储过程来执行某个特定的任务。

例如要查询2010年1月1日之后,2010年7月1日之前的数据,主要有以下两种方法。

方法1:使用存储过程

在数据库中创建存储过程:

CREATE PROCEDURE 存储过程 (@date1 datetime ,@date2 datetime )

AS

Select col1,col2,time1 from 数据表 where time1>@date1 and time1<@date2

GO

在asp中调用:set rs=conn.execute("存储过程 '2010-1-1','2010-7-1'")

方法2:直接在asp中执行SQL语句

set rs=conn.execute("select col1,col2,time1 from car002 where time1>'2010-1-1' and time1<'2010-7-1'")

在SQL Server中对10万条记录进行测试,结果显示方法1平均耗时637毫秒,方法2平均耗时1712毫秒,数据量越大,差别就越大。实践证明,在大量的数据统计和海量数据分页等使用存储过程将使执行效率提高数倍。

2 使用数据库索引

索引类似于字典,按字母顺序排列数据,是表中数据的物理顺序。一个表的索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样[1]。通常设置条件查询访问的列为索引列。

例如:设置时间字段time1为索引列,然后在ASP中使用“Select col1,col2,time1 form 数据表where time1>'2010-1-1' and time1<'2010-7-1’”查询记录将比没有设置索引列提高数倍的执行效率。

但“水可载舟,亦可覆舟”,不当的索引将会增加磁盘I/0频率,CPU 的占用也会增大,从而导致系统性能降低,所以正确的设置索引尤为重要。

3 使用ActiveX DLL封装ASP

因为Dll是经过编译的,用这种方法可以节省服务端解释程序逐行解释的时间,从而提高执行效率;因经过编译后的Dll看不到源程序,所以又可以做到保护源程序的作用。使用ActiveX DLL封装ASP[2]的步骤如下:

(1) 在VB6中用ActiveX DLL把ASP代码修改后封装生成Dll组件,如aspdll.dll。

(2)用dos命令regsvr32 注册组件,格式为“regsvr32 路径组件名”。

(3)在ASP中使用这个组件:

<%

Set Testdll= Server.CreateObject("工程名.类名称")

Testdll.函数名

%>

4 使用Action Query指令

要更新数据记录,可以用Recordset对象的Delect、Update、Addnew等方法,也可以用Command对象的Delect、Update、Insert Into等Action Query指令[3]。例如要向数据表中添加一条记录,可以使用以下两种方法。

方法1:

Set rs =Server.CreateObject("ADODB.Recordset")

Sql="SELECT * FROM 数据表”

rs.open sql,conn,1,3

rs.addnew

rs(“col1”)="Test1"

rs(“col2”)="Test2"

rs.update

方法2:

sql="insert into 数据表 (col1,col2) values (‘test1’,'test2’)"

conn.Execute(sql)

对于单条记录的更新,两种方法差别并不大,但对于大量数据的更新,差别非常大,在SQL Server中对10万条记录进行更新操作,经测试方法1平均耗时6300毫秒,方法2平均耗时1600毫秒,由此可见使用Action Query指令批量更新数据将使用执行效率提高数倍。

5 使用变量替代多次调用记录集

在ASP中可能经常用到对一个数据表值的重复读取,这将影响执行效率和损耗系统资源。可先用一个本地变量进行赋值,在程序中对变量进行引用替代多次调用记录集的方法,如在要实现“如果col1的值大于50个字符,则只显示前面50个字符,否则显示全部”,这在网页中经常用到,有以下两种方法,很显然方法2的效率更高。

方法1:If len(trim(rs(“col1”)))>50 then

Response.write left(trim(rs(“col1”)),50)

Else

Response.write trim(rs(“col1”))

End if

方法2:Str_col1=trim(rs(“col1”))

If len(Str_col1)>50 then

Response.write left(Str_col1,50)

Else

Response.write Str_col1

End if

另外,由于ASP中已经模糊了变量类型的概念,允许直接使用变量,而不必强制先用Dim声明变量,所以很多初学者习惯不声明VBScript的变量。建议在ASP程序行首放置<% option explicit%>强制声明变量,变量先声明后使用,可以防止用错变量名。

6 及时清空对象

当使用完对象后,应及时使用Close方法来释放对象所占用的系统资源,并设置对象值为“nothing”释放对象占用的内存[3]打开数据库对象后要用rs.Close;set rs=nothing来清空对象。

7 指定具体的集合

在ASP中经常用page=request(“page”)这样的形式来获取参数,解释程序将搜索集合 QueryString、Form、Cookies、ClientCertificate、ServerVaribl等,直到发现第一个匹配值的名称,这将降低执行效率,并且容易发生错误。所以尽量指定具体的集合,如page=request.form(“page”)直接告诉解释程序要从表单获取page的值。

8 其他

尽量避免使用“Select * from 数据表”这种形式的SQL语句,应把程序中有用到的字段名列出来,即使是用到全部的字段,也应该逐一的列出。如:“Select col1,col2 form 数据表”。

对于一个页面中重复出现的功能模块,例如在首页调用N个数据表的记录,而显示的列表样式又相同,可以先创建一个带参数的自定义函数,把显示的列表放在函数里,然后在页面中需要显示的地方调用这个函数。这将比直接在多处重复写这些显示的代码的执行效率更高,因为可以减少服务端重复解释这些重复的代码,同时也便于后期的维护。

总之,影响ASP程序执行效率的因素有很多,在硬件配置无法改变的情况下,如何改进ASP的设计方法,以达到较高的执行效率。本文分析总结了使用存储过程、数据库索引、ActiveX DLL封装ASP、Action Query指令和正确使用变量等方法,当然这只是其中的一部分,还有更多的方法值得我们去探究。一个良好的设计方法,一个良好的编程习惯将能最大限度的提高执行效率,特别在大型网站中尤为明显。

[1]孟宪虎.大型数据库系统管理、设计与实例分析[M].北京:电子工业出版社,2007.

[2]明日科技.ASP程序开发范例宝典[M]. 北京:人民邮电出版社,2006.

[3]王国荣. ASP网页制作教程[M]. 北京:人民邮电出版社,2000.

A Study to Increase Execution Efficiency Based on Improving ASP Design

WU Gui-shan

( Zhangzhou Agricultural School, Zhangzhou, Fujian 363000,China)

In this paper, methods to increase execution efficiency of ASP program via using stored procedure, database index, DLL component, Action Query instruction, etc. are put forward by comparing and testing different design methods of ASP; and the application of variables in the ASP program and other particulars are improved.

Stored Procedure; Database Index; DLL Component; Action Query Instruction

2010-05-20

吴贵山(1977-),男,福建诏安人,讲师,工学学士,研究方向:网站建设。

TP393.07

A

1673-1417(2010)03-0008-03

猜你喜欢

数据表组件程序
无人机智能巡检在光伏电站组件诊断中的应用
新型碎边剪刀盘组件
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
U盾外壳组件注塑模具设计
试论我国未决羁押程序的立法完善
基于列控工程数据表建立线路拓扑关系的研究
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
创卫暗访程序有待改进