相信同学们都对MySQL不陌生,大家在实现一个系统的存储功能,首先想到的一定是MySQL吧。但是大家有没有思考过,MySQL如何能够随业务共同成长,从无到有,从小到大,支持不断攀升的并发访问量呢?本篇文章将为你介绍常用的“升级”手段。
一、 添加缓存
缓存是指在MySQL之上添加一个缓存数据库,缓存可以为MySQL抵挡一部分的访问量,以提升系统的整体访问量,常见的缓存数据库包括Redis、Memcached等。
当要查询MySQL的时候,先看看缓存中有没有,如果有则直接返回,没有就查MySQL并将数据刷入缓存。
缓存更新应该采取什么策略呢?常见的有以下三种:
-
cache aside:先更新MySQL,再把缓存给删除。待下一次查询MySQL时,将数据刷入缓存。(可能出现ABA脏数据问题,但概率很小,是业界最常用的缓存更新策略)
-
Read/Write Through: 先更新缓存,再同步更新MySQL。
-
Write Back:先更新缓存,再异步更新MySQL。(性能较好,可靠性较差,容易丢失数据)
另外采用缓存经常会遇到以下三种问题:
-
缓存击穿:客户端不断查询一个不存在的key,大量访问量打到MySQL
-
缓存穿透:某一个热点缓存数据失效,大量访问量打到MySQL
-
缓存雪崩:大量缓存数据失效,大量访问量打到MySQL