create table "informix".t
(
id integer not null ,
c integer,
d integer
default null,
primary key (id)
) extent size 16 next size 32 lock mode row;
create index "informix".idx_t on "informix".t (c) using btree
in datadbs1;
插入数据:
0 5 10 15 20 25 30 60,61,62....100;
lock mode page模式下,加锁如下:
RR: begin ; select * from t where id=0;
lock mode row模式下:
select * from t where id=0,加锁如下:
select * from t where id=21,不存在的行,加锁如下:
Informix的间隙锁,我理解范围比MySQL的要大一些。
比如select * from t where id<=20; 后面的区间是(20,20,20),(25,25,25),(30,30,30)。
通过测试发现,不仅仅前面的区间会加gap lock,而且会锁住(20,25)这个区间,所以可以理解成Informix 的RR锁住的范围更大,并发性更差。