JAVA高并发秒杀系统构建之——高并发优化分析
前言:本文章是《JAVA高并发秒杀系统构建之——业务分析和Web层》下一篇,主要讲解系统高并发优化分析
先来分析一下java 控制事务行为
如下图可知,java事务是串联发生的,即当一个事务还没有执行完,其他事务都是要等待而被阻塞。
那一个事务具体要干什么东西呢?或者说高并发的瓶颈在哪里,看下图
分析:
1、一个Java事务可能有多条sql语句的操作,此时算上sql语句操作时间。
2、网络会出现延迟。
3、GC(java回收机制)处理时,会消耗一定的时间
综上,Java事务处理时间=sql消耗+网络延迟+GC消耗,一个java事务处理时间大约在2ms,也就是说1秒只能有500个事务串行发生,这是非常不高效的。
而之前说的行级锁(保证java事务之间可以串行进行,从而保证数据的一致性),则在commit之后就会释放,所以我们的优化方向,就是减少行级锁的持有时间
我们先分析如何判断update语句成功更新
1、update语句自身没有报错
2、客户端确认update影响记录数
所以我们在这个方面的优化方案时,把客户端逻辑放到mysql服务端,避免网络延迟和GC
即为,使用存储过程:整个事务在Mysql端进行,因为这样可以将网络延迟和GC消耗降至最低&