对于表中的每一个数据行来说,rowid是索引用来指向该数据行物理位置的一个信息。
但是informix用来加锁的时候,很多时候都是加在了rowid行,无论是对于数据库,还是对于表,还是数据行。
database rowid的获取:
select name,hex(rowid) from sysmaster:sysdatabases where name='dbname'
table rowid的获取方法:
select tabname,hex(partnum),hex(rowid) from sysmaster:systabnames
where dbsname='tpcc100' and tabname='customer'
data row rowid的获取如下:
select hex(rowid),* from tabname where pk='';
对于分片表来说,需要使用:
1、create table ... with rowid;
2、alter table .... add rowid;
对于onstat -k的输出补充解释如下:
Locks
address wtlist owner lklist type tblsnum rowid key#/bsiz
Locks
address wtlist owner lklist type tblsnum rowid key#/bsiz
441970b0 0 453fdda8 0 HDR+S 100002 204 0
44197688 0 453fc368 0 S 100002 204 0
44197930 0 453fb1e8 0 HDR+S 100002 20a 0
44198128 0 45401228 0 S 100002 20a 0
44198678 0 45400968 0 S 100002 201 0
44198a30 0 453fb1e8 4419dd98 HDR+S a00002 57ea01 0
44198d60 0 453ff7e8 0 S 100002 204 0
44198e70 0 453fb1e8 44197930 HDR+IS 600045 0 0
4419aa10 0 453fef28 0 S 100002 204 0
4419b290 0 453fb1e8 44198e70 HDR+SR a0000a 57ea01 K- 1
4419bc20 0 453fc368 44197688 HDR+S 100002 201 0
4419dd98 0 453fb1e8 4419b290 HDR+SR a0000a 58e401 K- 1
4419f140 0 45401228 44198128 S 100002 201 0
tblsnum=100002 表示数据库锁,后面的rowid就是某个特定是数据库对应的database rowid;
tblsnum=600045 表示某个表或索引的rowid
onstat -k输出中的rowid表示锁加的具体对象,可以是某个数据行的rowid,也可以是某个是索引树对应该数据行的rowid