成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Sybase數據庫死鎖的應對策略

數據庫
Sybase數據庫死鎖的發生對系統的性能和吞吐量都有重要影響,本文介紹一種處理解決這種死鎖的方法,供您參考。

Sybase數據庫死鎖是常見的問題,下面就為您詳細分析Sybase數據庫死鎖的原因,并給出Sybase數據庫死鎖的解決方法,希望對您能有所啟迪。

Sybase數據庫死鎖的發生對系統的性能和吞吐量都有重要影響,經檢測發現,管理信息系統的死鎖主要是因為兩個或多個線程(登錄)搶占同一表數據資源。引起長時間搶占同一資源不是因為我們需要處理的事務太復雜,時間太長,而往往是因為我們在前端應用程序對數據庫作操作時忘了提交.本文介紹一種處理解決這種死鎖的方法。

Sybase封鎖原理

數據共享與數據一致性是一對不可調和的矛盾,為了達到數據共享與數據一致,必須進行并發控制。并發控制的任務就是為了避免共享沖突而引起的數據不一致。Sybase SQL Server并發控制的方法是加鎖機制(LOCKING).

鎖的類型 可申請的鎖
已有的鎖
 S
 U
 X
 
S
 ∨
 ∨
 ×
 
U
 ∨
 ×
 ×
 
X
 ×
 ×
 ×
 
Sybase SQL Server有三種封鎖類型:排它鎖(exclusive lock,簡稱X鎖);共享鎖(share lock,簡稱S鎖);更新鎖(update lock,簡稱U鎖)。這三種鎖的相容矩陣表如下:
×:表示不兼容。∨:表示兼容。 Sybase SQL Server是自動決定加鎖類型的。一般來說,讀(SELECT)操作使用S鎖,寫(UPDATE,INSERT和delete)操作使用X鎖。U鎖是建立在頁級上的,它在一個更新操作開始時獲得,當要修改這些頁時,U鎖會升級為X鎖。

Sybase數據庫死鎖的力度
SQL Server有兩級鎖:頁鎖和表鎖。通常頁鎖比表鎖的限制更少(或更小)。頁鎖對本頁的所有行進行鎖定,而表鎖則鎖定整個表。為了減小用戶間的數據爭用和改進并發性,SQL Server試圖盡可能地使用頁鎖。
當SQL Server決定一個語句將訪問整個表或表的大多數頁時,它用表鎖來提供更有效的鎖定。鎖定策略直接受查詢方案約束,如果update或delete語句沒有可用的索引,它就執行表掃描或請求一個表鎖定。如果update或delete語句使用了索引,它就通過請求頁鎖來開始,如果影響到大多數行,它就要請求表鎖。一旦一個語句積累的頁鎖超過鎖提升閾值,SQL Server就設法給該對象分配一個表鎖。如果成功了,頁鎖就不再必要了,因此被釋放。表鎖也在頁層提供避免鎖沖突的方法。對于有些命令SQL Server自動使用表鎖。

Sybase數據庫死鎖的狀態
SQL SERVER加鎖有三種狀態:
1)意向鎖(intend)—是一種表級鎖,它表示在一個數據頁上獲得一個S或X鎖的意向。意向鎖可以防止其他事務在該數據頁的表上獲得排它鎖。
2)阻塞(blocking,簡記blk)—它表明目前加鎖進程的狀態,帶有blk后綴的鎖說明該進程目前正阻塞另一個需要獲得鎖的進程,只有這一進程完成,其他進程才可以進行。
3)需求鎖(demand)—表示此時該進程企圖得到一個排它鎖。它可以防止在這一表或頁上加過多的S鎖,她表示某一事務是下一個去鎖定該表和該頁的事務。
需求鎖是一個內部過程,因此用sp_lock是無法看見的。

死鎖DEADLOCK
簡單地說,有兩個用戶進程,每個進程都在一個單獨的頁或表上有一個鎖,而且每個進程都想在對方進程的頁或表上請求不相容鎖時就會發生“死鎖”。在這種情況下,***個進程在等待另一進程釋放鎖,但另一進程要等到***個進程的對象釋放時才會釋放自己的鎖。
SQL Server檢查是否死鎖,并終止事務中CPU時間積累最小的用戶(即***進入的用戶)。SQL Server回滾該用戶的事務,并用消息號1205通知有此死鎖行為的應用程序,然后允許其他用戶進程繼續進行。
在多用戶情形下,每個用戶的應用程序都應檢查每個修改數據的事務是否有1205號消息,以此確定是否有可能死鎖。消息號1025表示該用戶的事務因死鎖而終止并被回滾。應用程序必須重新開始這個事務處理。

查找死鎖原因

既然管理信息系統長時間死鎖的原因是由于我們提交或者是提交不當,那么我們就可以通過修改程序防止出現死鎖。定位死鎖出錯處主要經過以下三步:
1)在死鎖出現時,用SP_WHO,SP_LOCK獲得進程與鎖的活動情況。
2)結合庫表sysobjects和相應的操作員信息表查出被鎖的庫表與鎖住別人的操作員。
3)根據鎖定的庫表與操作員的崗位,可以估計出程序大約出錯處。詢問操作員在死鎖時執行的具體操作即可完全定位出錯處。***查找程序并修改之。

用sp_who獲取關于被阻礙進程的信息
系統過程sp_who給出系統進程的報告。如果用戶的命令正被另一進程保持的鎖阻礙,則:
◆status列顯示“lock sleep”。
◆blk列顯示保持該鎖或這些鎖的進程標識,即被誰鎖定了。
◆loginame列顯示登錄操作員。結合相應的操作員信息表,便可知道操作員是誰。
Fid spid status loginame origname blk dbname cmd
0 1 lock sleep lm lm 18 QJYD SELECT
0 2 sleeping NULL NULL 0 master NETWORK HANDLER
0 3 sleeping NULL NULL 0 master NETWORK HANDLER
……

用sp_lock瀏覽鎖
要得到關于當前SQL Server上保持的鎖的報告,可用系統過程sp_lock [spid1[,spid2]],spid1,spid2是表master.dbo.sysprocesses中的sql server進程id號,用sp_who可以得到鎖定與被鎖定的spid號:
◆locktype列顯示加鎖的類型和封鎖的粒度,有些鎖的后綴還帶有blk表明鎖的狀態。前綴表明鎖的類型:Sh—共享鎖,Ex—排它鎖或更新鎖,中間表明鎖死在表上(”table”或’intent’)還是在頁上(page). 后綴“blk”表明該進程正在障礙另一個需要請求鎖的進程。一旦正在障礙的進程一結束,其他進程就向前移動。“demand”后綴表明當前共享鎖一釋放, 該進程就申請互斥鎖。
◆table_id列顯示表的id號,結合sysobjects即可查出被封鎖的表名。
執行該進程后屏幕顯示

Fid Spid locktype table_id page row dbname Class context
0 1 Sh_intent 678293476 0 0 QJYD Non Cursor LockFam dur
0 1 Sh_page 678293476 31764 0 QJYD Non Cursor Lock
0 18 Ex_intent 9767092 0 0 QJYD Non Cursor LockFam dur
……

定位出錯處
根據sp_who與sp_lock命令的結果,結合sysobjects和相應的操作員信息表。得到操作員及其在死鎖時所操作的庫表,便大約可以知道應用程序的出錯處,再詢問操作員在死鎖時執行什么操作以進一步認證。***查找程序并修正之。
 

 

 

【編輯推薦】

sybase分頁存儲過程的實現

簡單商討Oracle Sybase數據庫

Sybase數據庫修復的兩種情況

Sybase數據災難方案淺析

.NET連接Sybase數據庫的幾種方法

責任編輯:段燃 來源: 互聯網
相關推薦

2017-04-27 20:45:48

爬蟲反爬蟲

2010-09-27 13:33:26

JVM異常

2013-12-16 11:18:42

多核

2021-12-31 16:10:46

穩定幣數字貨幣貨幣

2023-12-10 14:24:41

緩存Go語言

2012-10-09 15:50:19

IPv6

2021-02-26 10:51:18

云安全云計算網絡安全

2024-01-29 10:34:37

Java編程

2018-03-14 09:00:16

數據數據中心策略

2011-05-25 19:53:45

SEO

2024-07-29 00:01:00

RabbitMQ消息堆積

2015-10-30 15:05:08

Sybase數據庫安全

2011-05-24 17:47:40

2014-01-16 09:56:26

IPv6商用部署策略

2011-11-29 13:45:36

思科三網融合

2011-08-25 11:08:21

Sybase數據庫

2023-10-18 14:14:59

數字化轉型

2015-01-12 13:20:16

數據中心遷移

2011-05-24 10:02:47

2014-06-04 17:35:12

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久综合 | 午夜精品久久久久久久久久久久 | 91精品国产欧美一区二区 | 精品伊人 | 中文字幕亚洲精品 | 91网站在线看 | 日韩一区二区不卡 | 欧美日韩国产一区二区三区不卡 | 亚洲成人观看 | 91色视频在线观看 | 不卡一区二区三区四区 | 亚洲精品国产电影 | 成人免费视频在线观看 | 国产视频一区在线观看 | 精品免费看 | 亚洲精品九九 | 日韩欧美在线一区 | 久亚州在线播放 | 91国内精品久久 | 欧美国产视频 | 久久免费精彩视频 | 99精品久久 | 亚洲91 | 欧美日韩大陆 | 美女久久久久久久 | 中文字幕成人av | 国产 日韩 欧美 中文 在线播放 | 亚洲精品9999久久久久 | 男女午夜免费视频 | 99久久婷婷国产综合精品电影 | 免费成人在线网 | 欧美日韩免费一区二区三区 | 涩爱av一区二区三区 | 国产精品一区在线播放 | 久久精品美女 | wwwxxx日本在线观看 | 97视频免费 | 国产精品永久免费 | 久久大陆| 一区二区三区视频在线观看 | 91社影院在线观看 |