亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

秒殺場景下MySQL的低效--原因和改進

標簽:
MySQL

https://img1.sycdn.imooc.com//5bd6d79e0001125705580259.jpg

https://img1.sycdn.imooc.com//5bd6d7b200013f1305580286.jpg

https://img1.sycdn.imooc.com//5bd6d7ba00013ab005580419.jpg

https://img1.sycdn.imooc.com//5bd6d7ca0001dca005580400.jpg

tps(系统吞吐量,每秒事务处理量)

https://img1.sycdn.imooc.com//5bd6d7e90001286e05580292.jpg

https://img1.sycdn.imooc.com//5bd6d8060001741405580413.jpg

https://img1.sycdn.imooc.com//5bd6d812000160aa05580301.jpg

https://img1.sycdn.imooc.com//5bd6d81a0001219105580392.jpg

https://img1.sycdn.imooc.com//5bd6d829000136ad05580368.jpg

https://img1.sycdn.imooc.com//5bd6d82f0001d32505580381.jpg

https://img1.sycdn.imooc.com//5bd6d8370001c96905580408.jpg

https://img1.sycdn.imooc.com//5bd6d83c000154e905580210.jpg

https://img1.sycdn.imooc.com//5bd6d84800014a9905580377.jpghttps://img1.sycdn.imooc.com//5bd6d84c00012ca705580394.jpg

https://img1.sycdn.imooc.com//5bd6d854000175c605580240.jpg

总结

请求排队:如果请求一股脑的涌入数据库,势必会由于争抢资源造成性能下降,通过排队,让请求从混沌到有序,从而避免数据库在协调大量请求时过载。
请求合并:甲买了一个商品,乙也买了同一个商品,与其把甲乙当做当做单独的请求分别执行一次商品库存减一的操作,不如把他们合并后统一执行一次商品库存减二的操作,请求合并的越多,效率提升的就越大。

秒杀优化

优化1,更快速的序列化工具

将秒杀信息用redis缓存起来,redis并没有实现内部序列化,所以存对象需要实现序列化

如果使用默认类实现jdk的serializable 效率比较低 所以我们要选写高性能的序列化工具

https://github.com/eishay/jvm-serializers/wiki (这个是对Java 序列化技术做了比对)

https://img1.sycdn.imooc.com//5bd6d87c00018a2605580301.jpg

用protostuff 首先引入两个包

https://img1.sycdn.imooc.com//5bd6d88900018ba708170310.jpg

https://img1.sycdn.imooc.com//5bd6d88f000124db05580276.jpg

https://img1.sycdn.imooc.com//5bd6d894000110f805580284.jpg

https://img1.sycdn.imooc.com//5bd6d8980001fdd805580233.jpg

优化2, 防重优化

https://img1.sycdn.imooc.com//5bd6d8a20001af3e06270468.jpg

优化

insert 用订单和用户电话号做唯一主键,可以防重

https://img1.sycdn.imooc.com//5bd6d8bc0001164305580236.jpg

https://img1.sycdn.imooc.com//5bd6d8c00001b52d05580077.jpg

优化3, 利用存储过程优化

我们知道 mysql 在执行本地主键sql 非常快 可以达到(4万/秒 的qps) Java执行代码也非常快,所以减库存的瓶颈主要出现在网络延迟和 GC的暂停(stop the word)

  减少网路连接我们可以使用存储过程

https://img1.sycdn.imooc.com//5bd6d8d00001dfce05580272.jpg

https://img1.sycdn.imooc.com//5bd6d8d50001a56e05580147.jpg

https://img1.sycdn.imooc.com//5bd6d8da0001324505580284.jpg

https://img1.sycdn.imooc.com//5bd6d8df0001ac0305580143.jpg

在Java代码中调用存储过程

配置mapper 利用mybatis 调用存储过程是一个select

https://img1.sycdn.imooc.com//5bd6d8e80001f47d08370206.jpg

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消