首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

什么是数据库的缓存池?

Buffer Pool 是什么?从字面上看是缓存池的意思,没错,它其实也就是缓存池的意思。它是 MySQL 当中至关重要的一个组件,可以这么说,MySQL的所有的增删改的操作都是在 Buffer Pool 中执行的。 但是数据不是在磁盘中的吗?怎么会和缓存池又有什么关系呢?那是因为如果 MySQL的操作都在磁盘中进行,那很显然效率是很低的,效率为什么低?因为数据库要从磁盘中拿数据啊,那肯定就需要IO啊,并且数据库并不知道它将要查找的数据是磁盘的哪个位置,所以这就需要进行随机IO,那这个性能简直就别玩了。所以 MySQL对数据的操作都是在内存中进行的,也就是在 Buffer Pool 这个内存组件中。

01

Redis学习笔记(一)Redis的简介以及下载安装

一开始我们都是用MySQL进行数据的读写,这是没事的,但是后来随着用户人数的不断上涨这就使得网站的访问量急剧上涨这就使得网站的并发量也随之上涨。并且使得数据库中存储的数据越来越庞大。这就使得在用户基数庞大的情况之下,网站处理用户的请求进而从数据库中取出相应的数据,这就使得网站的速度急剧下降。并且很容易就会造成网站的崩溃。所以人们就开始想相应的补救措施。 首先我们能理解的是为什么会这样,就是因为关系型数据库,原因有二。第一点就是从关系型数据库中取数据是要与磁盘进行交互的,众所周知,磁盘的读取与写入是最耗时间的,所以一旦访问量巨大之后磁盘的交互也会增长。第二就是关系型数据库的关系十分复杂,一张表可能关联到其他好几张表,并且在之后的过程可能还会关联更多的表这就使得数据库的扩展性能非常的差,不便于大规模的集群,所以必须要作出改变。 有两个原因,相应的就有两种解决思路。第一,既然之前都是将数据存储在磁盘上,那么与磁盘相对应的大家应该都知道,就是内存,计算机虽然与磁盘的交互十分耗时间,但是内存的交互确是磁盘的几个数量级的。所以我们可以将部分的数据存储在内存之中,但是内存又是十分珍贵的,所以只能存储部分的数据,并且做好这些数据是经常使用的即为热点数据,这样便能更加节省时间,第二就是关系型数据库本身的关系复杂的属性,那么我们是否能创造出一种非关系型的数据库,不存储关系,而是只存储数据。 于是Redis就诞生了。

02

一次线上数据库添加字段造成磁盘不够的问题

公司使用的是MySQL数据库,随着业务和用户的增加有张表的数据达到了150000000(1亿5千万)条左右,其中好几个功能都会对这张表进行增删改操作。在并发量比较大的时候,经常会出现死锁问题。 为了解决这个问题找到CTO和其他领导来请教方案。 经过分析之后,由于离业务繁忙期还有几天,并且1月是系统达到最大并发的时期,所以决定暂时先采取比较稳妥的版本号方案,即只往数据库insert和update数据,定时任务删除旧的数据(之后会采取数据分表分区的方案)版本号记录在redis里面。于是花了2天左右的时间把这些业务里面的代码重构和修改了一遍(其中涉及到使用第三方库修改的代码,修改这部分花了很多时间)。经测试人员测试没问题后,准备发到线上。

03

架构师之路--从业务角度谈缓存的选型

想起来几年前挺火的前岛国国民女神学霸-小岛方晴子。当时替她说话的人都很惨,导师被逼自杀。她收到的压力侮辱不是常人可以想象的。但是她却坚强的活着,去年还出了书。我去日本的时候,下了新干线,前面有一群女学生,她们看到我了,立刻聚集成一团,一边看我一边说悄悄话。我才发现日本人穿的衣服基本就是黑,白,灰。他们也不穿羽绒服,女孩子大冬天都是光着腿。而我穿着黄绿色的羽绒服,确实像个怪胎。为什么来之前没人告诉我[大哭][大哭]。8年过去了,想起来还觉得尴尬。日本人是很爱背后说别人坏话的。所以我感谢我是个很普通的女孩子

05
领券