RC隔离 更新where条件列 没有索引的情况

CREATE TABLE `test100` (
  `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增编号',
  `phoneNo` int(11) ,
  `channelType` int(11) DEFAULT NULL COMMENT '通道识别',
  `status` tinyint(4) NOT NULL COMMENT '短信转态,1.发送成功,2.发送失败,3.发送异常',
  PRIMARY KEY (`sn`)
) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8 COMMENT='短信发送成功记录表'    


mysql>  select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)

mysql> show create table test100;
+---------

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------+
| Table   | Create Table                                                                                                                                                                              

                                                                                                                                                                                                      

                |
+---------

+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--------+
| test100 | CREATE TABLE `test100` (
  `sn` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增编号',
  `phoneNo` int(11) DEFAULT NULL,
  `channelType` int(11) DEFAULT NULL COMMENT '通道识别',
  `status` tinyint(4) NOT NULL COMMENT '短信转态,1.发送成功,2.发送失败,3.发送异常',
  PRIMARY KEY (`sn`)
) ENGINE=InnoDB AUTO_INCREMENT=45220 DEFAULT CHARSET=utf8 COMMENT='短信发送成功记录表'    


Session 1:

mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)

mysql> select @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)

mysql> 
mysql> 
mysql> select * from test100  where phoneNo=10 for update;
+----+---------+-------------+--------+
| sn | phoneNo | channelType | status |
+----+---------+-------------+--------+
| 10 |      10 |           2 |      1 |
+----+---------+-------------+--------+
1 row in set (0.01 sec)

Session 2:

mysql> insert into zjzc.test100(PhoneNo,channelType,status)  values(8,1,1);
Query OK, 1 row affected (0.00 sec)

mysql> delete from  zjzc.test100 where phoneNO=1990;  --hang


mysql> update  zjzc.test100  set phoneNO=1990 where  phoneNO=188;
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0  
更新也可以

原文地址:https://www.cnblogs.com/hzcya1995/p/13350131.html