成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

提高DB2 Web程序性能5條規(guī)則(1)

瀏覽:2日期:2023-11-10 19:41:37
速度和可升級性是網(wǎng)絡(luò)開發(fā)重要的性能要求,而且它們也不難達(dá)到。應(yīng)用一些簡單的規(guī)則會提高網(wǎng)絡(luò)應(yīng)用的性能。在本文中,您將了解到使用Borland® C#Builder和IBM® DB2®通用數(shù)據(jù)庫(UDB)8.1開發(fā)快速Microsoft® ASP.NET Web應(yīng)用程序的5條規(guī)則。分析Web應(yīng)用程序的性能需要利用一些手段來檢測每個操作的性能。為此,我創(chuàng)建了一個TimeDiff類(見程序清單1),它可以計算數(shù)據(jù)庫操作的用時。你可以利用TimeDiff類的檢測結(jié)果作為衡量數(shù)據(jù)庫操作性能的基準(zhǔn),來觀察哪些操作最為有效。我還創(chuàng)建了一個配合TimeDiff 類使用的LOTSOFRECORDS表(見程序清單2),它包含10,000條記錄,你可以通過對它的操作來觀察不同技術(shù)之間的性能差異。DB2具有內(nèi)部緩沖池,一旦運(yùn)行一個查詢,內(nèi)部緩沖池啟用,因此二次查詢的速度較快。在檢測查詢速度時,請忽略緩沖池啟用前的結(jié)果而采用啟用后的結(jié)果。程序清單1. TimeDiff類using System;namespace Effeciency{ /// /// 這個類用于時間計算。在例子中, /// 我們將利用它檢測數(shù)據(jù)庫操作的速度, /// 以便作性能上的比較。 ///public class TimeDiff{ DateTime StartTime; DateTime EndTime; public TimeDiff() {} public void Start() { StartTime = DateTime.Now; } public void Stop() { EndTime = DateTime.Now; } public string TimeDifferenceText { get { TimeSpan TimeDifference = EndTime - StartTime; return TimeDifference.ToString(); } }}} 123下一頁 程序清單2. LOTSOFRECORDS的表定義CREATE TABLE "GLENN "."LOTSOFRECORDS" ("KEYCOL" INTEGER NOT NULL ,"COL1" CHAR(50) ,"COL2" CHAR(50) ,"COL3" CHAR(50) ,"COL4" CHAR(50) ,"COL5" CHAR(50) ,"COL6" CHAR(50) ,"COL7" CHAR(50) ,"COL8" CHAR(50) ,"COL9" CHAR(50) ,"COL10" CHAR(50) )IN "USERSPACE1" ;COMMENT ON TABLE "GLENN "."LOTSOFRECORDS" IS 'Table designed to Contain Lots of Records';-- DDL Statements for primary key on Table "GLENN "."LOTSOFRECORDS"ALTER TABLE "GLENN "."LOTSOFRECORDS"ADD CONSTRAINT "CC1058255334652" PRIMARY KEY("KEYCOL");下面,我們就開始介紹這些提高DB2 UDB Web 應(yīng)用程序性能的規(guī)則。我會先介紹提高數(shù)據(jù)庫性能的基本規(guī)則,然后列出一些適合以Borland Data Provider開發(fā)ASP.NET應(yīng)用時的性能規(guī)則。規(guī)則1:按需檢索假如你只能記得住一條規(guī)則,那一定要記住這一條:按需檢索。假如你是“幸存者電視節(jié)目的忠實觀眾,您會記得其中的參賽者通過限額分配來保證每個人都有充足的食物。這種做法對于數(shù)據(jù)庫開發(fā)同樣適用。假如你的應(yīng)用程序能夠按需運(yùn)行,那么就會合理地將數(shù)據(jù)庫和網(wǎng)絡(luò)資源留給其他應(yīng)用。這聽起來很簡單,但我們還是來看一個例子。 上一頁123下一頁 假設(shè)有一個包含10,000 行記錄和10 個字段的表,以及一個需要顯示所有記錄但只顯示3個字段的Web頁。很多開發(fā)者經(jīng)常圖省事而使用"select *"語句選擇所有的字段:select * from GLENN.LOTSOFRECORDS這種做法應(yīng)當(dāng)避免,而應(yīng)力求只檢索需要的字段。可以在SQL 語句中定義要檢索的字段,例如:selectKEYCOL, COL1, COL2, COL7fromGLENN.LOTSOFRECORDS在本文附帶的源程序中,有兩個ASP.NET頁面:一個是RetrievingAllFields.aspx,它執(zhí)行第一個查詢;另一個是RetrievingLimitedFields.aspx ,它執(zhí)行第二個查詢,即只檢索需要的字段。用TimeDiff類進(jìn)行檢測,執(zhí)行第一個查詢用了1.622 秒,執(zhí)行第二個查詢用了1.311秒。后者用時只是前者的80%,不僅用時少,而且還減少了Web應(yīng)用程序和數(shù)據(jù)庫服務(wù)器之間的網(wǎng)絡(luò)數(shù)據(jù)堵塞。這個例子只限制了檢索的字段,你還可以使用WHERE語句限制檢索的記錄數(shù)。WHERE 語句可以限制服務(wù)器返回的記錄數(shù)(見程序清單3)。要記住,通過網(wǎng)絡(luò)發(fā)送的記錄數(shù)據(jù)越少,對應(yīng)用程序、數(shù)據(jù)庫、用戶和網(wǎng)絡(luò)越有好處。規(guī)則2:優(yōu)化數(shù)據(jù)庫有時候你的Web應(yīng)用程序可能運(yùn)行得不錯,但你想讓它更好。一個簡單的減少搜索時間的方法是為特定字段創(chuàng)建索引。假如有一個查詢是要搜索某個價格范圍內(nèi)的產(chǎn)品(見程序清單3),但你沒有為價格字段定義索引,那么返回數(shù)據(jù)就會多花一些時間。而一旦建立了索引,DB2會很快返回你想要的結(jié)果。程序清單3. 利用索引進(jìn)行數(shù)據(jù)庫搜索SELECTPRODUCTCODE, PRODUCTNAME, DESCRIPTION, UNITPRICEFROMGLENN.PRODUCTLISTWHEREUNITPRICE > 20.00優(yōu)化數(shù)據(jù)庫不只是為搜索字段創(chuàng)建索引這么一條,你應(yīng)當(dāng)盡可能多地搜集相關(guān)的DB2信息以使應(yīng)用程序運(yùn)行得更好。經(jīng)常訪問IBM發(fā)者園地(IBM DB2 Developer Domain)和comp.databases.ibm-db2(comp.databases.ibm-db2)等一些相關(guān)的Web站點或新聞組,對于保持DB2開發(fā)技巧不斷更新是一個很好的辦法。你還應(yīng)當(dāng)努力熟悉DB2附帶的工具,例如DB2索引建議器(Index Advisor)。DB2索引建議器可以根據(jù)你遞交的查詢和所連接的數(shù)據(jù)庫返回最佳索引列表。 上一頁123
標(biāo)簽: DB2 數(shù)據(jù)庫