使用数据库处理并发可能导致的问题

1,415 阅读1分钟

集群导致的数据并发异常

例如库存只剩余一个 同时进入两个请求 数据可能出现负值的情况

解决方案

在数据库中将字段定义为unsigned

repository INT(11) unsigned DEFAULT '0'COMMENT '库存'

程序中 如果数据已经为0 程序依然请求减一的操作 数据会出现DataIntegrityViolationException 异常

try {
   //执行数据库库存-1的操作
   ......
} catch (DataIntegrityViolationException e) {   //并发导致的库存问题
    //异常处理
    ......
}

通过这种方式可以保证数据的正确性

未经作者允许 请勿转载,谢谢 :)