與沒有數(shù)據(jù)庫的網(wǎng)站相比,數(shù)據(jù)庫的存取會降低你的系統(tǒng)性能。但是大多數(shù)情況下,網(wǎng)站和數(shù)據(jù)庫有密不可分的關(guān)系,正是數(shù)據(jù)庫給站點(diǎn)提供了大容量、多樣性、個性化等特色,并實(shí)現(xiàn)了很多特殊的功能。
與沒有數(shù)據(jù)庫的網(wǎng)站相比,數(shù)據(jù)庫的存取會降低你的系統(tǒng)性能。但是大多數(shù)情況下,網(wǎng)站和數(shù)據(jù)庫有密不可分的關(guān)系,正是數(shù)據(jù)庫給站點(diǎn)提供了大容量、多樣性、個性化等特色,并實(shí)現(xiàn)了很多特殊的功能。1.不要忘記給數(shù)據(jù)庫做索引。合理的索引能立即顯著地提高數(shù)據(jù)庫整個系統(tǒng)的性能??梢詤⒖加嘘P(guān)SQL性能調(diào)試書籍,學(xué)會根據(jù)所需查詢方式合理制作索引和根據(jù)索引方式改進(jìn)查詢語句。
2.在適當(dāng)?shù)那闆r下,盡可能的用存儲過程而不是SQL查詢,因?yàn)榍罢咭呀?jīng)過了預(yù)編譯,運(yùn)行速度更快。同時讓數(shù)據(jù)庫僅僅返回你所需要的那些數(shù)據(jù),而不是返回大量數(shù)據(jù)再讓ASP程序過濾??傊浞趾陀行У匕l(fā)揮數(shù)據(jù)庫的強(qiáng)大功能,讓它按照我們的要求反饋給我們最合適和最精練的信息。
3.在可能情況下我們應(yīng)該使用SQL
Server而不是Access。因?yàn)锳ccess僅僅是基于文件的數(shù)據(jù)庫,多用戶性能很差。數(shù)據(jù)庫連接盡量使用OLEDB和非DSN方式,因?yàn)檫@種連接方式有更好的并發(fā)性能。
4.避免使用DAO(Data Access Objects)和RDO(Remote Data Objects)數(shù)據(jù)源,因?yàn)樗麄冎饕獞?yīng)用在單用戶的處理系統(tǒng)里,ADO(ActiveX Data Objects)才是為Web應(yīng)用設(shè)計(jì)的。
5.建立記錄集Rescordset的時候要清晰合理地設(shè)置數(shù)據(jù)游標(biāo)(cursort)和鎖定方式(locktype)。因?yàn)樵诓煌姆绞较?ASP會以不同的方式操縱數(shù)據(jù)庫,其執(zhí)行速度也有很大區(qū)別,尤其在大數(shù)據(jù)量的時候。如果你只想遍歷數(shù)據(jù),那么默認(rèn)游標(biāo)(前進(jìn)、只讀)會帶來最好的性能。
6.當(dāng)你引用ADO變量的時候,會消耗較多的CPU周期。因此,如果在一個ASP頁面中多次引用數(shù)據(jù)庫的字段變量,一個較好的方式是將字段值先放入本地變量,然后可以直接調(diào)用本地變量來計(jì)算和顯示數(shù)據(jù)。
7.緩存ADO
Connection對象也許不是一個好主意。如果一個連接(Connection)對象被存儲在Application對象中而被所有ASP頁面使用,那么所有頁面就會爭著使用這個連接。但是如果連接對象被存儲在Session對象中,就要為每個用戶創(chuàng)建一個數(shù)據(jù)庫連接,這就減小了連接池的作用,并且增大了Web服務(wù)器和數(shù)據(jù)庫服務(wù)器的壓力??梢杂迷诿總€使用ADO的ASP頁創(chuàng)建和釋放ADO對象來替代緩存數(shù)據(jù)庫連接。因?yàn)镮IS內(nèi)建了數(shù)據(jù)庫連接池,所以這種方法非常有效,缺點(diǎn)是每個ASP頁面都需要進(jìn)行一些創(chuàng)建和釋放操作。
8.ASP最強(qiáng)大和主要的用途之一就是對數(shù)據(jù)庫進(jìn)行操作,在數(shù)據(jù)庫操作中我們要注意:不要任意使用“SELECT * ......” 形式的SQL查詢語句。應(yīng)該盡量檢索你所需要的那些字段。比如一個表中有10個字段,但是你只會用到其中的一個字段(name),就該使用“select name from mytable”,而不是用“select * from mytable”。在字段數(shù)比較少的時候,兩者的區(qū)別可能并不明顯,但是當(dāng)一個表中擁有幾十個字段的時候,數(shù)據(jù)庫會多檢索很多你并不需要的數(shù)據(jù)。在這種情況下你最好不要為了節(jié)省打字時間或者害怕查找對應(yīng)字段名稱的麻煩,而要老老實(shí)實(shí)地使用“select id,name,age... from mytable”。
9.及時關(guān)閉打開的記錄集對象以及連接(Connection)對象。記錄集對象和連接對象耗費(fèi)系統(tǒng)資源相當(dāng)大,因此它們的可用數(shù)量是有限的。如果你打開了太多的記錄集對象以及連接對象而最后卻沒有關(guān)閉它們,可能會出現(xiàn)ASP程序剛開始的時候運(yùn)行速度很快,而多運(yùn)行幾遍就越來越慢的現(xiàn)象,甚至導(dǎo)致服務(wù)器死機(jī)。請使用如下方法進(jìn)行關(guān)閉: MyRecordSet.closeSet MyRecordSet=Nothing Set MyConnection=Nothing
10.連接數(shù)據(jù)庫仍然使用ODBC系統(tǒng)或者文件DSN來連接數(shù)據(jù)庫,或者使用很快的OLEDB技術(shù)來連接。使用后者,當(dāng)移動Web文件時,不再需要修改配置。
OLEDB位于應(yīng)用程序與ODBC層之間。在ASP頁面中,ADO就是位于OLEDB之上的程序。調(diào)用ADO時,首先發(fā)送給OLEDB,然后再發(fā)送給ODBC層??梢灾苯舆B接到OLEDB層,這么做后,將提高服務(wù)器端的性能。怎么直接連接到OLEDB呢?
如果使用SQLServer 7,使用下面的代碼做為連接字符串:
strConnString = "DSN='''';DRIVER={SQL SERVER};"
& _ "UID=myuid;PWD=mypwd;"
& _"DATABASE=MyDb;SERVER=MyServer;"
最重要的參數(shù)就是“DRIVER=”部分。如果你想繞過ODBC而使用OLEDB來訪問SQL Server,使用下面的語法:
strConnString
="Provider=SQLOLEDB.1;Password=mypassword;" & _
"Persist Security Info=True;User ID=myuid;" & _
"Initial Catalog=mydbname;" & _
"Data Source=myserver;Connect Timeout=15"
為什么這很重要?
現(xiàn)在你可能奇怪為什么學(xué)習(xí)這種新的連接方法很關(guān)鍵?為什么不使用標(biāo)準(zhǔn)的DSN或者系統(tǒng)DSN方法?好,根據(jù)Wrox在他們的ADO2.0程序員參考書籍中所做的測試,如果使用OLEDB連接,要比使用DSN或者DSN-less連接,有以下的性能提高表現(xiàn):
性能比較:
----------------------------------------------------------------------
SQL
OLEDB DSN
連接時間: 1882
重復(fù)1,000個記錄的時間: 29005400
Access
OLEDB DSN
連接時間: 6299
重復(fù)1,000個記錄的時間: 100950
重慶中技互聯(lián)網(wǎng)信息資訊有限公司
網(wǎng)站建設(shè)事業(yè)部官方網(wǎng):www.aorustv.com
電子商務(wù)建站事業(yè)部咨詢電話:023-67742189
門戶網(wǎng)站品牌加盟推廣電話:023-67742189
7*24小時服務(wù)電話:023-67742189
媒體合作電話:13883323406
投資合作電話:13896068183
QQ及郵件地址 446515345@qq.com
企業(yè)網(wǎng)站建設(shè)解決方案 營銷型網(wǎng)站建設(shè)解決方案 行業(yè)門戶網(wǎng)站建設(shè)解決方案 外貿(mào)網(wǎng)站解建設(shè)決方案 品牌形象網(wǎng)站建設(shè)解決方案 購物商城網(wǎng)站建設(shè)解決方案 政府網(wǎng)站建設(shè)解決方案 手機(jī)網(wǎng)站建設(shè)解決方案 教育培訓(xùn)網(wǎng)站建設(shè)解決方案 珠寶高端奢飾品網(wǎng)站建設(shè)解決方案 房地產(chǎn)、地產(chǎn)項(xiàng)目網(wǎng)站建設(shè)解決方案 集團(tuán)、上市企業(yè)網(wǎng)站建設(shè)解決方案 數(shù)碼、電子產(chǎn)品網(wǎng)站建設(shè)解決方案 美容、化妝品行業(yè)網(wǎng)站建設(shè)解決方案
10年專業(yè)互聯(lián)網(wǎng)服務(wù)經(jīng)驗(yàn) 重慶最專業(yè)網(wǎng)站團(tuán)隊(duì) 資深行業(yè)分析策劃 B2C營銷型網(wǎng)站建設(shè)領(lǐng)先者 最前沿視覺設(shè)計(jì)、研發(fā)能力 時刻最新技術(shù)領(lǐng)先研發(fā)能力 具有完備的項(xiàng)目管理 完善的售后服務(wù)體系 深厚的網(wǎng)絡(luò)運(yùn)營經(jīng)驗(yàn)
中技互聯(lián)一直秉承專業(yè)、誠信、服務(wù)、進(jìn)取的價值觀,堅(jiān)持優(yōu)秀的商業(yè)道德,以用戶最終價值為導(dǎo)向,向用戶提供優(yōu)質(zhì)產(chǎn)品和優(yōu)質(zhì)服務(wù),從而贏得了用戶的信賴。始終以不懈的努力、更高的目標(biāo)來要求自己。
主營業(yè)務(wù):網(wǎng)站建設(shè) | 重慶網(wǎng)站建設(shè) | 重慶網(wǎng)站設(shè)計(jì) | 重慶網(wǎng)站制作 | 重慶網(wǎng)頁設(shè)計(jì) | 重慶網(wǎng)站開發(fā)