客户的系统并发量一大,数据库经常就死锁,牺牲掉另一个进程,数据就不准,经常造成数据不一致。给客户带来很大不便,公司专门成立了项目小组来优化数据库和修改程序。
一开始,我提出通用的解决办法:如;
1,降低事务隔离级别
2,在方法上使用同步策略
3,减少事务的执行长度
但接触系统代码和表设计,代码逻辑后,只是根据这些经验来解决死锁,这没那么简单。因为一个方法里就包含了查询,计算,更新多张表,插入表数据,还有是都是批处理数据,一次要处理几十行数据,而且是多并发时死锁可能性很大。
目前有个初步的解决思路:
1,对表进行拆分重构,减少数据量
2,对Spring事务重新配置,代码重新审查一遍。
在加上上面的,公司给了3个月的时间完成优化过程,在这优化过程会把解决办法记录下来。
相信自己一定可以把死锁减少到最低程度。