国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于改進ASP設計的提高執(zhí)行效率探究

2010-02-16 23:26吳貴山
關(guān)鍵詞:數(shù)據(jù)表組件程序

吳貴山

?

基于改進ASP設計的提高執(zhí)行效率探究

吳貴山

(漳州農(nóng)業(yè)學校,福建 漳州 363000)

通過對ASP的不同設計方法進行對比測試,總結(jié)出使用存儲過程、數(shù)據(jù)庫索引、DLL組件、Action Query指令等提高ASP執(zhí)行效率的方法,并對ASP程序中的變量的使用等進行改進。

存儲過程;數(shù)據(jù)庫索引;DLL組件;Action Query指令

0 引言

隨著計算機的普及和網(wǎng)絡的迅猛發(fā)展,網(wǎng)站已成為樹立企業(yè)形象、產(chǎn)品宣傳及發(fā)展電子商務的重要平臺,同時也是政府部門、企事業(yè)單位實行政務公開、無紙化辦公和交流的重要平臺。筆者在對網(wǎng)站服務器的長期監(jiān)測中發(fā)現(xiàn),有些網(wǎng)站只實現(xiàn)簡單的功能,數(shù)據(jù)量也不大,但CPU的占用率卻很高,在多人同時訪問時更為明顯。在對一些網(wǎng)站的ASP程序進行分析測試后發(fā)現(xiàn),有部分程序的結(jié)構(gòu)和設計方法存在問題,通過改進設計方法可以較好的提高其執(zhí)行效率。

ASP即Active Server Pages,是一種功能強大、靈活易學的服務器端腳本編程環(huán)境,ASP程序在服務器端解釋運行,并把運行的結(jié)果以HTML代碼的形式輸出到客戶端。雖然其執(zhí)行效率總體來說比不上.Net程序,但因其易學易用等特點而廣泛應用于企業(yè)網(wǎng)站、電子商務網(wǎng)站等動態(tài)交互網(wǎng)站。 

ASP的執(zhí)行效率除了與服務器的配置等硬件有關(guān)外,程序的設計方法也是一個不可忽視的問題,特別是對于海量數(shù)據(jù),好的設計方法將使執(zhí)行效率提高數(shù)倍。筆者經(jīng)過重復試驗,總結(jié)以下幾點提高ASP執(zhí)行效率的方法,希望對ASP的設計人員有所幫助。(假設SQL Server數(shù)據(jù)庫中存在一個數(shù)據(jù)表,表中有兩個文本字段col1、col2和一個日期型字段time1,并且數(shù)據(jù)庫已連接。)

1 使用存儲過程

存儲過程[1](Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中。在ASP程序中可以通過調(diào)用存儲過程來執(zhí)行某個特定的任務。

例如要查詢2010年1月1日之后,2010年7月1日之前的數(shù)據(jù),主要有以下兩種方法。

方法1:使用存儲過程

在數(shù)據(jù)庫中創(chuàng)建存儲過程:

CREATE PROCEDURE 存儲過程 (@date1 datetime ,@date2 datetime )

AS

Select col1,col2,time1 from 數(shù)據(jù)表 where time1>@date1 and time1<@date2

GO

在asp中調(diào)用:set rs=conn.execute("存儲過程 '2010-1-1','2010-7-1'")

方法2:直接在asp中執(zhí)行SQL語句

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

在SQL Server中對10萬條記錄進行測試,結(jié)果顯示方法1平均耗時637毫秒,方法2平均耗時1712毫秒,數(shù)據(jù)量越大,差別就越大。實踐證明,在大量的數(shù)據(jù)統(tǒng)計和海量數(shù)據(jù)分頁等使用存儲過程將使執(zhí)行效率提高數(shù)倍。

2 使用數(shù)據(jù)庫索引

索引類似于字典,按字母順序排列數(shù)據(jù),是表中數(shù)據(jù)的物理順序。一個表的索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣[1]。通常設置條件查詢訪問的列為索引列。

例如:設置時間字段time1為索引列,然后在ASP中使用“Select col1,col2,time1 form 數(shù)據(jù)表where time1>'2010-1-1' and time1<'2010-7-1’”查詢記錄將比沒有設置索引列提高數(shù)倍的執(zhí)行效率。

但“水可載舟,亦可覆舟”,不當?shù)乃饕龑黾哟疟PI/0頻率,CPU 的占用也會增大,從而導致系統(tǒng)性能降低,所以正確的設置索引尤為重要。

3 使用ActiveX DLL封裝ASP

因為Dll是經(jīng)過編譯的,用這種方法可以節(jié)省服務端解釋程序逐行解釋的時間,從而提高執(zhí)行效率;因經(jīng)過編譯后的Dll看不到源程序,所以又可以做到保護源程序的作用。使用ActiveX DLL封裝ASP[2]的步驟如下:

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

(2)用dos命令regsvr32 注冊組件,格式為“regsvr32 路徑組件名”。

(3)在ASP中使用這個組件:

<%

Set Testdll= Server.CreateObject("工程名.類名稱")

Testdll.函數(shù)名

%>

4 使用Action Query指令

要更新數(shù)據(jù)記錄,可以用Recordset對象的Delect、Update、Addnew等方法,也可以用Command對象的Delect、Update、Insert Into等Action Query指令[3]。例如要向數(shù)據(jù)表中添加一條記錄,可以使用以下兩種方法。

方法1:

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

Sql="SELECT * FROM 數(shù)據(jù)表”

rs.open sql,conn,1,3

rs.addnew

rs(“col1”)="Test1"

rs(“col2”)="Test2"

rs.update

方法2:

sql="insert into 數(shù)據(jù)表 (col1,col2) values (‘test1’,'test2’)"

conn.Execute(sql)

對于單條記錄的更新,兩種方法差別并不大,但對于大量數(shù)據(jù)的更新,差別非常大,在SQL Server中對10萬條記錄進行更新操作,經(jīng)測試方法1平均耗時6300毫秒,方法2平均耗時1600毫秒,由此可見使用Action Query指令批量更新數(shù)據(jù)將使用執(zhí)行效率提高數(shù)倍。

5 使用變量替代多次調(diào)用記錄集

在ASP中可能經(jīng)常用到對一個數(shù)據(jù)表值的重復讀取,這將影響執(zhí)行效率和損耗系統(tǒng)資源??上扔靡粋€本地變量進行賦值,在程序中對變量進行引用替代多次調(diào)用記錄集的方法,如在要實現(xiàn)“如果col1的值大于50個字符,則只顯示前面50個字符,否則顯示全部”,這在網(wǎng)頁中經(jīng)常用到,有以下兩種方法,很顯然方法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中已經(jīng)模糊了變量類型的概念,允許直接使用變量,而不必強制先用Dim聲明變量,所以很多初學者習慣不聲明VBScript的變量。建議在ASP程序行首放置<% option explicit%>強制聲明變量,變量先聲明后使用,可以防止用錯變量名。

6 及時清空對象

當使用完對象后,應及時使用Close方法來釋放對象所占用的系統(tǒng)資源,并設置對象值為“nothing”釋放對象占用的內(nèi)存[3]打開數(shù)據(jù)庫對象后要用rs.Close;set rs=nothing來清空對象。

7 指定具體的集合

在ASP中經(jīng)常用page=request(“page”)這樣的形式來獲取參數(shù),解釋程序?qū)⑺阉骷?QueryString、Form、Cookies、ClientCertificate、ServerVaribl等,直到發(fā)現(xiàn)第一個匹配值的名稱,這將降低執(zhí)行效率,并且容易發(fā)生錯誤。所以盡量指定具體的集合,如page=request.form(“page”)直接告訴解釋程序要從表單獲取page的值。

8 其他

盡量避免使用“Select * from 數(shù)據(jù)表”這種形式的SQL語句,應把程序中有用到的字段名列出來,即使是用到全部的字段,也應該逐一的列出。如:“Select col1,col2 form 數(shù)據(jù)表”。

對于一個頁面中重復出現(xiàn)的功能模塊,例如在首頁調(diào)用N個數(shù)據(jù)表的記錄,而顯示的列表樣式又相同,可以先創(chuàng)建一個帶參數(shù)的自定義函數(shù),把顯示的列表放在函數(shù)里,然后在頁面中需要顯示的地方調(diào)用這個函數(shù)。這將比直接在多處重復寫這些顯示的代碼的執(zhí)行效率更高,因為可以減少服務端重復解釋這些重復的代碼,同時也便于后期的維護。

總之,影響ASP程序執(zhí)行效率的因素有很多,在硬件配置無法改變的情況下,如何改進ASP的設計方法,以達到較高的執(zhí)行效率。本文分析總結(jié)了使用存儲過程、數(shù)據(jù)庫索引、ActiveX DLL封裝ASP、Action Query指令和正確使用變量等方法,當然這只是其中的一部分,還有更多的方法值得我們?nèi)ヌ骄?。一個良好的設計方法,一個良好的編程習慣將能最大限度的提高執(zhí)行效率,特別在大型網(wǎng)站中尤為明顯。

[1]孟憲虎.大型數(shù)據(jù)庫系統(tǒng)管理、設計與實例分析[M].北京:電子工業(yè)出版社,2007.

[2]明日科技.ASP程序開發(fā)范例寶典[M]. 北京:人民郵電出版社,2006.

[3]王國榮. ASP網(wǎng)頁制作教程[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-),男,福建詔安人,講師,工學學士,研究方向:網(wǎng)站建設。

TP393.07

A

1673-1417(2010)03-0008-03

猜你喜歡
數(shù)據(jù)表組件程序
無人機智能巡檢在光伏電站組件診斷中的應用
新型碎邊剪刀盤組件
湖北省新冠肺炎疫情數(shù)據(jù)表(2.26-3.25)
湖北省新冠肺炎疫情數(shù)據(jù)表
U盾外殼組件注塑模具設計
試論我國未決羈押程序的立法完善
基于列控工程數(shù)據(jù)表建立線路拓撲關(guān)系的研究
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
創(chuàng)衛(wèi)暗訪程序有待改進