Phu*_*yen 10 database performance distributed caching
假设数据在数据库和分布式缓存中存储相同(即不需要连接),分布式缓存比直接访问数据库快得多是否仍然相关?据我所理解:
所以这里的区别在于缓存访问时间和数据库查询时间(假设反序列化在强大的服务器上很快)。但是与网络时间相比,我认为缓存访问时间和数据库查询时间应该小得多,因此时间应该大致相同?
我知道我在这里有很多假设,但如果有人能帮助解释我是否理解正确,那就太好了(如果有统计数据,那就更好了)
小智 0
是的,在所有条件相同的情况下,从内存缓存访问数据将比使用数据库更快。
应用程序访问分布式缓存的延迟 = 网络时间 + 缓存访问(内存中)时间 + 反序列化(从二进制到对象)时间
正确的
应用程序访问数据库的延迟=网络时间+数据库查询时间(文件访问或数据库缓存)+水化时间(将数据库结果读入对象)
正确的
大多数数据库会将页面保存在缓冲区缓存中,这实际上就像在内存中查找一样,但在高吞吐量数据库上,许多页面需要从磁盘中获取,这比访问主内存慢得多。
在缓存中,数据始终位于内存中。在数据库中,有些片段位于内存中,有些片段位于磁盘上。
NVME 速度超快,但仍远不及从 RAM 访问数据的速度。
如果加工者是厨师,则负责切碎和烹饪食物。你的内存就是冰箱。你的硬盘就是街上的商店。它就在那里,而且不太远,但速度远不如你把它放在冰箱里的速度。
一些延迟数字:https://gist.github.com/jboner/2841832