<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    上善若水
    In general the OO style is to use a lot of little objects with a lot of little methods that give us a lot of plug points for overriding and variation. To do is to be -Nietzsche, To bei is to do -Kant, Do be do be do -Sinatra
    posts - 146,comments - 147,trackbacks - 0
    因為項目的數據更新頻率很高,導致經常出現死鎖的問題。感覺以下遇到的一種情況比較典型,也比較tricky,計之。

    問題描述:
    如以下兩條非常簡單的SQL語句,它們共同組成了一個Transaction,那么在多線程高頻率執(zhí)行時就會引起死鎖問題(當然這里要考慮鎖的級別問題,一般多類似這種系統(tǒng)都會選擇行鎖,那么以下引起死鎖的條件是兩條語句都對同一行操作):
    select <column1> from <table> where <column2> = ? 
    update <table> set <column1> = %d where <column2> = '%s'

    問題分析:
    select語句需要“Shared Lock”,因而多個線程可以同時進入,而update需要“Exclusive Lock”,當兩個線程同時執(zhí)行了select語句,而獲得了“Shared Lock”,而他們在接下來執(zhí)行update語句時,都需要獲得“Exclusive Lock”而產生競爭,導致死鎖。

    解決方案1:
    互換他們的順序,這樣,在第一次執(zhí)行update語句時,他們會競爭"Exclusive Lock"而引起沒有得到“Exclusive Lock”的線程等待:
    1, update <table> set <column2> = <column2> + <some value> where <column1> = '%s' 
    2. select <column1> from <table> where <column2> = ? 
    3. <column1> - <some value> to get the old <column1> value.

    解決方案2:
    采用“Hold Lock”方式,即在所有操作之前做一個dummy的update操作,這樣可以保證在進Transaction之前需要先獲得一個“Exclusive Lock”

     

    posted on 2013-10-17 20:49 DLevin 閱讀(4358) 評論(1)  編輯  收藏 所屬分類: Database

    FeedBack:
    # re: Transaction中SQL的順序引起的死鎖
    2013-10-22 06:04 | Jacklondon
    主站蜘蛛池模板: 免费无码又爽又刺激高潮的视频| 亚洲乱码中文字幕综合| 免费看又黄又爽又猛的视频软件| 国产乱辈通伦影片在线播放亚洲| 人妻丰满熟妇无码区免费 | 国产亚洲人成网站观看| 在线精品一卡乱码免费| 黄色三级三级三级免费看| 亚洲AV福利天堂一区二区三| 午夜小视频免费观看| 99re6在线精品免费观看| 99久久国产亚洲综合精品| 久久亚洲国产精品五月天婷| 91在线视频免费看| 中文字幕免费在线看线人动作大片 | 三年片在线观看免费西瓜视频| 亚洲一区二区三区在线网站| 亚洲一级特黄无码片| 特级做A爰片毛片免费69| 巨胸喷奶水www永久免费 | 人成午夜免费大片在线观看| 亚洲国产精品久久网午夜| 亚洲一区视频在线播放| 成人免费无码大片a毛片| 99热在线免费观看| 一级一片免费视频播放| 亚洲 日韩经典 中文字幕| 亚洲av无码一区二区三区乱子伦| 免费鲁丝片一级在线观看| 最近2019中文字幕免费大全5 | 免费视频中文字幕| 巨波霸乳在线永久免费视频 | 亚洲三级在线视频| 久久精品国产亚洲麻豆| 亚洲高清成人一区二区三区| 大学生美女毛片免费视频| 国产黄色免费网站| 久久久99精品免费观看| 中文字幕免费在线看电影大全 | 亚洲AV网站在线观看| 性xxxx视频播放免费|