自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深度探究SQL Server死鎖的原因

數(shù)據(jù)庫 SQL Server
SQL Server死鎖的原因很多,下文將對死鎖的原因和處理的方法進(jìn)行分類的介紹,希望對您學(xué)習(xí)SQL Server方面能有所幫助。

SQL Server死鎖問題相信大家都遇到過,下面就為您分析SQL Server死鎖問題產(chǎn)生的原因,供您參考學(xué)習(xí)之用。

1 .提交執(zhí)行時間長的查詢。

長時間運(yùn)行的查詢會阻塞其它查詢。例如,影響很多行的DELETE 或UPDATE操作能獲取很多鎖,這些鎖不論是否升級到表鎖都阻塞其它查詢。因此,一般不要將長時間運(yùn)行的決策支持查詢和聯(lián)機(jī)事務(wù)處理 (OLTP)

查詢混在一起。解決方案是想辦法優(yōu)化查詢,如更改索引、將大的復(fù)雜查詢分成簡單的查詢或在空閑時間或單獨(dú)的計算機(jī)上運(yùn)行查詢。

2 .查詢不適當(dāng)?shù)厥褂糜螛?biāo)。游標(biāo)可能是在結(jié)果集中瀏覽的便利方法,但使用游標(biāo)可能比使用面向集合的查詢慢。

3 .取消沒有提交或回滾的查詢。
如果應(yīng)用程序取消查詢(如使用開放式數(shù)據(jù)庫連接 (ODBC) sqlcancel 函數(shù))但沒有同時發(fā)出所需數(shù)目的 ROLLBACK 和 COMMIT
語句,則會發(fā)生這種情況。取消查詢并不自動回滾或提交事務(wù)。取消查詢后,所有在事務(wù)內(nèi)獲取的

4 .應(yīng)用程序沒處理完所有結(jié)果。
將查詢發(fā)送到服務(wù)器后,所有應(yīng)用程序必須立即完成提取所有結(jié)果行。如果應(yīng)用程序沒有提取所有結(jié)果行,鎖可能會留在表上而阻塞其他用戶。如果使用的應(yīng)用程序?qū)?br /> Transact-SQL 語句透明地提交給服務(wù)器,則該應(yīng)用程序必須提取所有結(jié)果行。如果應(yīng)用程序沒這樣做(如果無法配置它執(zhí)行此操作),則可能無法解決阻塞問題。為避免此問題,可以將這些應(yīng)用程序限制在報表或決策支持?jǐn)?shù)據(jù)庫上。

5 .分布式客戶端/服務(wù)器死鎖。
與常規(guī)死鎖不同,分布式死鎖無法由 Microsoft SQL Server? 2000 自動檢測到。如果應(yīng)用程序打開多個與 SQL Server 的連接并異步提交查詢,則可能會發(fā)生分布式客戶端/服務(wù)器死鎖。
例如,一個客戶端應(yīng)用程序線程有兩個開放式連接。該線程異步啟動事務(wù)并在***個連接上發(fā)出查詢。應(yīng)用程序隨后啟動其它事務(wù),在另一個連接上發(fā)出查詢。

避免阻塞方法

1 .對每個查詢使用查詢超時。

2 .對每個查詢使用鎖定超時。有關(guān)更多信息,請參見自定義鎖超時。

3 .使用綁定連接。有關(guān)更多信息,請參見使用綁定連接。

4 .SQL Server 本質(zhì)上是受客戶端應(yīng)用程序操縱的傀儡。客戶端應(yīng)用程序?qū)Ψ?wù)器上獲取的鎖幾乎有完全的控制(并對鎖負(fù)責(zé))。雖然 SQL Server 鎖管理器自動使用鎖保護(hù)事務(wù),但這受客戶端應(yīng)用程序發(fā)出的查詢類型和對結(jié)果的處理方式的直接鼓動。因此,大多數(shù)阻塞問題的解決方案都涉及檢查客戶端應(yīng)用程序。

5 .阻塞問題常要求檢查應(yīng)用程序提交的 SQL 語句本身,以及檢查與連接管理、所有結(jié)果行的處理等有關(guān)的應(yīng)用程序行為本身。如果開發(fā)工具不允許顯式控制連接管理、查詢超時、結(jié)果處理等,阻塞問題可能得不到解決。
 

 

 

 

【編輯推薦】

SQL Server2008版本和組件

四種SQL Server安全性策略

修改SQL Server默認(rèn)安全設(shè)置

SQL Server跨服務(wù)器查詢

SQL Server資源鎖模式大全

 

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-02 10:53:32

SQL Server死

2010-07-07 13:58:25

SQL Server死

2024-12-27 00:00:00

SQL死鎖數(shù)據(jù)庫

2010-07-06 10:08:57

SQL Server

2010-11-09 17:04:20

SQL Server死

2010-09-14 15:34:29

sql server死

2010-11-09 17:02:43

SQL Server死

2011-04-02 17:08:44

SQL Server死鎖

2022-09-05 17:09:55

SQL Server數(shù)據(jù)庫

2014-03-17 10:34:48

SQL Server

2024-01-19 21:55:57

C++編程代碼

2023-08-15 08:26:34

SQL Server查找死鎖

2022-09-27 21:22:02

SQL Server數(shù)據(jù)庫

2010-11-09 16:20:46

SQL Server死

2010-11-09 16:37:25

Sql server死

2022-09-29 19:37:09

SQL Server數(shù)據(jù)庫

2010-08-02 16:51:54

2010-06-30 14:15:08

SQL Server死

2010-07-20 10:27:57

SQL Server

2010-07-20 08:35:54

SQL Server鎖
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號