1.1 A项目新版本开发对某模块做了较大的改动,由原来的单线程处理改为多线程。
在第一轮测试中发现了一个数据库异常问题:当新增加下发数据线程在不断查询数据库表并下发数据的过程中,另一个线程做添加产品操作(往product表添加一条记录)。添加产品失败,报错信息如下:
模块名: EMMGGW, 行: 11271, 错误级别: 3, 错误码: 1002, 错误信息: ORA-01002: 读取违反顺序
3.1 解决方案
若多个线程对一个数据库连接做信号量保护,进程的并发性会变得很差;经过专家组讨论(刘昆、贾海波、孙超),建议每个线程使用不同的数据库连接,不仅数据库连接的并发操作不需要代码控制(交给数据库控制),而且提高了性能(提高了1\3)
阅读(753) | 评论(0) | 转发(0) |