Ticket #124 (new 故障)

Opened 14 years ago

mysql数据全同步前的数据准备任务失败问题处理

Reported by: yuanhuoqing Owned by:
Priority: major Milestone: 2012报价库5.0
Component: 报价库 Version: 报价库5.0
Keywords: Cc:
Due Date: 14/09/2012

Description

问题:mysql数据全同步前的数据准备任务执行P_PDLPRODUCTFRONT_ADD存储过程,执行过程中报错提示:resource busy and acquire with NOWAIT specified;
分析:(1)这个错误是指在执行ddl语句的操作表被事务锁住了,导致执行失败

(2)检查数据:select count(1) from pdl_product_front t;

select count(1) from pdl_product_front_work t;两者数目相差几条记录,难于断定任务执行那条ddl时被锁住了,后来对P_PDLPRODUCTFRONT_ADD加了错误提示信息,问题再次重现,这次定位到是EXECUTE IMMEDIATE 'truncate table PDL_PRODUCT_FRONT'语句时失败了,排查了执行这个任务的时间点没其他定时任务对PDL_PRODUCT_FRONT操作,最后发现应该是产品动态的品牌专区有直接查PDL_PRODUCT_FRONT表的数据,这种几率是有的,这个任务一个月内会3、2次出现这个问题。

解决方法:(1)执行'truncate table PDL_PRODUCT_FRONT'前对这个表加排他锁,减少出现这种问题的几率;(2)优化存储过程 转为增量同步?
暂时没解决,还在思考其他办法。

Note: See TracTickets for help on using tickets.