一、优化之细粒度化事务锁
插入操作放在前面,插入操作就是把秒杀单,用户id,电话组成一个组件,这个组件冲突的概率并不是很高(不会出现一些数据“脏”的情况),因为秒杀单在前头,还有用户的电话,组成一个唯一键,这个时候的网络延迟和GC是可以并行的,这个时候再去拿update减库存的rowLocl行级锁。
秒杀操作的简单优化:更新库存的是热点操作,会出现行级锁,而插入购买记录的行为没有行级锁。可以先插入购买明细,可以避免因重复秒杀带来的不必要的更新库存操作,减少不必要的行级锁的占用。然后再去更新库存。这样,行级锁的占用时间可以节省一半(反正是节省了)。
二、优化之缓存
- Redis
- 待更新...
三、优化之存储过程
存储过程:
1.存储过程优化:事务行级锁持有的时间
2.不要过度依赖存储过程
3.简单的逻辑依赖存储过程
4.QPS:一个秒杀6000/qps
四、优化之其他
protostuff(序列化框架)
Ps:protostuff.jar 比 java自带的序列化,无论是空间还是时间都优化很多。
待更新...