Informix日志报错:Could not do a physical-order read to fetch netxt row
jmeter请求接口,1线程不报错,2线程及以上报错“无法执行查询”,看后台日志,报错Could not do a physical-order read to fetch netxt row。
是锁表,先查看是哪个sql锁的表,
onstat -ks|grep HDR+X 查出owner,此时发现大量锁存在,且停止发压后消失。(这时就应该推测是配置问题,先检查weblogic控制台,数据源里是否配置锁等待,果然没配,这里是informix数据库,要做如下配置)
问题到此解决。
如果是少量锁存在,说明是其他问题,继续下面的排查步骤:
onstat -u | grep owner 查出sessionid
onstat -g sql sessionid 查出具体sql
查出锁表sql后,有两种解决方案:
1、杀进程:onmode –z sessionid
2、降低锁级别:
锁按照粒度分为6种: 库锁、表锁、页锁、行锁、字节锁、键锁,我检查下是否需要降低锁级别,查sql的锁级别:
select tabname, locklevel from systables where tabname = ‘表名’ --表名要全小写。
此处锁级别是R行级。如果要改成行级,执行 alter table t_test lock mode (ROW)
参考文档:
解锁步骤;