猿问

秒杀场景下 如何保证数据准确

秒杀时商品价格递增,比如第一个买的两百,第二个买的三百,第三个四百以此类推,同时修改库存等其他表
在更新的时候防止超卖等问题我用的是行锁,插入的时候为了确保数据准确使用了唯一索引但是带来的问题是秒杀成功率低
请问在插入或者更新的时候如何保证数据的准确性与完整性和相对较高的处理效率,因为之前没做过类似应用希望大家能给出思路
Smart猫小萌
浏览 524回答 2
2回答

噜噜哒

秒杀自古只有一个问题:机器与程序性能是否能支撑住秒杀业务。能撑住就随便玩,撑不住,那就使用各种【优化】:1.秒杀前,对参与秒杀的用户进行登记,不登记的无法秒杀。登记的作用是,筛选出参与秒杀的用户,一般这个量比较少,把他们的数据放入专用表里,可以提高检索速度。2.使用C或C++写的高速队列来为后端数据库减压,同时也容易保证数据的正确性。3.使用分时算法,也就是5秒内,数据库以日志的形式,写入所有人的秒杀数据,此时数据库不能进行其他任何操作,比如查结果。5秒后,关闭写入,此时对日志进行去重、合法性判断等操作,这个过程中数据库同样不能进行其他任何操作,比如写入秒杀日志。这些操作进行完毕后,向客户端返回秒杀结果。接着,再进行5秒钟的秒杀日志写入操作。这种方法,在参与人数远远大于商品数量的时候,特别有效。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答