2015-07-03 36 views
0

MySQL社區服務器,服務器版本:5.6.24在引擎爲InnoDB的表中,最壞情況下會鎖定多少行?

mysql> show create table user\G 
*************************** 1. row *************************** 
     Table: user 
Create Table: CREATE TABLE `user` (
    `number` int(11) DEFAULT NULL, 
    KEY `idx_number` (`number`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
1 row in set (0.00 sec) 

mysql> SELECT * FROM user; 
+--------+ 
| number | 
+--------+ 
|  10 | 
|  11 | 
|  12 | 
|  13 | 
|  14 | 
|  14 | 
+--------+ 
6 rows in set (0.00 sec) 

user的引擎是InnoDB的。

問題1:

當執行以下語句:

select * from user where number = 10 for update; 

,多少行會被鎖定在最壞的情況?多行?

問題2:

當執行以下語句:

select * from user where number = 14 for update; 

,多少行會被鎖定在最壞的情況?兩排以上?

回答

0

作爲字段在INNODB

的情況下

回答1

只有1行鎖定索引左右。

答案2個

只有2行鎖定。

0

由於該字段被索引,所以在第一種情況下,只有單行將被阻止,並且在第二種情況下爲2行,因爲innodb使用基於索引的行級鎖定。

相關問題