赞
踩
update t set xx=? where id=?
select * from t where id=?
create table T(c int) engine=InnoDB;
insert into T(c) values(1);
mysql>show variables like 'transaction_isolation';
create table T( ID int primary key,
k int NOT NULL DEFAULT 0,
s varchar(16) NOT NULL DEFAULT '',
index k(k))engine=InnoDB;
CREATE TABLE `t`(
`id` int(11) NOT NULL,
`k` int(111) DEFAULT NULL,
PRIMARY KEY(`id`)
)ENGINE=InnoDB;
insert into t(id,k) values(1,1),(2,2);
id | k |
---|---|
1 | 1 |
2 | 2 |
不同的是,更新后并没有马上提交,在它提交前,事务B的更新语句先发起了。虽然事务C
还没有提交,但是(1,2)这个版本也已经生成了,并且是当前最新版本。事务C没提交,按照两阶段锁协议,这个版本上的写锁还没释放,而事务B是当前读,必须要读最新版本,而且必须要加锁,因此被锁住了。必须等事务C
四方这个锁,才能继续当前读,如下图:select name from CUser where id_card='xxxx';
insert into t(id,k) values(id1,k1),(id2,k2);
select * from t where k in(k1,k2);
CREATE TABLE `t`(
`id` int(11) not null,
`a` int(11) default null,
`b` int(11) default null,
PRIMARY KEY(`id`),
key `a`(`a`),
key `b`(`b`)
)ENGINE=InnoDB;
// 执行查询语句
select * from t where a between 10000 and 20000;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。