動態網頁程式設計中優化資料庫注意的十大原則

2021-04-17 07:40:41 字數 2228 閱讀 4613

與沒有資料庫的**相比,資料庫的訪問會降低你的系統效能。但是大多數情況下,**和資料庫有密不可分的關係,正是資料庫給站點提供了大容量、多樣性、個性化等特色,並實現了很多特殊的功能。

1不要忘記給資料庫做索引。合理的索引能立即顯著地提高資料庫整個系統的效能。可以參考有關sql效能除錯書籍,學會根據所需查詢方式合理製作索引和根據索引方式改進查詢語句。

2在適當的情況下,盡可能的用儲存過程而不是sql查詢,因為前者已經過了預編譯,執行速度更快。同時讓資料庫僅僅返回你所需要的那些資料,而不是返回大量資料再讓asp程式過濾。總之要充分和有效地發揮資料庫的強大功能,讓它按照我們的要求反饋給我們最合適和最精練的資訊。

3在可能情況下我們應該使用sqlserver而不是access。因為access僅僅是基於檔案的資料庫,多使用者效能很差。資料庫連線盡量使用oledb和非dsn方式,因為這種連線方式有更好的併發效能。

4避免使用dao(dataaccessobjects)和rdo(remotedataobjects)資料來源,因為他們主要應用在單使用者的處理系統裡,ado(activexdataobjects)才是為web應用設計的。

5建立記錄集rescordset的時候要清晰合理地設定資料游標(cursort)和鎖定方式(locktype)。因為在不同的方式下asp會以不同的方式操縱資料庫,其執行速度也有很大區別,尤其在大資料量的時候。如果你只想遍歷資料,那麼預設游標(前進、唯讀)會帶來最好的效能。

6當你引用ado變數的時候,會消耗較多的cpu週期。因此,如果在乙個asp頁面中多次引用資料庫的字段變數,乙個較好的方式是將字段值先放入本地變數,然後可以直接呼叫本地變數來計算和顯示資料。

8asp最強大和主要的用途之一就是對資料庫進行操作,在資料庫操作中我們要注意:不要任意使用「select*......」形式的sql查詢語句。應該盡量檢索你所需要的那些字段。比如乙個表中有10個字段,但是你只會用到其中的乙個字段(name),就該使用「selectnamefrommytable」,而不是用「select*frommytable」。在字段數比較少的時候,兩者的區別可能並不明顯,但是當乙個表中擁有幾十個欄位的時候,資料庫會多檢索很多你並不需要的資料。在這種情況下你最好不要為了節省打字時間或者害怕查詢對應欄位名稱的麻煩,而要老老實實地使用「selectid,name,age...frommytable」。

9及時關閉開啟的記錄集物件以及連線(connection)物件。記錄集物件和連線物件耗費系統資源相當大,因此它們的可用數量是有限的。如果你開啟了太多的記錄集物件以及連線物件而最後卻沒有關閉它們,可能會出現asp程式剛開始的時候執行速度很快,而多執行幾遍就越來越慢的現象,甚至導致伺服器宕機。請使用如下方法進行關閉:

myrecordset.closesetmyrecordset=nothing

setmyconnection=nothing  

10連線資料庫

仍然使用odbc系統或者檔案dsn來連線資料庫,或者使用很快的oledb技術來連線。使用後者,當移動web檔案時,不再需要修改配置。

oledb位於應用程式與odbc層之間。在asp頁面中,ado就是位於oledb之上的程式。呼叫ado時,首先傳送給oledb,然後再傳送給odbc層。可以直接連線到oledb層,這麼做後,將提高伺服器端的效能。怎麼直接連線到oledb呢?

如果使用sqlserver7,使用下面的**做為連線字串:

strconnstring="dsn='';driver=;"&_

"uid=myuid;pwd=mypwd;"&_

"database=mydb;server=myserver;"

最重要的引數就是「driver=」部分。如果你想繞過odbc而使用oledb來訪問sqlserver,使用下面的語法:

strconnstring="provider=sqloledb.1;password=mypassword;"&_

"persistsecurityinfo=true;userid=myuid;"&_

"initialcatalog=mydbname;"&_

"datasource=myserver;connecttimeout=15"

為什麼這很重要?

現在你可能奇怪為什麼學習這種新的連線方法很關鍵?為什麼不使用標準的dsn或者系統dsn方法?好,根據wrox在他們的ado2.0程式設計師參考書籍中所做的測試,如果使用oledb連線,要比使用dsn或者dsn-less連線,有以下的效能提高表現:

效能比較:

這個結論在wrox的ado2.0程式設計師參考發表。時間是以毫秒為單位,重複1,000個記錄的時間是以伺服器油標的方式計算的。

Java java爬蟲獲取動態網頁的資料

前段時間一直在研究爬蟲,抓取網路上的特定的資料,如果只是靜態網頁就是再簡單不過了,直接使用jsoup document doc jsoup.connect url timeout 2000 get 獲取到document然後就想幹嘛就幹嘛了,但是一旦碰到一些動態生成的 就不行了,由於資料是網頁載入完...

動態網頁中隱藏url引數傳遞的方法

做過 開發的朋友肯定知道,我們在做動態 的時候往往會在各個頁面之間傳遞引數,而這些引數的名稱和值都會在url位址列中被暴露出來,有的時候引數的名稱可能就是資料庫中某個欄位的名稱,這樣一方面不安全,另一方面也不便於搜尋引擎的收錄,有的時候還有可能由於引數中含有中文而導致某些瀏覽器會出錯 我發現在fir...

由淺入深學習動態網頁製作PHP的程式設計與應用 三)

第三章 運算子 下面我分別看一下php的算術 字串 邏輯與比較等運算子。1 算術運算子 a b 加 a加上 b vad站長資訊 a b 減 a減去 b vad站長資訊 a b 乘 a乘以 b vad站長資訊 a b 除 a除以 b vad站長資訊 a b 取模 a除以 b的餘數 如果兩個運算元都是整...