我在学习如何处理高并发,用的是Mysql。学习使用数据库隔离级别,在配置文件里设置了如下属性:
spring.datasource.tomcat.default-transaction-isolation=4
但还是出现问题了,我原本库存设置的1000,抢购时会先看库存数是否大于0,如果为true则库存减1,结果一波抢购操作直接导致库存为-4。
就算说哪里出问题没设设置成功,Mysql默认隔离级别也是可重复读啊。为什么还是不能保证高并发的处理呢?
之后我在sql语句中加了悲观锁,结果正常。我就纳闷了,难道说隔离级别没有用吗?按照我理解的可重复读,一位客户在获取库存后,其他客户应该不能再获取了啊。