MySql数据库锁表的问题:
业务数据表中,有一个数据的备份表T1的数据库引擎是MyISAM,同时有两个业务使用到这个表:
业务A:select和update此业务表备份表T1
业务B:将业务表T2中的数据insert到业务表备份表T1中,然后删除业务表T2中前一天的数据
业务C:将业务数据写入到业务表T2中
业务A执行,需要T1的读写锁
业务B执行,需要T2的读写锁和T1的写锁
业务C执行,需要T2的写锁
业务A先执行,业务B和C后执行,在业务B执行的时候,业务A还在执行,导致业务B处于等待状态,同时业务B获得了T2的
读锁,现在业务C无法获得T2的写锁,业务C处于获取写锁的等待队列!
在某个时间点,业务A执行完毕,业务B获得T1的写锁,将T2表中的数据读出,写入到T1表中,但是业务B一直无法获得T2
表的写锁,导致删除T2中前一天的数据的操作一直处于等待状态,直到Kill掉业务C,业务B才能顺利的执行下去。
大概事实就是这样,现在有一个问题:
业务C怎么会一直占有T2的写锁?抑或我的分析有问题?请大拿指导!