为什么分布式内存缓存比数据库查询更快?

Why is a distributed in-memory cache faster than a database query?

https://medium.com/@i.gorton/six-rules-of-thumb-for-scaling-software-architectures-a831960414f9 关于分布式缓存的状态:

Better, why query the database if you don’t need to? For data that is frequently read and changes rarely, your processing logic can be modified to first check a distributed cache, such as a memcached server. This requires a remote call, but if the data you need is in cache, on a fast network this is far less expensive than querying the database instance.

声称分布式内存缓存比查询数据库更快。查看 Latency Numbers Every Programmer Should Know,它表明操作的延迟比较如下: 主内存引用 <<< 同一数据中心内的往返 < 从 SSD 按顺序读取 1 MB <<< 发送数据包 CA->Netherlands->CA .

我将访问分布式缓存的网络调用解释为“发送数据包 CA->Netherlands->CA”,因为缓存数据可能不在同一个数据中心。我错了吗?我是否应该假设复制因子很高,缓存数据应该在所有数据中心可用,而不是分布式缓存和数据库之间的比较更像是“同一数据中心内的往返”与“从 SSD 顺序读取 1 MB”?

数据库通常需要从磁盘访问数据,这很慢。虽然大多数会在内存中缓存一些数据,这使得经常 运行 查询更快,但还有其他开销,例如:

  • 查询解析和语法检查
  • 数据库permission/authorisation检查
  • 优化器创建数据访问计划
  • 一个非常繁琐的协议,尤其是当返回多行时

所有这些都会增加延迟。

缓存有 none 这些开销。在一般情况下,缓存的读取次数多于写入次数,而且缓存总是在内存中有可用的值(如果不是冷命中)——写入缓存不会停止读取当前值——同步写入只是意味着轻微的写入请求和新值可用(无处不在)之间的延迟。