龙空技术网

90分钟搞懂 mysql 缓存问题的解决方案

Linux特训营 527

前言:

而今各位老铁们对“mysql 缓存设置”都比较注意,各位老铁们都想要剖析一些“mysql 缓存设置”的相关内容。那么小编在网摘上网罗了一些对于“mysql 缓存设置””的相关知识,希望朋友们能喜欢,兄弟们快快来学习一下吧!

目录;关注+后台私信;资料;两个字可以免费领取 资料内容包括:C/C++,Linux,golang,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,嵌入式 等。。。

1. 读写分离方案

2. 强一致性和最终一致性下的解决方案

3. 缓存出现的故障如何解决

这是最近帮朋友解决的一个架构问题

大家看先看一下这个需求,也就是看一下我们mysql的缓存问题,

他有那些应用场景,

首先需要一个网管服务器,网服务器是对应这接收客户端的链接,要求二

登陆服是多个,玩家账号数据 玩家角色数据 这两个是共通的 需要同步 ,redis只存储热点数据,redis、mysql只需要一个

这里使用redi,是为了让我们玩家可以快速的登陆,那么大家可以思考一个问题,因为在游戏业务当中我们断线重链是很平凡的,所以我们在账号登陆的时候,会反复的请求数据库,如果我们这个数据库一直在mysql这个数据,mysql压力会很大,所以我们需要在mysql前面 放一个redis来缓冲玩家的数据,这就可以让我们快速的登陆,进入我们的游戏。

解决方案

1.mysql项目中,读请求远大于写请求;经过测试读请求是写请求的大约10倍左右,有的项目可能会更多。

我们平时是怎么解决这个问题呢?

第一我们要有一个读写分离,就是利用mysql主从复制这样的原理。

这样就解决主从压力过大了,主从复制会带来什么问题?

数据不一致(所以我们必须知道主从复制的原理)

读写分离

几项重要的数据

1.内存的访问速度是碰盘访问速度的10万倍(数量级倍率);内存的访问速度大约是100ns,而一次碰盘访问大约是10ms;访问mysq时访问磁盘的次数跟b+树的高度相关;

2.一般大部分项目中,数据库读操作是写操作的10倍左右;

总结

1.由于mysqi的缩冲层不由用户来控制,也就是不能由用户来控制缓存具体数据

2.访问磁盘的速度比较假,尽量获取数据从内存中获取;

3.主要解决读的性能;因为写没必要优化,我们必须让我们的数据正确的落盘;

4.项目中需要存储的数据应该远大于内存的容量,所以我们数据获取的依据应该是mysql;

5.redis存储的只是用户目定义的热点数据;以下的讨论都是基于热点数据的同步问题;

标签: #mysql 缓存设置 #清除mysql数据库缓存