select 1 from 表 where .... for update skip locked;
select 1 from TIDAPIEF WHERE INTERNAL_EVENT_ID = :2 for update skip locked;
返回1 没锁
返回空 有锁 抛出异常,资源正忙,请稍后再试!
脚本监控latch,lock不耗资源,latch才耗资源。
lock ---排队
latch 是 cpu spin 挣用。
带dblink的sql,远端的表只能当驱动表或者hash被驱动表,千万不能当nl的驱动表。
select * from a,b@dblink where a.id=b.id;
加hint,driving_site把a中的表弄到远端去。
a 10mb
b 1g
select /*+ driving_site(b) */ * from a,b@dblink where a.id=b.id;
如果a,b都特别大呢
物化视图
组合索引避免回标
查看列分布是否均衡
select INTERNAL_EVENT_ID ,count(*) from TIDAPIEF group by INTERNAL_EVENT_ID order by 2 desc;