select查詢語句是不會加鎖的,但是select .......for update除了有查詢的作用外,還會加鎖呢,而且它是悲觀鎖。那麼它加的是行鎖還是表鎖,這就要看是不是用了索引/主鍵。沒用索引/主鍵的話就是表鎖,否則就是是行鎖。
驗證:
建表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
需要關閉自動提交,通過set @@autocommit=0; 設置爲手動提交。0代表手動提交,1代表自動提交