访问缓存比访问数据库慢



我正在修改redis和mysql,看看缓存如何提高性能。从缓存中访问数据比从数据库中访问数据要快。

我在程序中计算了这两种情况所需的时间,发现从缓存访问比从数据库访问慢得多。我想知道可能是什么原因。

需要考虑的几点:

  1. 我正在使用Azure Redis缓存
  2. 主应用程序在VM实例上
  3. 我在另一个VM实例上托管了MYSQL服务器
  4. 这张桌子很小,有200-300张唱片
  5. 时间计算逻辑没有错误

编辑:

缓存加载时间=约1.2s

mysql的加载时间=约15ms

事实证明,我的应用程序和MySQL服务器在同一个区域,而redis缓存在全球不同的区域,导致了更高的延迟。

但我仍然希望有人解释为什么sql的获取时间要小得多

如果200-300行的表被完全缓存在MySQL的"缓冲池";,那么就不需要花太多时间来获取所有的数据并将其发送回客户端。15毫秒是合理的(尽管这取决于太多的事情,不能更具体(。

如果你正在获取一行,并且你有一个索引(特别是PRIMARY KEY(来定位这一行,我预计它会比15ms更快。

我正在总结一张40K行的表格;耗时不到2毫秒。但请注意:客户端和服务器在同一台机器上。15毫秒可以表示客户端和服务器相距几百英里。

一个简单的SELECT 1需要多长时间?这将给你一个延迟的线索,低于这个延迟,你就不能不改变机器的物理位置。

最新更新