下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

数据库的缓存一定能提升程序效率么?

作者:沙茶敏碎碎念     来源: 今日头条点击数:699发布时间: 2020-02-04 15:15:15

标签: 数据库视频数据分析视频数据结构视频

程序员误区,缓存一定能提升程序效率么?数据库(Database)是按照 数据结构来组织、 存储和管理数据的建立在计算机存储设备上的仓库。

简单来说是本身可视为 电子化的文件柜——存储电子 文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。

大家好,今天我们来简单的聊一聊缓存问题。什么是缓存呢?它在系统设计中是在一个怎么样的位置呢?假设在一个计算机应用里面,我们一般会把数据存放在数据库中,一般数据库的数据也是放在硬盘当中,硬盘的读写速度毕竟有限,当存在一些数据特别热的时候,例如12306,查询北京到广州有那些车次,这个数据经常被用户访问,所以我们可以把它存放在速度更快地内存上。

数据库的缓存一定能提升程序效率么_数据库视频_数据分析视频_数据结构视频_课课家

缓存的本质,是为了解决不同的存储介质的速度差异问题。是一个经典的空间换时间的解决方案。也就是说,使用缓存就是为了让系统更快。不过这也是需要有前提的,如果你的业务是读多写少,例如电商系统中的商品系统,商品的描述与商品的属性,都是非常典型的多读少写的场景。

一、那么缓存就一定是好东西么?缓存会不会带来一定的副作用。答案是肯定的。首先,缓存可能并不会让你的程序变得更快,相反,可能还会变得更慢。因为访问内存虽然说非常地快,但是多少也是要开销的,特别是当你的缓存不是本机而是分布式的时候,至少需要一个网络的RT。所以,如果你的缓存的命中率非常地低,那么,缓存的效果就会大打折扣,不仅没有加快程序的访问速度,还会让程序变得更慢。

二、其次,缓存可能会让你读到错误的数据,更官方一点的回答,就是数据的一致性会下降。造成这种数据的主要原因,就是缓存的操作无法保证100%成功。比方说,我们在维护一个电商系统,原本华为Mate30Pro售价为6999元,后来你决定开展一次促销活动,将价格变更为6699元,当你设置完新的价格之后,数据库已经更新了,但是缓存可能还是旧的,更要命的,如果你使用的是本机缓存,那么可能部分机器上更新成功,部分机器更新失败,导致用户可能进入不同页面的时候,看到不同的价格,从而引发用户投诉,所以,当我们使用缓存的时候,通常会设置一个过期时间,从而减少缓存失效带来的影响。

三、最后,缓存可能会带来运维上的麻烦,如果不使用缓存,当我们在页面或者app上面看到数据错误,那么一般都是数据库的问题,但是引进了缓存之后,我们就需要增加一个工序去排查是否是缓存的问题,如果缓存是本机的,那么可能是部分机器存在问题,部分机器是好的,这就给我们排查增加了不少的难度,如果缓存是分布式的,同样也有可能存在不一致的问题,同时缓存机器的带宽、内存等等都需要不少的运维成本。

总体来说,缓存也是一把双刃剑,需要我们对业务场景进行甄别,合理地选择合适的缓存,才能够发挥出缓存的最大作用。欢迎大家关注我,共同学习,共同进步。大家的支持是我继续唠嗑的动力。

数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。 所谓“数据库”系以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。一个数据库由多个表空间(Tablespace)构成。

赞(11)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程