高并发优化
本身Mysql数据处理事务能力并没有问题,一条update压力测试约4wQPS(同一个id执行update),那么在java控制事务的时
就会变成一个串行结构,会造成大量的阻塞操作,那么下面对这些等待分析原因:
主要瓶颈是在客户端执行update时,发送sql语句到数据库,期间会有网络延迟*,GC*(jvm垃圾回收机制)操作,这两个是主要问题,
当这个逻辑执行完之后才会继续执行下一个事务,由于网络延迟和GC的存在,造成java和数据库之间的数据执行时间长,如果这个时间是两毫秒,那么一秒才能有500次的减库存行为,这个次数在热点事件中是远远不够的。
那么我们优化的方向是如何减少行级锁的持有时间,也就是减少单个数据的执行时间。
答:把客户端逻辑放在Mysql服务端。整个事务在Mysql端完成。