课程
/后端开发
/Java
/Java高并发秒杀API之高并发优化
为什么说插入的时候冲突率低,网络延迟和GC可以并行啊?这样加快速度有点不理解?
2017-08-09
源自:Java高并发秒杀API之高并发优化 3-1
正在回答
因为插入数据是插入的不同行,可以并行(冲突率低)。只有重复秒杀时才会冲突,但是由于userphone+id为唯一主键所以不会重复秒杀。
insert,update,delete,select for update都是隐式的行级独占锁。
分析的也对insert是新数据,update是老数据
首先是在更新操作的时候给行加锁,插入并不会加锁,如果更新操作在前,那么就需要执行完更新和插入以后事务提交或回滚才释放锁,而如果插入在前,则更新完以后事务提交或回滚就释放锁。也就是说是更新在前加锁和释放锁之间两次的网络延迟和GC,如果插入在前则加锁和释放锁之间只有一次的网络延迟和GC,也就是减少的持有锁的时间。
举报
Java实现高并发秒杀API的第四门课,小伙伴一定可以从中受益
1 回答关于网络延迟和数据库锁的问题
2 回答为什么不用存储过程来解决多条sql语句执行带来的网络延迟
2 回答没懂,为何insert 和 update 换了下位置, 网络延迟就减少一倍????
2 回答先执行插入,在执行减库存,没有过滤掉gc和缓存啊
2 回答这个项目写完了可不可以作为我找工作时候说的项目