问题暴露如下:当用户领取一个优惠券的时候,数据库中的优惠券减少一个,但是在高并发的情况下,优惠券竟然会出现负数,如图所示:

原因:简单来说,因为此请求为多线程同时跑,涉及到了查询优惠券和删除优惠券两个操作,在海量用户并发访问下,查询和删除的操作都很快,但是一般不会一样的执行时间,当海量的用户堵塞在删除优惠券操作之前,又有海量的用户操作查询,这个时候数据库的内容并没有发生改变,所以查询的值会是不准确的,就导致了此情况!小编网站搜索“高并发”,可找到解决方案!
本文作者为DBC,转载请注明。