賽迪網 > IT技術 數據庫 > 精彩更新
  IT資訊搜索
 
IT產品搜索
[程式開發][網管世界][網路安全][數據庫技術]
[作業系統][嘉賓聊天·線上訪談][活動集錦]
[精彩專題][Symantec專區][訂閱IT技術週刊]
[開發論壇][網管論壇][安全論壇][數據庫論壇]
[作業系統論壇][Sybase專區][IBM dW技術專區]
[病毒求助][病毒與漏洞播報][文檔·源碼下載]

講解設計應用程式時避免阻塞的八個準則 (1)

發佈時間:2008.07.18 04:50     來源:賽迪網    作者:安娜

【賽迪網-IT技術報道】當來自應用程式的第一個連接控制鎖而第二個連接需要相衝突的鎖類型時,將發生阻塞。其結果是強制第二個連接等待,而在第一個連接上阻塞。不管是來自同一應用程式還是另外一台客戶機上單獨的應用程式,一個連接都可以阻塞另一個連接。

說明一些需要鎖保護的操作可能不明顯,例如系統目錄表和索引上的鎖。

大多數阻塞問題的發生是因為一個進程式控制制鎖的時間過長,導致阻塞的進程鏈都在其他進程上等待鎖。

常見的阻塞情形包括:

◆提交執行時間長的查詢。

長時間運行的查詢會阻塞其他查詢。例如,影響很多行的 DELETE 或 UPDATE 操作能獲取很多鎖,這些鎖不論是否升級到表鎖都阻塞其他查詢。因此,一般不要將長時間運行的決策支援查詢和連線事務處理 (OLTP) 查詢混在一起。解決方案是想辦法優化查詢,如更改索引、將大的複雜查詢分成簡單的查詢或在空閒時間或單獨的電腦上運行查詢。

查詢運行時間長並由此導致阻塞的一個原因是這些查詢不適當地使用遊標。遊標可能是在結果集中瀏覽的便利方法,但使用遊標可能比使用面向集合的查詢慢。

◆取消沒有提交或回滾的查詢。

如果應用程式取消查詢(如使用開放式數據庫連接 (ODBC) sqlcancel 函數)但沒有同時發出所需數目的 ROLLBACK 和 COMMIT 語句,則會發生這種情況。取消查詢並不自動回滾或提交事務。取消查詢後,所有在事務內獲取的鎖都將保留。應用程式必須提交或回滾已取消的事務,從而正確地管理事務嵌套級。

◆應用程式沒處理完所有結果。

將查詢發送到伺服器後,所有應用程式必須立即完成提取所有結果行。如果應用程式沒有提取所有結果行,鎖可能會留在表上而阻塞其他用戶。如果使用的應用程式將 Transact-SQL 語句透明地提交給伺服器,則該應用程式必須提取所有結果行。如果應用程式沒這樣做(如果無法配置它執行此操作),則可能無法解決阻塞問題。為避免此問題,可以將這些應用程式限制在報表或決策支援數據庫上。

◆分佈式客戶端/伺服器死鎖。

與常規死鎖不同,分佈式死鎖無法由 Microsoft® SQL Server™ 2000 自動檢測到。如果應用程式打開多個與 SQL Server 的連接並異步提交查詢,則可能會發生分佈式客戶端/伺服器死鎖。

例如,一個客戶端應用程式線程有兩個開放式連接。該線程異步啟動事務並在第一個連接上發出查詢。應用程式隨後啟動其他事務,在另一個連接上發出查詢並等待結果。當 SQL Server 返回其中一個連接的結果時,應用程式開始處理這些結果。應用程式就這樣處理結果,直到生成結果的查詢被另一個連接上執行的查詢阻塞而導致再沒有可用的結果為止。此時第一個連接阻塞,無限期等待處理更多的結果。第二個連接沒有在鎖上阻塞,但仍試圖將結果返回給應用程式。然而,由於應用程式阻塞而在第一個連接上等待結果,第二個連接的結果將得不到處理。

若要避免此問題,請執行下列任一操作:

●對每個查詢使用查詢超時。

●對每個查詢使用鎖定超時。

●使用綁定連接。

1 2 下一頁>>


[ 發表評論 ] 字體[  ] [ 列印 ] [ 進入博客 ] [ 進入論壇 ]  [ 推薦給朋友 ]
  相關文章
· 細化解析:教你快速的了解如何來避免阻塞 (10-22) · 避免阻塞的五個好方法 (09-12)
· 工作或學習當中經常遇到的五種阻塞情況 (09-05) · 解析:教你快速了解避免阻塞的五個方法 (09-05)
· 設計應用程式以避免阻塞的八個基本準則 (09-05) · 快速解析判斷阻塞發生在某張表上的問題 (08-07)
· 檢測解決SQLServer延遲阻塞I/O問題 (11-23) · Linux設備驅動編程之阻塞與非阻塞 (11-02)
  客戶需求反饋表
* 姓  名:
更多資料  了解方案  認識廠商
* 單位名稱:
* 聯繫電話:
* 電子郵件:
  賽迪推薦  
  手機·資費 ·新品·導購·評測·手機資費·寬帶
手機搜索  諾基亞 N73 MOTO Z6
  IT產品 ·筆記本·臺式機·伺服器·列印·投影
IT產品搜索 
  IT技術 ·開發·網管·安全·數據庫·作業系統
  資訊化 ·熱點·專題·訪談·週刊·方案案例
· 資訊化市場百家爭鳴 SaaS深陷爭議“泥潭”
· 提高管理水準 "兩棲"CIO應具備的六大能力
· 國產ITIL運維先行者 四大廠商角力BI市場
· 金融行業GSN專題解決方案 企業網解決方案
  IT博客 ·曾劍秋·項立剛·Java學習·網管
  IT技術論壇 ·開發·網管·安全·數據庫·系統