1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        面試官:select......for update會(huì)鎖表還是鎖行?

        共 1226字,需瀏覽 3分鐘

         ·

        2021-10-25 23:52

        程序員的成長(zhǎng)之路
        互聯(lián)網(wǎng)/程序員/技術(shù)/資料共享?
        關(guān)注


        閱讀本文大概需要 2.8 分鐘。

        來(lái)自:blog.csdn.net/qq_42956376/article/details/109544539

        select查詢(xún)語(yǔ)句是不會(huì)加鎖的,但是select .......for update除了有查詢(xún)的作用外,還會(huì)加鎖呢,而且它是悲觀鎖。
        那么它加的是行鎖還是表鎖,這就要看是不是用了索引/主鍵。
        沒(méi)用索引/主鍵的話(huà)就是表鎖,否則就是是行鎖。

        驗(yàn)證:

        建表sql

        //id為主鍵??
        //name?為唯一索引
        CREATE?TABLE?`user`?(
        ?`id`?INT?(?11?)?NOT?NULL?AUTO_INCREMENT,
        ?`name`?VARCHAR?(?255?)?DEFAULT?NULL,
        ?`age`?INT?(?11?)?DEFAULT?NULL,
        ????`code`?VARCHAR?(?255?)?DEFAULT?NULL,
        ?PRIMARY?KEY?(?`id`?),
        ????KEY?`idx_age`?(?`age`?)?USING?BTREE?
        )?ENGINE?=?INNODB?AUTO_INCREMENT?=?1570068?DEFAULT?CHARSET?=?utf8

        需要關(guān)閉自動(dòng)提交,通過(guò)set @@autocommit=0;?設(shè)置為手動(dòng)提交。0代表手動(dòng)提交,1代表自動(dòng)提交。

        結(jié)合一下實(shí)例驗(yàn)證

        實(shí)例1:
        使用主鍵id為條件去查詢(xún),然后開(kāi)啟另一個(gè)事務(wù)去更新數(shù)據(jù),更新被阻塞,加鎖了,鎖定要查詢(xún)的id為1的行數(shù)據(jù)。
        • 圖一為第一個(gè)事務(wù),并且沒(méi)有提交事務(wù)
        • 圖二為第二個(gè)事務(wù),去更新數(shù)據(jù),被阻塞了
        • 圖三為第二個(gè)事務(wù),長(zhǎng)時(shí)間拿不到鎖報(bào)錯(cuò)。
        實(shí)例2:
        我們?cè)陂_(kāi)啟一個(gè)事務(wù)對(duì)另一條id為2的數(shù)據(jù)進(jìn)行更新,
        實(shí)例3(索引):
        一開(kāi)始的創(chuàng)建表就age創(chuàng)建了唯一索引。
        實(shí)例4:
        使用普通的字段code去操作
        另一個(gè)事務(wù)我去更新另外一條數(shù)據(jù),如果我更新成功了,就是鎖行,失敗了就是鎖表。

        結(jié)果:

        如果查詢(xún)條件用了索引/主鍵,那么select ..... for update就會(huì)進(jìn)行行鎖。
        如果是普通字段(沒(méi)有索引/主鍵),那么select ..... for update就會(huì)進(jìn)行鎖表。

        推薦閱讀:

        4 種主流的 API 架構(gòu)風(fēng)格對(duì)比

        22歲何同學(xué)自制硬核AirDesk!做了蘋(píng)果放棄的產(chǎn)品,稚暉君點(diǎn)贊

        最近面試BAT,整理一份面試資料《Java面試BATJ通關(guān)手冊(cè)》,覆蓋了Java核心技術(shù)、JVM、Java并發(fā)、SSM、微服務(wù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等等。

        獲取方式:點(diǎn)個(gè)「在看」,點(diǎn)擊上方小卡片,進(jìn)入公眾號(hào)后回復(fù)「面試題」領(lǐng)取,更多內(nèi)容陸續(xù)奉上。

        朕已閱?

        瀏覽 70
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            伊人啊啊啊 | 国产剧情一区二区三区 | 999成人电影 | 欧美精品aaa | 淫荡熟女视频 | 色哟哟入口国产精品 | 香蕉免费在线视频 | 成人无码在线观看视频 | 成人爽a毛片免费啪啪动漫 | 久久精品国产乱子伦多人ol集 |