亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

項目中死鎖的解決經歷

2024-07-21 02:50:43
字體:
來源:轉載
供稿:網友
項目中死鎖的解決經歷

很久沒有寫博客了,這里面的原因有很多。最近的一個項目由于客戶明確提出要做下性能壓力測試,使用的工具就是VS自帶的壓力測試工具。以前其它項目做壓力測試后反饋的其中一個重要問題就是數據庫的死鎖。沒想到我們這個項目測試時死鎖同樣的發生了,我之前的項目由于很少參與壓力測試,基本上也不會去了解死鎖,以及死鎖如何解決的問題。

既然有了這個需求,那么要想解決死鎖就需要對死鎖的相關知識有一定的了解,對于非DBA的來講并不需要了解的特別深,知道基本概念以及常見分析方法即可,畢竟我們不靠這個吃飯,沒必要達到特別細的境界。這里我找到了一個微軟MVP寫的一系統博客,對我理解死鎖非常重要,這里分享下目前我為解決死鎖所采用過的方案。

壓力測試的業務場景:

1.模擬用戶提交申請

a) 涉及到的表

i.申請主表,一次申請生成一條數據。

ii. 申請的醫生明細,一次申請包含多個醫生,一個申請包含100個醫生

iii. 單個醫生明細,每個醫生一條明細數據

綜上所述一條申請的創建,需要插入201條數據。

b) 申請邏輯

i. 首先調用保存

ii. 然后執行提交邏輯

各種邏輯驗證,這是歷史原因造成的(一個維護了幾年的項目代碼邏輯的混亂是難以想象的),總是在提交數據時做雙重較驗 ,比如數據是否有重復行的邏輯,這里會反復讀取申請醫生表以及醫生明細這兩個申請明細子表。這也是產生死鎖的主要原因,此場景已經滿足了同時讀取以及修改同一表的情況。除此還會往其它表中插入數據,比如一些狀態跟蹤信息,發郵件等。

至于為什么被分割成兩個邏輯來處理這原本是同一動作的需求,已經法考正最初的設計者了,這些邏輯包含各種EntityFramwork的查詢寫法,很難做有效的優化。

2.壓力設置

a)并發8個用戶

b)每1分鐘增加5個用戶

曾經學過的方法:

  1. 降低事務隔離級別為read uncommitted,結果是并不能消除死鎖,但死鎖的次數有所降低,主要時共享鎖引發的死鎖次數降低了。
  2. 分段分析法,也可以說是排除法。只執行一部分邏輯,比如我們上面的一個申請分為兩步,先保存后提交,只保存的結果是死鎖依舊。
  3. 尋找死鎖跟蹤的方法,試圖尋找死鎖的本質原因。我簡單的按我自己的理解翻譯了一些MVP寫的文章,大家可以參考 。
  • [翻譯]:SQL死鎖-鎖的類型

解釋了SQL 中的各種鎖以及它們之間的兼容性,只有了解了這些才能知道鎖發生的場景,比如知道了共享鎖之間是兼容的就能馬上反應出純讀的操作是不會發生阻塞的

  • [翻譯]:SQL死鎖-鎖與事務級別

事務隔離級別的不同會影響鎖的行為,其中重要說明了降低事務隔離級別并不能消除死鎖

  • [翻譯]:SQL死鎖-阻塞

只有出現了阻塞才會升級成死鎖,所有了解阻塞是第一件事

  • [翻譯]:SQL死鎖-阻塞探測

這篇通過兩種方式說明如何去跟蹤分析死鎖的本質原因,通過SQL自帶的性能監控工且可以很方便的導出出現死鎖的相關信息

  • [翻譯]:SQL死鎖-為什么會出現死鎖

這篇非常詳細的說明了死鎖產生的原理

死鎖文章的重要結論:

大部分死鎖是因為未經過優化的查詢導致的,但因為我們項目在處理這個申請的邏輯中有太多邏輯,不太可能在短時間內進行有效的優化,所以我暫時采用了一個也許不是很好的方案,即想辦法降低排它鎖的相互競爭,說的簡單點說是在程序中通過一定的手段避免并發去調用更新或者插入數據的邏輯。

偏門解決方案:

通過一個取票排隊的隊列去解決數據插入以及更新的并發,原理就是一個線程想要插入數據時,先取票然后排隊,當號輪到它時才能執行數據庫操作,其它線程正在執行時,我們通過自族鎖來實現排隊。這個方法最大程序上解決死鎖的問題,但不推薦這么做,之所以采用這種非常規手段,也是受制于現有程序的邏輯。如果大家在EF中也解決過死鎖問題,可將經理分享給我。

       public   int AddWithSpinLock(ObjectModel.Request svarRequest)        {            bool lockTaken = false;            svarRequest.Ticket = Guid.NewGuid();            var newRequestId = 0;            try            {                _spinlock.Enter(ref lockTaken);                _queue.Enqueue(svarRequest);                while (null != _queue && _queue.Count > 0 && _queue.Peek().Ticket == svarRequest.Ticket)                {                    // do something                    _queue.Dequeue();                    return newRequestId;                }            }            catch (Exception ex)            {                if (lockTaken) _spinlock.Exit(false);                _queue.Dequeue();                throw ex;            }            finally            {                               if (lockTaken) _spinlock.Exit(false);            }            return newRequestId;        }


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品人人做人人爽| xxxxxxxxx欧美| 成人啪啪免费看| 成人在线中文字幕| 成人精品一区二区三区| 深夜成人在线观看| 日本精品一区二区三区在线播放视频| 日韩在线观看免费高清| 精品国产一区二区三区久久| 91免费看片在线| 69久久夜色精品国产7777| 亚洲欧洲在线视频| 欧美在线亚洲一区| 最近2019年日本中文免费字幕| 日韩美女中文字幕| 97视频在线播放| 欧美成人精品激情在线观看| 国产精品免费福利| 91高清视频在线免费观看| 久久精品国产亚洲| 姬川优奈aav一区二区| 伊人久久大香线蕉av一区二区| 欧美亚洲另类制服自拍| 日韩av片永久免费网站| 国产成人精品一区二区| 欧美激情性做爰免费视频| 性欧美暴力猛交69hd| 国产精品成人在线| 国产午夜精品一区理论片飘花| 黑人精品xxx一区| 欧美日韩激情视频8区| 国产精品久久久久久av下载红粉| 久久中文精品视频| 久久久久久久久爱| 欧美一级淫片丝袜脚交| 最新69国产成人精品视频免费| 国产欧美精品一区二区三区-老狼| 97人人爽人人喊人人模波多| 亚洲精品国产电影| 欧美大学生性色视频| 欧美激情视频在线| 欧美性xxxxx极品娇小| 成人国产在线视频| 精品人伦一区二区三区蜜桃网站| 欧美在线视频免费| 亚洲精品国产精品国产自| 欧美精品一区在线播放| 日韩视频免费在线| 亚洲无线码在线一区观看| 性日韩欧美在线视频| 欧美限制级电影在线观看| 国产精品福利久久久| 国产一区二区三区在线播放免费观看| 久久久久亚洲精品| 亚洲福利在线视频| 日韩精品亚洲视频| 国产综合久久久久久| 久久九九国产精品怡红院| 国色天香2019中文字幕在线观看| 欧美影院成年免费版| 日韩欧美国产激情| 热久久免费视频精品| 91tv亚洲精品香蕉国产一区7ujn| 欧美在线视频a| 国产精品伦子伦免费视频| 国产成人精品在线观看| 国产精品免费电影| 九九久久久久久久久激情| 亚洲www视频| 在线中文字幕日韩| 国产日韩在线看片| 久久久久久久国产精品| 国产成人精品一区二区| 亚洲区一区二区| 久久亚洲精品国产亚洲老地址| 欧美成人亚洲成人日韩成人| 亚洲国产成人在线视频| 久久免费视频在线| 欧美激情精品久久久久久免费印度| 91爱爱小视频k| 国产精品成人aaaaa网站| 国产精品夫妻激情| 亚洲人永久免费| 91亚洲va在线va天堂va国| 91久久久亚洲精品| 欧洲成人性视频| 亚洲伊人一本大道中文字幕| 欧美极品欧美精品欧美视频| 国产精品成人一区二区| 国产精品一区二区久久| 日韩精品在线私人| 亚洲精品视频在线观看视频| 亚洲开心激情网| 精品视频www| 亚洲欧美日韩高清| 国产成人a亚洲精品| 神马久久久久久| 色妞一区二区三区| 国产日韩中文字幕在线| 国产精品福利观看| 亚洲高清福利视频| 91色p视频在线| 欧美黑人狂野猛交老妇| 欧美黑人一级爽快片淫片高清| 热99精品只有里视频精品| 久久视频这里只有精品| 亚洲精品短视频| 亚洲欧洲xxxx| 国产视频久久久久久久| 亚洲自拍偷拍视频| 黑人巨大精品欧美一区二区三区| 蜜月aⅴ免费一区二区三区| 欧美成人免费播放| 欧美日韩中文字幕在线| 日本亚洲欧洲色α| 亚洲国内精品视频| 法国裸体一区二区| 97视频在线观看免费高清完整版在线观看| 亚洲自拍另类欧美丝袜| 久久久久久久久中文字幕| 欧美在线观看视频| 亚洲黄色在线看| 日韩精品视频免费专区在线播放| 欧美色xxxx| 日本中文字幕不卡免费| 成人欧美一区二区三区黑人| 在线看日韩av| 欧美激情女人20p| 在线观看久久av| 国产香蕉97碰碰久久人人| 日韩在线视频国产| 精品一区二区三区电影| 久久影视三级福利片| 国产91热爆ts人妖在线| 欧美中文字幕精品| 亚洲第一福利视频| 欧美高清在线视频观看不卡| 91国产精品视频在线| 日韩黄色高清视频| 国产日韩欧美在线观看| 亚洲成人精品久久| 永久免费毛片在线播放不卡| 国产69精品久久久久久| 欧美在线视频免费| 午夜精品一区二区三区在线| 影音先锋欧美在线资源| 最近2019年日本中文免费字幕| 九色91av视频| 亚洲风情亚aⅴ在线发布| 色综合久久88色综合天天看泰| 国产福利视频一区二区| 亚洲第一色中文字幕| 日韩国产一区三区| 欧美激情一区二区三区在线视频观看| 亚洲91精品在线观看| 日韩大陆欧美高清视频区| 欧美激情精品久久久久久变态| 国产福利精品在线| 96pao国产成视频永久免费| 国产精品视频公开费视频| 国产一区二区视频在线观看| 成人在线观看视频网站| 精品久久久久久国产91| 亚洲色图50p|