面試官問(wèn):select......for update會(huì)鎖表還是鎖行?
閱讀本文大概需要 2.8 分鐘。
來(lái)自:blog.csdn.net/qq_42956376/article/details/109544539
select .......for update除了有查詢的作用外,還會(huì)加鎖呢,而且它是悲觀鎖。驗(yàn)證:
//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
set @@autocommit=0; 設(shè)置為手動(dòng)提交。0代表手動(dòng)提交,1代表自動(dòng)提交。
結(jié)合一下實(shí)例驗(yàn)證
圖一為第一個(gè)事務(wù),并且沒(méi)有提交事務(wù) 圖二為第二個(gè)事務(wù),去更新數(shù)據(jù),被阻塞了 圖三為第二個(gè)事務(wù),長(zhǎng)時(shí)間拿不到鎖報(bào)錯(cuò)。













結(jié)果:
select ..... for update就會(huì)進(jìn)行行鎖。select ..... for update就會(huì)進(jìn)行鎖表。推薦閱讀:
面試官:你說(shuō)說(shuō) Mysql 索引失效有哪些場(chǎng)景?
一萬(wàn)字帶你入門 Activiti 工作流,通俗易懂!
互聯(lián)網(wǎng)初中高級(jí)大廠面試題(9個(gè)G) 內(nèi)容包含Java基礎(chǔ)、JavaWeb、MySQL性能優(yōu)化、JVM、鎖、百萬(wàn)并發(fā)、消息隊(duì)列、高性能緩存、反射、Spring全家桶原理、微服務(wù)、Zookeeper......等技術(shù)棧!
?戳閱讀原文領(lǐng)取! 朕已閱
評(píng)論
圖片
表情


