VB的事務處理包括以BeginTrans開始,以CommitTrans或Rollback結尾的多條數據庫操作指令。事務處理除了能很好的保證數據庫的完整性以外,同時能大大提高數據庫批量更新的效率。這是因為如果數據庫更新操作沒有使用事務處理,則每次Update操作都會引起數據庫寫盤一次。使用事務處理后,更新只在內存緩沖區內進行,執行CommitTrans時才將所有修改一次寫回到磁盤中。使用事務處理要注意一下幾點:
(1)事務處理要有很完善的錯誤檢查機制;
(2)因為VB在事務處理結束前對數據庫使用了頁面鎖.所以在多用戶環境中,如果事務被掛起,則其他用戶將無法訪問上鎖的數據。
2.盡量使用代碼分解Select檢索操作
使用Select進行數據庫操作固然簡單易用,但如果將一些檢索操作分解為等價的手工檢索代碼,則對數據庫的檢索速度將大大加快.分解的基本方法是對檢索關鍵字段進行索引,利用Seek方法定位后,根據索引的數據庫已經排序的特點,進行遍歷查找.對于遍歷范圍不是很寬時,這種方法能幾十倍的提高數據庫的訪問速度.例如:Select * from person where vol= '123' and birth= #11-02-73# 分解成下面的操作后,訪問速度可大大提高:
?1
Table.Index
=
?
"
vol
"
Table.Seek?
"
=
"
,
"
123
"
if
?
not
?table.nomatch?
then
?
?2
while
?
not
?table.eof?
?3
if
?table(
"
vol
"
)
=
"
123
"
?
then
?
?4
table.movelast?
?5
else
?
if
?table(
"
Birth
"
)
=
?#
11
-
02
-
73
#?
then
?
?6
'
找到記錄?
?7
end
?
if
?
?8
table.movenext?
?9
wendend?
if
??
3.使用attach綁定數據庫表
當使用ODBC連接MS SQL Server,Oracle和Sysbase之類的數據庫服務器時,我們可以通過MS Acess的attach功能將服務器上的表綁定到MS Acess數據庫中,因為MS Acess數據庫能緩存數據庫服務器上表的結構,當我們訪問ODBC數據源時能提高系統的訪問性能。
4.使用dbSQLPassThrough選項
連接MS SQL Server, Oracle和Sysbase數據庫服務器時,使用dbSQLPassThrough選項可將命令直接發送給數據庫服務器,從而減少中間件對命令的檢查和解釋,提高了數據庫的訪問性能。下例使用存儲過程建立Dynaset:
dim mydb as databasedim myds as dynasetset mydb=opendatabase(..........)'打開數據庫set myds=mydb.openrecordset("name",dbOpendynaset,dbSQLPassThrough,...)
使用dbSQLPassThrough的缺點是返回的記錄集是只讀的。
5.正確使用數據庫訪問對象Table.
支持SEEK命令和索引.兩者配合能最快的找到紀錄.筆者曾經做過速度比較試驗,都是檢索10萬個記錄Table 用時3.5秒Dynaset 用時9秒Snapshot用時10秒.支持讀寫操作.不支持SORT和FILTER,必須使用Index代替.對應于數據庫中的物理表,增,刪,改會直接影響數據庫表。
Dynaset.最靈活的數據庫對象.支持讀寫操作,是記錄的動態子集.在ODBC中,寫操作需要設定唯一性索引.支持SORT和FILTER.使用JOIN命令關聯多個表時,只能使用Dynaset。
Snapshot.只能讀不能寫,不能加鎖.不支持事務處理.不支持Edit,Addnew和Update方法
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
