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.
![(please configure the [header_logo] section in trac.ini)](http://www1.pconline.com.cn/hr/2009/global/images/logo.gif)